Redis入門(四):Redis hash 命令和 Redis list 命令

https://github.com/Haiyoung/learning-and-preparing-for-interview/blob/dev/redis.md

Redis hash 命令

  • HSET key field value 將哈希表 key 中的字段 field 的值設爲 value
  • HGET key field 獲取存儲在哈希表中指定字段的值
  • HMSET key field1 value1 [field2 value2 ] 同時將多個 field-value (域-值)對設置到哈希表 key 中
  • HGETALL key 獲取在哈希表中指定 key 的所有字段和值
  • HSETNX key field value 只有在字段 field 不存在時,設置哈希表字段的值
  • HKEYS key 獲取所有哈希表中的字段
  • HVALS key 獲取哈希表中所有值
    python
    redis-S:6379> hset hashTest id dog
    (integer) 1
    redis-S:6379> hget hashTest id
    "dog"
    redis-S:6379> hmset hashTest name dog_1 food bond_1
    OK
    redis-S:6379> hgetall hashTest
    1) "id"
    2) "dog"
    3) "name"
    4) "dog_1"
    5) "food"
    6) "bond_1"
    redis-S:6379> hsetnx hashTest id cat
    (integer) 0
    redis-S:6379> hgetall hashTest
    1) "id"
    2) "dog"
    3) "name"
    4) "dog_1"
    5) "food"
    6) "bond_1"
    redis-S:6379> hkeys hashTest
    1) "id"
    2) "name"
    3) "food"
    redis-S:6379> hvals hashTest
    1) "dog"
    2) "dog_1"
    3) "bond_1"
    redis-S:6379>
  • HLEN key 獲取哈希表中字段的數量
  • HDEL key field1 [field2] 刪除一個或多個哈希表字段
  • HEXISTS key field 查看哈希表 key 中,指定的字段是否存在
  • HMGET key field1 [field2] 獲取所有給定字段的值
    python
    redis-S:6379> keys *
    1) "hashTest"
    redis-S:6379> hlen hashTest
    (integer) 3
    redis-S:6379> hdel hashTest id
    (integer) 1
    redis-S:6379> hlen hashTest
    (integer) 2
    redis-S:6379> hgetall hashTest
    1) "name"
    2) "dog_1"
    3) "food"
    4) "bond_1"
    redis-S:6379> hexists hashTest id
    (integer) 0
    redis-S:6379> hexists hashTest name
    (integer) 1
    redis-S:6379> hmget hashTest name food
    1) "dog_1"
    2) "bond_1"
    redis-S:6379>
  • HINCRBY key field increment 爲哈希表 key 中的指定字段的整數值加上增量 increment
  • HINCRBYFLOAT key field increment 爲哈希表 key 中的指定字段的浮點數值加上增量 increment
    python
    redis-S:6379> keys *
    1) "hashTest"
    redis-S:6379> hmset hashTest002 f1 1 f2 2 f3 3
    OK
    redis-S:6379> hgetall hashTest002
    1) "f1"
    2) "1"
    3) "f2"
    4) "2"
    5) "f3"
    6) "3"
    redis-S:6379> hincrby hashTest002 f3 2
    (integer) 5
    redis-S:6379> hincrbyfloat hashTest002 f1 1.1
    "2.1"
  • HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的鍵值對
    python
    #SCAN 命令是一個基於遊標的迭代器(cursor based iterator): SCAN 命令每次被調用之後, 都會向用戶返回一個新的遊標, 用戶在下次迭代時需要使用這個新遊標作爲 SCAN 命令的遊標參數, 以此來延續之前的迭代過程。
    #當 SCAN 命令的遊標參數被設置爲 0 時, 服務器將開始一次新的迭代, 而當服務器向用戶返回值爲 0 的遊標時, 表示迭代已結束
    # match 可以返回匹配的鍵值對
    # COUNT 選項的作用就是讓用戶告知迭代命令, 在每次迭代中應該從數據集裏返回多少元素
    # 雖然 COUNT 選項只是對增量式迭代命令的一種提示(hint),但是在大多數情況下, 這種提示都是有效的(數據量少時不生效)
    redis-S:6379> hscan hashTest002 0
    1) "0"
    2) 1) "f1"
    2) "2.1"
    3) "f2"
    4) "2"
    5) "f3"
    6) "5"
    redis-S:6379> hscan hashTest002 0 match *2
    1) "0"
    2) 1) "f2"
    2) "2"
    redis-S:6379> hscan hashTest002 0 match *2 count 3
    1) "0"
    2) 1) "f2"
    2) "2"
    redis-S:6379>

