20191219 Redis工作中常用命令

Redis DEL命令用於刪除已存在的鍵。不存在的 key 會被忽略。

DEL命令的返回值:

1)如果刪除成功,返回值是被刪除 key 的數量。

2)如果刪除的鍵不存在,返回值爲0;

 

Redis decr命令

 

Redis Keys 命令用於查找所有符合給定模式 pattern 的 key

返回值:符合給定模式的 key 列表 (Array)。

keys *app 查詢所有的鍵中,以app結尾的key的數組。

 

Redis中的SortedSet存儲類型

min和max表示的範圍是閉區間範圍,即min <= score <= max內的成員將被返回。閉區間。

ZADD key score member如果在添加時參數中的某一成員已經存在,該命令將更新此成員的分數爲新值,同時再將該成員基於新值重新排序。

從小到大進行排序。反過來就是從大到小排序。

Sorted-Sets和Sets類型極爲相似,它們都是字符串的集合,都不允許重複的成員出現在一個Set中。它們之間的主要差別是Sorted-Sets中的每一個成員都會有一個分數(score)與之關聯,Redis正是通過分數來爲集合中的成員進行從小到大的排序。

儘管Sorted-Sets中的成員必須是唯一的,但是分數(score)卻是可以重複的。

由於Sorted-Sets中的成員在集合中的位置是有序的,因此,即便是訪問位於集合中部的成員也仍然是非常高效的。

訂單過期使用sortedset這種數據結構。

Set<String> set = cacheClient.zrevrange("cache-user-score", 0, 10);

 

常用redis命令:一定要會敲命令才行。 每個命令的使用場景是什麼?什麼時機使用。

1、設置一個鍵的值 SET key value

2、獲取一個建的值 GET key

3、刪除鍵對 DEL key

4、返回一個Key所對應的值的類型TYPE key。redis的五種數據類型。

5、檢查key是否存在 EXISTS key。若 key 存在返回 1 ,否則返回 0。

6、搜索某關鍵字: KSYS *4,星號表示通配符。KEYS pattern 查找所有符合給定模式的key.

7、必須將值存儲到相同的哈希槽。

CROSSSLOT Keys in request don't hash to the same slot。

因爲值不在同一個哈希槽中。可以通過命令查看在哪個哈希槽中? CLUSTER KEYSLOT key

cluster keyslot key。 同一個結點的哈希槽上。

使用Hash Tags強制所有的key屬於一個節點。

爲了實現將key分到相同機器,就需要相同的hash值,即相同的key. 關於哈希槽和密鑰還是不太懂啊。

 

8、EXPIRE key seconds 爲key設置過期時間。

CLIENT LIST 獲取連接到服務器的客戶端連接列表。客戶端連接列表。

CLUSTER SLOTS 獲取集羣節點的映射數組;

INFO 獲取 Redis 服務器的各種信息和統計數值;

MONITOR 實時打印出 Redis 服務器接收到的命令,調試用;

ROLE 返回主從實例所屬的角色;Redis Role 命令查看主從實例所屬的角色,角色有master, slave, sentinel。 當前結點是主節點還是從結點;如果是從結點,它的主節點是誰?

SAVE 同步保存數據到硬盤;

 

Redis Client Slots 命令用於當前的集羣狀態,以數組形式展示。

顯示哈希槽和Redis實例映射關係。使用這個命令可以獲得哈希槽與節點(由IP和端口組成)的映射關係。(結點一般使用ip地址和端口號表示)

這樣,當客戶端收到(用戶的)調用命令時,可以根據(這個命令)返回的信息將命令發送到正確的Redis實例. (將命令發送到指定的redis實例)

每一個(節點)信息: 哈希槽起始編號,哈希槽結束編號.

(每個節點信息的)第三個(行)對象一定是IP/Port形式的master節點。之後的所有IP/Port都是該哈希槽範圍的Redis副本。

 

主結點---->從結點

192.168.110.84:6378-----> 192.168.110.87:6378

192.168.110.85:6378-----> 192.168.110.89:6378

192.168.110.86:6378-----> 192.168.110.92:6378

 

哈希槽對應master節點,節點使用IP/Port表示。master節點的第一個副本。

副本可以理解爲從結點。

集羣的每個主節點負責一部分hash槽。

 

描述每個哈希槽範圍的包含嵌套對象的列表,嵌套對象包含 IP/Port。

 

redis slot 槽點

Redis 集羣中內置了 16384 個哈希槽,當需要在 Redis 集羣中放置一個 key-value時,redis 先對 key 使用 crc16 算法算出一個結果,然後把結果對16384求餘數,這樣每個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據節點數量大致均等的將哈希槽映射到不同的節點。

 

現有一個key要insert到Redis,那麼根據 CRC16(key) mod 16384的值,比如得到3000,那就把這個key保存在A服務器裏面了。讀的時候也一樣,有個key要去讀,就先 CRC16(key) mod 16384 找到對應的slot,然後就去對應的服務器找數據。看起來,很像個索引吧。

 

使用哈希槽的好處就在於可以方便的添加或移除節點。

當需要增加節點時,只需要把其他節點的某些哈希槽挪到新節點就可以了;

當需要移除節點時,只需要把移除節點上的哈希槽挪到其他節點就行了;

在這一點上,我們以後新增或移除節點的時候不用先停掉所有的 redis 服務。

 

 

發佈了303 篇原創文章 · 獲贊 104 · 訪問量 51萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章