使用Redis的哈希功能
1、HSET 命令
用于添加一个键值到指定的散列中。如果键不存在,则生成一个新的键。
如果指定的键存在,则其值会被新的值覆盖。
127.0.0.1:6379> HSET KEY FILED VALUE
例如,
127.0.0.1:6379> HSET HTBL NAME "randyma" (integer) 1 127.0.0.1:6379> HSET HTBL AGE 30 (integer) 1 127.0.0.1:6379> HSET HTBL SEX "MALE" (integer) 1 127.0.0.1:6379> HGET HTBL NAME "randyma" 127.0.0.1:6379> HGET HTBL AGE "30" 127.0.0.1:6379> HGET HTBL SET (nil) 127.0.0.1:6379> HGET HTBL SEX "MALE"
2、HGET
根据给定的键名获取指定哈希中相应的键值。
如果该键名不存在,则返回nil。
127.0.0.1:6379> HGET KEY FILED
例如,
127.0.0.1:6379> HGET HTBL NAME "randyma" 127.0.0.1:6379> HGET HTBL NAME1 (nil)
3、HDEL
用于删除指定的散列中一个键。如果该键存在,删除后返回1,如果该键不存在,删除后返回0。
127.0.0.1:6379> HDEL KEY FILED [field ...]
例如,
127.0.0.1:6379> HDEL HTBL SET (integer) 0 127.0.0.1:6379> HDEL HTBL SEX (integer) 1 127.0.0.1:6379> HDEL HTBL AGE (integer) 1 127.0.0.1:6379> HGET HTBL AGE (nil) 127.0.0.1:6379> HGET HTBL SEX (nil)
4、HGETALL
用于获取指定的哈希中全部的键名与键值。键名与键值是分行打印的。
如果指定的哈希不存在,则返回错误说明。
127.0.0.1:6379> HGETALL KEY
例如,
127.0.0.1:6379> HGETALL htbl (empty list or set) 127.0.0.1:6379> HGETALL HTBL 1) "NAME" 2) "randyma"
5、HEXISTS
用于检测指定的键名在指定的哈希中是否存在。
如果键名存在,则返回1。
如果键名不存在,则返回0。
127.0.0.1:6379> HEXISTS KEY FILED
例如,
127.0.0.1:6379> HEXISTS HTBL SEX (integer) 0 127.0.0.1:6379> HEXISTS HTBL AGE (integer) 0 127.0.0.1:6379> HEXISTS HTBL NAME (integer) 1
6、HINCRBY
用于修改指定哈希中特定键名的值,该键名存在,则增加指定值的大小。
如果不存在,则返回0。如果该键名的值不是数值类型,则返回错误说明。
127.0.0.1:6379> HINCRBY KEY FILE INCREMENT
例如,
127.0.0.1:6379> HINCRBY HTBL NAME 1 (error) ERR hash value is not an integer 127.0.0.1:6379> HSET HTBL AGE 30 (integer) 1 127.0.0.1:6379> HINCRBY HTBL AGE 1 (integer) 31 127.0.0.1:6379> HGETALL HTBL 1) "NAME" 2) "randyma" 3) "AGE" 4) "31"
7、HINCRBYFLOAT
用于修改指定哈希中特定键名的值,该键名存在,则增加指定值的大小。
如果不存在,则返回0。如果该键名的值不是浮点数类型,则返回错误说明。
127.0.0.1:6379> HINCRBYFLOAT KEY FILED INCREMENT
例如,
127.0.0.1:6379> HSET HTBL WEIGHT 64.5 (integer) 1 127.0.0.1:6379> HINCRBYFLOAT HTBL WEIGHT 0.5 "65" 127.0.0.1:6379> HGETALL HTBL 1) "NAME" 2) "randyma" 3) "AGE" 4) "31" 5) "WEIGHT" 6) "65" 127.0.0.1:6379> HINCRBYFLOAT HTBL NAME 0.5 (error) ERR hash value is not a valid float
8、HKEYS
用于获取指定哈希中所有的键名。
127.0.0.1:6379> HKEYS KEY
例如,
127.0.0.1:6379> HKEYS HTBL 1) "NAME" 2) "AGE" 3) "WEIGHT"
9、HVALS
用于获取指定哈希中所有键的键值。
127.0.0.1:6379> HVALS KEY
例如,
127.0.0.1:6379> HVALS HTBL 1) "randyma" 2) "31" 3) "62.5" 4) "178.0" 5) "13700001111"
10、HLEN
用于获取指定哈希中键的数量。如果指定的哈希不存在或者为空,则返回0。
127.0.0.1:6379> HLEN KEY
例如,
127.0.0.1:6379> HLEN HTBL (integer) 3 127.0.0.1:6379> HLEN KEY (error) WRONGTYPE Operation against a key holding the wrong kind of value 127.0.0.1:6379> HLEN h (integer) 0
11、HMGET
根据给出的键名获取指定哈希中的键值。
如果给出的键名不存在,则该键的键值返回nil。
127.0.0.1:6379> HMGET KEY FILED [field ...]
例如,
127.0.0.1:6379> HMGET HTBL NAME AGE WEIGHT 1) "randyma" 2) "31" 3) "65" 127.0.0.1:6379> HMGET HTBL NAME AGE WEIGH 1) "randyma" 2) "31" 3) (nil)
12、HMSET
根据给出的键名获取指定哈希中的键值。
如果给出的键名不存在,则该键的键值返回nil。
127.0.0.1:6379> HMSET KEY FILED VALUE [field value ...]
例如,
127.0.0.1:6379> HMSET HTBL WEIGHT 62.5 HEIGHT 178.0 OK 127.0.0.1:6379> HMGET HTBL NAME AGE WEIGHT HEIGHT 1) "randyma" 2) "31" 3) "62.5" 4) "178.0"
13、HSETNX
根据给出的键名在指定的哈希中设置键值。
如果键名存在,则不进行覆盖,返回0。
如果键名不存在,则添加新的键值,返回1。
127.0.0.1:6379> HSETNX KEY FILED VALUE
例如,
127.0.0.1:6379> HSETNX HTBL PHONE 13700001111 (integer) 1 127.0.0.1:6379> HSETNX HTBL PHONE 1370000111 (integer) 0