Redis list 命令

  • RPUSH key value1 [value2] 在列表中添加一個或多個值
  • LPUSH key value1 [value2] 將一個或多個值插入到列表頭部
  • LRANGE key start stop 獲取列表指定範圍內的元素
  • LPOP key 移除並獲取列表的第一個元素
  • RPOP key 移除並獲取列表最後一個元素
  • LPUSHX key value 將一個值插入到已存在的列表頭部
  • RPUSHX key value 爲已存在的列表添加值
  • LLEN key 獲取列表長度
    python
    redis-S:6379> keys *
    (empty list or set)
    redis-S:6379> rpush listTest 001
    (integer) 1
    redis-S:6379> lrange listTest 0 -1
    1) "001"
    redis-S:6379> lpush listTest 002
    (integer) 2
    redis-S:6379> lrange listTest 0 -1
    1) "002"
    2) "001"
    redis-S:6379> lpop listTest
    "002"
    redis-S:6379> rpop listTest
    "001"
    redis-S:6379> lrange listTest 0 -1
    (empty list or set)
    redis-S:6379> keys *
    (empty list or set)
    redis-S:6379> lpushx listTest 003
    (integer) 0
    redis-S:6379> rpush listTest 001
    (integer) 1
    redis-S:6379> lpushx listTest 003
    (integer) 2
    redis-S:6379> lrange listTest 0 -1
    1) "003"
    2) "001"
    redis-S:6379> rpushx listTest 004
    (integer) 3
    redis-S:6379> lrange listTest 0 -1
    1) "003"
    2) "001"
    3) "004"
    redis-S:6379> llen listTest
    (integer) 3
    redis-S:6379>
  • LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者後插入元素(如果命令執行成功,返回插入操作完成之後,列表的長度。 如果沒有找到指定元素 ,返回 -1 。 如果 key 不存在或爲空列表,返回 0)
  • LINDEX key index 通過索引獲取列表中的元素
    python
    redis-S:6379> lrange listTest 0 -1
    1) "003"
    2) "001"
    3) "004"
    redis-S:6379> lindex listTest 1
    "001"
    redis-S:6379> linsert listTest before "001" "009"
    (integer) 4
    redis-S:6379> lrange listTest 0 -1
    1) "003"
    2) "009"
    3) "001"
    4) "004"
    redis-S:6379> linsert listTest after "001" "006"
    (integer) 5
    redis-S:6379> lrange listTest 0 -1
    1) "003"
    2) "009"
    3) "001"
    4) "006"
    5) "004"
    redis-S:6379>
  • LREM key count value 移除列表元素
    • Redis Lrem 根據參數 COUNT 的值,移除列表中與參數 VALUE 相等的元素
    • count > 0 : 從表頭開始向表尾搜索,移除與 VALUE 相等的元素,數量爲 COUNT
    • count < 0 : 從表尾開始向表頭搜索,移除與 VALUE 相等的元素,數量爲 COUNT 的絕對值
    • scount = 0 : 移除表中所有與 VALUE 相等的值
      python
      redis-S:6379> lrange listTest 0 -1
      1) "003"
      2) "009"
      3) "001"
      4) "006"
      5) "004"
      6) "003"
      7) "003"
      8) "001"
      9) "001"
      10) "003"
      redis-S:6379> lrem listTest 2 003
      (integer) 2
      redis-S:6379> lrange listTest 0 -1
      1) "009"
      2) "001"
      3) "006"
      4) "004"
      5) "003"
      6) "001"
      7) "001"
      8) "003"
      redis-S:6379> lrem listTest 2 003
      (integer) 2
      redis-S:6379> lrange listTest 0 -1
      1) "009"
      2) "001"
      3) "006"
      4) "004"
      5) "001"
      6) "001"
      redis-S:6379> lrem listTest 0 001
      (integer) 3
      redis-S:6379> lrange listTest 0 -1
      1) "009"
      2) "006"
      3) "004"
      redis-S:6379>
  • LSET key index value 通過索引設置列表元素的值
  • LTRIM key start stop 對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除
    python
    redis-S:6379> lrange listTest 0 -1
    1) "009"
    2) "006"
    3) "004"
    redis-S:6379> lset listTest 1 008
    OK
    redis-S:6379> lrange listTest 0 -1
    1) "009"
    2) "008"
    3) "004"
    redis-S:6379> ltrim listTest 1 -1
    OK
    redis-S:6379> lrange listTest 0 -1
    1) "008"
    2) "004"
    redis-S:6379>
  • BLPOP key1 [key2 ] timeout 移出並獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止
  • BRPOP key1 [key2 ] timeout 移出並獲取列表的最後一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止
  • RPOPLPUSH source destination 移除列表的最後一個元素,並將該元素添加到另一個列表並返回
  • BRPOPLPUSH source destination timeout 從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它; 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止
    Redis list commond
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章