標籤:發送 生產環境 sele 不能 導致 遞增 叢集 應用 許可權
Redis 鍵(key)Redis 鍵命令用於管理 redis 的鍵。redis任何資料類型都有key--刪除key的命令redis> del key
Redis 事務Redis 事務可以一次執行多個命令, 並且帶有以下三個重要的保證:1.大量操作在發送 EXEC 命令前被放入隊列緩衝。2.收到 EXEC 命令後進入事務執行,事務中任意命令執行失敗,其餘的命令依然被執行。3.在事務執行過程,其他用戶端提交的命令請求不會插入到事務執行命令序列中。單個 Redis 命令的執行是原子性的,但 Redis 沒有在事務上增加任何維持原子性的機制,所以 Redis 事務的執行並不是原子性的。事務可以理解為一個打包的批量執行指令碼,但批量指令並非原子化的操作,中間某條指令的失敗不會導致前面已做指令的復原,也不會造成後續的指令不做。
Redis 資料庫Redis支援多個資料庫,並且每個資料庫的資料是隔離的不能共用,並且基於單機才有,如果是叢集就沒有資料庫的概念。Redis是一個字典結構的儲存伺服器,而實際上一個Redis執行個體提供了多個用來儲存資料的字典,用戶端可以指定將資料存放區在哪個字典中。這與我們熟知的在一個關聯式資料庫執行個體中可以建立多個資料庫類似,所以可以將其中的每個字典都理解成一個獨立的資料庫。每個資料庫對外都是一個從0開始的遞增數字命名,Redis預設支援16個資料庫(可以通過設定檔支援更多,無上限),可以通過配置databases來修改這一數字。用戶端與Redis建立串連後會自動選擇0號資料庫,不過可以隨時使用SELECT命令更換資料庫,如要選擇1號資料庫:命令列文法--選擇資料庫redis> SELECT 1OKredis [1] > GET foo(nil)然而這些以數字命名的資料庫又與我們理解的資料庫有所區別。首先Redis不支援自訂資料庫的名字,每個資料庫都以編號命名,開發人員必須自己記錄哪些資料庫儲存了哪些資料。另外Redis也不支援為每個資料庫設定不同的訪問密碼,所以一個用戶端要麼可以訪問全部資料庫,要麼連一個資料庫也沒有許可權訪問。最重要的一點是多個資料庫之間並不是完全隔離的,比如FLUSHALL命令可以清空一個Redis執行個體中所有資料庫中的資料。綜上所述,這些資料庫更像是一種命名空間,而不適宜儲存不同應用程式的資料。比如可以使用0號資料庫儲存某個應用生產環境中的資料,使用1號資料庫儲存測試環境中的資料,但不適宜使用0號資料庫儲存A應用的資料而使用1號資料庫B應用的資料,不同的應用應該使用不同的Redis執行個體儲存資料。由於Redis非常輕量級,一個空Redis執行個體佔用的內在只有1M左右,所以不用擔心多個Redis執行個體會額外佔用很多記憶體。
Sword redis補充