redis中的hash、列表、集合操作


一、hash操作
數據結構:key:{k1:v1, k2:v2, k3:v3} 類似Python中的字典

如:info : {name: lina, age: 22, sex: F}

  • hset key k1 v1 設置/創建(字典)
  • hget key k1 獲取key1 中 k1對應的值

批量設置獲取

  • hmset key k2 v2 k3 v3 同時設置多個k-value
  • hmget key k1 k2 k3 同時獲取多個值

獲取所有keys

  • hkeys key

獲取所有values

  • hvals key

查看鍵值下面的k個數

  • hlen key
127.0.0.1:6379> hset info name lina
(integer) 1
127.0.0.1:6379> hget info name
"lina"
127.0.0.1:6379> hmset info age 22 sex F
OK
127.0.0.1:6379> hmget info name age sex
1) "lina"
2) "22"
3) "F"
127.0.0.1:6379> hkeys info
1) "name"
2) "age"
3) "sex"
127.0.0.1:6379> hvals info
1) "lina"
2) "22"
3) "F"
127.0.0.1:6379> hlen info
(integer) 3
1.2 hash 下幾個常用方法

刪除key 下指定鍵值

  • hdel key k1 k2 k3 可刪除一個或多個

判斷key 下指定鍵值是否存在

  • hexists key field
127.0.0.1:6379> hdel info sex
(integer) 1
127.0.0.1:6379> hexists info sex
(integer) 0

在hash操作中一個key 能存200億條數據,如果使用 hmget key 命令,那占用內存,和速度就太慢了
所以使用掃描,類是python 中生成器一樣的方式:

  • hscan key cursor match pattern COUNT count
    :para key: 那個hash
    :para cursor: 游標,從哪開始掃描 一般從 0
    :para match: pattern 模糊匹配,正則表達
    :para COUNT: count匹配幾個,輸入數字就好
127.0.0.1:6379> hscan info 0 match na* count 1
1) "0"
2) 1) "name"
   2) "lina"
二、列表操作
- lpush key value1 value2 value3 創建一個列表,並從左往右依次放入數據(FILO) - rpush key value value2 同理上面,右往左放入(FIFO)
  • lrange key start stop 取列表中的值,從start 到stop 0 -1為取全部
  • llen key 查看列表長度
127.0.0.1:6379> lpush list 1 2 3
(integer) 3
127.0.0.1:6379> rpush list 1 2 3
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "1"
4) "1"
5) "2"
6) "3"
127.0.0.1:6379> llen list
(integer) 6
2.2 往列表中插入元素,刪除元素等
  • linsert key where refvalue value 往key中對應的refvalue標桿值的 where(before 和 after)前后后兩個選項,插入數據value
    :para key: 對應列表
    :para where: before 或 after 意思在標桿值之前或之后
    :para refvale: 標桿值
    :para value: 將要插入的值

注意:如果有重復值,以找到的第一個為標桿

(integer) 6
127.0.0.1:6379> linsert list before 1 insert
(integer) 7
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "insert"
4) "1"
5) "1"
6) "2"

修改指定索引的值:

  • lset key index value

刪除指定位置的值:

  • lrem key count value 參數count 為刪除幾個,value為 刪誰

從列表左邊獲取一個值返回,並刪除它

  • lpop key

獲取指定索引的值

  • lindex key index

刪除指定范圍之外的所有元素

  • ltrim key start end
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "insert"
4) "1"
5) "1"
6) "2"
7) "3"
127.0.0.1:6379> lset list 1 'lina'
OK
127.0.0.1:6379> lrem list 2 1
(integer) 2
127.0.0.1:6379> lpop  list
"3"
127.0.0.1:6379> lrange list 0 -1
1) "lina"
2) "insert"
3) "2"
4) "3"
127.0.0.1:6379> ltrim list 0 1
OK
127.0.0.1:6379> lrange list 0 -1
1) "lina"
2) "insert"
127.0.0.1:6379> lindex list 1
"insert"
2.3 幾個不常用的命令,但很厲害

把列表一右邊pop 添加到列表2 lpush 左邊

  • rpoplpush key1 key2

左邊刪除一個數據,如果列表為空,就等待超時時間,在超時時間內,列表中出現了元素理解刪除。像隊列中的queue一般

  • blpop key timeout
三、set集合

創建一個集合:

  • sadd key value value value value

查看集合中的成員:

  • smembers key

返回集合中的元素個數:

  • scard key

差集:

  • sdiff key1 key2

將兩個集合中的差集放入第三個集合

  • sdiffstore new_dest key1 key2

交集:

  • sinter key1 key2

並集:

  • sunion key1 key2

檢查元素是否為集合中成員:

  • sismember key value

  • spop key

  • sscan key cursor match pattern

四、有序集合
  • zadd key 權重值 member 權重值2 member2 權重值3 member3

  • zrange key start end 可選參數為 withscores

  • zcount key min max 統計權重最小到最大

127.0.0.1:6379> zadd zz 1 shiqi 2 zengyue 3 yuan
(integer) 3
127.0.0.1:6379> zrange zz 0 -1
1) "shiqi"
2) "zengyue"
3) "yuan"
127.0.0.1:6379> zrange zz 0 -1 withscores
1) "shiqi"
2) "1"
3) "zengyue"
4) "2"
5) "yuan"
127.0.0.1:6379> zcount zz 1 2
(integer) 2
  • zrank key member 獲取成員排名

  • zrem key member member2 刪除指定成員


免責聲明!

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



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