一.List列表

基於Linked List實現 元素是字串型別

列表頭尾增刪快,中間增刪慢,增刪元素是常態

元素可以重複出現

最多包含2^32-1元素

列表的索引

從左至右,從0開始

從右至左,從-1開始

1.左右或者頭尾壓入元素

LPUSH key value [value ...]

LPUSHX key value

RPUSH key value [value ...]

RPUSHX key value

2.左右或者頭尾彈出元素

LPOP key RPOP key

3.從一個列表尾部彈出元素壓入到另一個列表的頭部

RPOPLPUSH source destination

4.返回列表中指定範圍元素

LRANGE key start stop LRANGE key 0 -1表示返回所有元素

5.獲取指定位置的元素

LINDEX key index

6.設定指定位置元素的值

LSET key index value

7.列表長度,元素個數

LLEN key

8.從列表頭部開始刪除值等於value的元素count次

LREM key count value

count > 0 : 從表頭開始向表尾搜尋,移除與 value 相等的元素,數量為 count

count < 0 : 從表尾開始向表頭搜尋,移除與 value 相等的元素,數量為 count 的絕對值

count = 0 : 移除表中所有與 value 相等的值

 

9.去處指定範圍外元素

LTRIM key start stop

 10.在列表中某個存在的值(pivot)前或後插入元素

LINSERT key BEFORE|AFTER pivot value

key和pivot不存在,不進行任何操作

11.阻塞
    如果彈出的列表不存在或者為空,就會阻塞
    超時時間設定為0,就是永久阻塞,直到有資料可以彈出
    如果多個客戶端阻塞在同一個列表上,使用First In First Service原則,先到先服務

    左右或者頭尾阻塞彈出元素

    BLPOP key [key ...] timeout

    BRPOP key [key ...] timeout

二. Hsh雜湊

1.特點

  由field和關聯的value組成的map鍵值對

  field和value是字串型別一個hash中

  最多包含2^32-1鍵值對

2.設定單個欄位

HSET key field value

HSETNX key field value

key的filed不存在的情況下執行,key不存在直接建立

3.設定多個欄位

HMSET key field value [field value ...]

4.返回欄位個數

HLEN key

5.判斷欄位是否存在

HEXISTS key field

key或者field不存在,返回0

6.返回欄位值

HGET key field

7.返回多個欄位值

HMGET key field [field ...]

8.返回所有的鍵值對

HGETALL key

9.返回所有欄位名

HKEYS key

10.返回所有值

HVALS key

11.在欄位對應的值上進行整數的增量計算

HINCRBY key field increment

12.在欄位對應的值上進行浮點數的增量計算

HINCRBYFLOAT key field increment

13.刪除指定的欄位

HDEL key field [field ...]

14. hash的用途

1)節約記憶體空間

2)每建立一個鍵,它都會為這個鍵儲存一些附加的管理資訊(比如這個鍵的型別,這個鍵最後一次被訪問的時間等等)

3)所以資料庫裡面的鍵越多,redis資料庫伺服器在儲存附加管理資訊方面耗費的記憶體就越多,花在管理資料庫鍵上的CPU也會越多在欄位對應的值上進行浮點數的增量計算

15.不適合hash的情況

1)使用二進位制位操作命令:因為Redis目前支援對字串鍵進行SETBIT、GETBIT、BITOP等操作,如果你想使用這些操作,那麼只能使用字串鍵,雖然雜湊也能儲存二進位制資料

2)使用過期鍵功能:Redis的鍵過期功能目前只能對鍵進行過期操作,而不能對雜湊的欄位進行過期操作,因此如果你要對鍵值對資料使用過期功能的話,那麼只能把鍵值對儲存在字串裡面

 三.set集合

1.特點

無序的、去重的

元素是字串型別

最多包含2^32-1元素

2.增加一個或多個元素

SADD key member [member ...]

如果元素已經存在,則自動忽略

3. 移除一個或者多個元素

SREM key member [member ...]

元素不存在,自動忽略

4.返回集合包含的所有元素

SMEMBERS key

