Redis——set,hash與列表


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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM