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

1、hash操做

數據結構:key:{k1:v1, k2:v2, k3:v3} 相似Python中的字典python

如:info : {name: lina, age: 22, sex: F}數據結構

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

批量設置獲取code

  • 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 下指定鍵值rem

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

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

  • 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 中生成器同樣的方式:hash

  • 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"
2、列表操做
  • lpush key value1 value2 value3 建立一個列表,並從左往右依次放入數據(FILO)
  • rpush key value value2 同理上面,右往左放入(FIFO)it

  • 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
3、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

4、有序集合
  • 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 刪除指定成員

相關文章
相關標籤/搜索