如果集合元素過多,例如百萬個,需要遍歷,可能會造成伺服器阻塞,生產環境應避免使用

 5.集合的無序性 ‘

SADD friends "peter" "jack" "tom" "john" "may" "ben"

SADD anotherfriends "peter" "jack" "tom" "john" "may" "ben"

SMEMBERS friends

SMEMBERS anotherfriends

注意, SMEMBERS 有可能返回不同的結果,所以,如果需要儲存有序且不重複的資料使用有序集合,儲存有序可重複的使用列表

6. 隨機返回集合中指定個數的

SRANDMEMBER key [count]

如果 count 為正數,且小於集合基數,那麼命令返回一個包含 count 個元素的陣列,陣列中的元素各不相同。

如果 count 大於等於集合基數,那麼返回整個集合

如果 count 為負數,那麼命令返回一個數組,陣列中的元素可能會重複出現多次,而陣列的長度為 count 的絕對值

如果 count 為 0,返回空 如果 count 不指定,隨機返回一個元素

7. 返回集合中元素的個數

SCARD key 鍵的結果會儲存資訊,集合長度就記錄在裡面,所以不需要遍歷

8. 隨機從集合中移除並返回這個被移除的元素

SPOP key

 

9. 差集

SDIFF key [key ...],從第一個key的集合中去除其他集合和自己的交集部分

SDIFFSTORE destination key [key ...],將差集結果儲存在目標key中

10.交集

SINTER key [key ...],取所有集合交集部分

SINTERSTORE destination key [key ...],將交集結果儲存在目標key中

11. 並集

SUNION key [key ...],取所有集合並集

SUNIONSTORE destination key [key ...],將並集結果儲存在目標key中

四. SortedSet有序集合

1.特點

類似Set集合

有序的、去重的

元素是字串型別

每一個元素都關聯著一個浮點數分值(Score),並按照分值從小到大的順序排列集合中的元素。

分值可以相同 最多包含2^32-1元素

2. 增加一個或多個元素

ZADD key score member [score member ...]

如果元素已經存在,則使用新的score

舉例

ZADD fruits 3.2 香蕉

ZADD fruits 2.0 西瓜

ZADD fruits 4.0 番石榴 7.0 梨 6.8 芒果

3. 移除一個或者多個元素

ZREM key member [member ...]

元素不存在,自動忽略

舉例

ZREM fruits 番石榴 梨 芒果

ZREM fruits 西瓜

 

4.顯示分值

ZSCORE key member

舉例

ZSCORE fruits 芒果

ZSCORE fruits 西瓜

計算機並不能精確表達每一個浮點數,都是一種近似表達

5.增加或者減少分值

ZINCRBY key increment member increment為負數就是減少

舉例 ZINCRBY fruits 1.5 西瓜 ZINCRBY fruits -0.8 香蕉

6. 返回元素的排名(索引)

ZRANK key member

舉例 ZRANK fruits 西瓜

ZRANK fruits 番石榴

ZRANK fruits 芒果

7. 返回元素的逆序排名

ZREVRANK key member

8. 返回指定索引區間元素

ZRANGE key start stop [WITHSCORES]

如果score相同,則按照字典序lexicographical order 排列 預設按照score從小到大,如果需要score從大到小排列,使用ZREVRANGE

9. 返回指定分值區間元素

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

返回score預設屬於[min,max]之間,元素按照score升序排列,score相同字典序

LIMIT中offset代表跳過多少個元素,count是返回幾個。類似於Mysql

使用小括號,修改區間為開區間,例如(5、(10、5)

-inf和+inf表示負無窮和正無窮

 10.返回指定分值區間元素

ZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

返回score預設屬於[min,max]之間,元素按照score降序排列,score相同字典降序

LIMIT中offset代表跳過多少個元素,count是返回幾個。類似於Mysql

使用小括號,修改區間為開區間,例如(5、(10、5)

-inf和+inf表示負無窮和正無窮

11.移除指定排名範圍的元素

12.移除指定分值範圍的元素

 13.返回集合中元素個數

 14.並集