一.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.並集