Redis初窺:Hash操作常用命令
阿新 • • 發佈:2019-02-11
HGET命令
命令語法:HGET key field
命令用途:返回雜湊表鍵 key 中給定域 field 的值。
時間複雜度:O(1)127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> hget book title // 當鍵不存在時,返回 nil (nil) 127.0.0.1:6379> hset book title "Mastering Redis" (integer) 1 127.0.0.1:6379> hget book author // 當鍵存在,但域不存在時,返回 nil (nil) 127.0.0.1:6379> hget book title // 當鍵和域都存在時,返回域的值 "Mastering Redis"
HSET命令
命令語法:HSET key field value
命令用途:將雜湊表鍵 key 中的域 field 的值設為 value 。
時間複雜度:O(1)127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> hset book title "Mastering Redis" // 當鍵不存在時,會新建一個雜湊表並設定域的值 (integer) 1 127.0.0.1:6379> hget book title "Mastering Redis" 127.0.0.1:6379> hset book title "Thinking In Java" // 當域已經存在於雜湊表時,會用新值覆蓋舊值 (integer) 0 127.0.0.1:6379> hget book title "Thinking In Java"
HSETNX命令
命令語法:HSETNX key field value
命令用途:當且僅當鍵 key 中的域 field 不存在時,將域 field 的值設為 value 。
時間複雜度:O(1)127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> hsetnx book title "Mastering Redis" // 當域不存在時為其設定值,設定成功 (integer) 1 127.0.0.1:6379> hget book title "Mastering Redis" 127.0.0.1:6379> hsetnx book title "Thinking In Java" // 當域已經存在時再為其設定值,設定失敗 (integer) 0 127.0.0.1:6379> hget book title "Mastering Redis"
HLEN命令
命令語法:HLEN key
命令用途:返回雜湊表鍵 key 中域的數量。
時間複雜度:O(1)127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> hlen book // 當鍵不存在時,返回 0 (integer) 0 127.0.0.1:6379> hset book title "Mastering Redis" (integer) 1 127.0.0.1:6379> hset book author "Nelson" (integer) 1 127.0.0.1:6379> hlen book (integer) 2
HINCRBY命令
命令語法:HINCRBY key field increment
命令用途:將雜湊表鍵 key 中的域 field中儲存的數字值增加 increment 。
時間複雜度:O(1)127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> hincrby book pagination 281 // 當域不存在時,會先將其值初始化為 0,再執行 (integer) 281 127.0.0.1:6379> hget book pagination "281" 127.0.0.1:6379> hincrby book pagination -1 // HINCRBY操作中 increment 引數可以為負數 (integer) 280 127.0.0.1:6379> hget book pagination "280"
HINCRBYFLOAT命令
命令語法:HINCRBYFLOAT key field increment
命令用途:為鍵 key 中的域 field 中儲存的值加上浮點數增量 increment 。
時間複雜度:O(1)127.0.0.1:6379> hexists book price (integer) 0 127.0.0.1:6379> hincrbyfloat book price 66.3 // 當域不存在時,會先將其值初始化為 0,再執行HINCRBYFLOAT操作 "66.3" 127.0.0.1:6379> hget book price "66.3" 127.0.0.1:6379> hincrbyfloat book price -15e-1 // 將 price 的值加 -15e-1即減去1.5 "64.8" 127.0.0.1:6379> hget book price "64.8"
HMGET命令
命令語法:HMGET key field1 [field2 ...]
命令用途:返回雜湊表鍵 key 中,一個或多個給定域的值。
時間複雜度:O(N), N 為給定域的數量。127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> hset book title "Mastering Redis" (integer) 1 127.0.0.1:6379> hset book author "Nelson" (integer) 1 127.0.0.1:6379> hmget book title author price // 不存在域 price 返回 nil 1) "Mastering Redis" 2) "Nelson" 3) (nil)
HMSET命令
命令語法:HMSET key field1 value1 [field2 value2 ...]
命令用途:同時為雜湊表鍵 key 設定一個或多個 key-value 鍵值對。
時間複雜度:O(N), N 為 field-value 對的數量。127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> hmset book title "Mastering Redis" author "Nelson" OK 127.0.0.1:6379> hmget book title author 1) "Mastering Redis" 2) "Nelson"
HKEYS命令
命令語法:HKEYS key
命令用途:返回雜湊表鍵 key 中的所有域。
時間複雜度:O(N), N 為雜湊表中域的數量。127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> hmset book title "Mastering Redis" author "Nelson" OK 127.0.0.1:6379> hkeys book 1) "title" 2) "author"
HVALS命令
命令語法:HVALS key
命令用途:返回雜湊表鍵 key 中所有域的值。
時間複雜度:O(N), N 為雜湊表中域的數量。127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> hmset book title "Mastering Redis" author "Nelson" OK 127.0.0.1:6379> hvals book 1) "Mastering Redis" 2) "Nelson"
HGETALL命令
命令語法:HGETALL key
命令用途:返回雜湊表鍵 key 中,所有的域和值。
時間複雜度:O(N), N 為雜湊表中域的數量。127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> hmset book title "Mastering Redis" author "Nelson" price 55.3 OK 127.0.0.1:6379> hgetall book 1) "title" 2) "Mastering Redis" 3) "author" 4) "Nelson" 5) "price" 6) "55.3"
HEXISTS命令
命令語法:HEXISTS key field
命令用途:檢驗雜湊表鍵 key 中,給定域 field 是否存在。
時間複雜度:O(1)127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> hmset book title "Mastering Redis" author "Nelson" price 55.3 OK 127.0.0.1:6379> 127.0.0.1:6379> hkeys book 1) "title" 2) "author" 3) "price" 127.0.0.1:6379> hexists book title (integer) 1 127.0.0.1:6379> hexists book pagination (integer) 0
HDEL命令
命令語法:HDEL key field1 [field2 ...]
命令用途:刪除雜湊表鍵 key 中的一個或多個域
時間複雜度:O(N), N 為要刪除的域的數量。127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> hmset book title "Mastering Redis" author "Nelson" price 55.3 OK 127.0.0.1:6379> hkeys book 1) "title" 2) "author" 3) "price" 127.0.0.1:6379> hdel book price (integer) 1 127.0.0.1:6379> hkeys book 1) "title" 2) "author" 127.0.0.1:6379> hdel book price author (integer) 1 127.0.0.1:6379> hkeys book 1) "title"
HSCAN命令
命令語法:HSCAN key cursor [MATCH pattern] [COUNT count]
命令用途:迭代雜湊表鍵 key 中的鍵值對。
命令引數:
MATCH pattern:只返回和給定模式 pattern 相匹配的域。COUNT count:每次迭代從資料集返回 count 個元素。
時間複雜度: O(N) , N 為返回元素的數量。
127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> hset book title "Mastering Redis" (integer) 1 127.0.0.1:6379> hmset book total:price 100 L1:price 90 L2:price 80 L3:price 70 OK 127.0.0.1:6379> hgetall book 1) "title" 2) "Mastering Redis" 3) "total:price" 4) "100" 5) "L1:price" 6) "90" 7) "L2:price" 8) "80" 9) "L3:price" 10) "70" 127.0.0.1:6379> hscan book 0 match *:price count 2 // 該命令通常會無視 COUNT 選項指定的值 1) "0" 2) 1) "total:price" 2) "100" 3) "L1:price" 4) "90" 5) "L2:price" 6) "80" 7) "L3:price" 8) "70"