Redis的哈希值是字符串字段和字符串值之间的映射,所以他们是表示对象的完美数据类型
在Redis中的哈希值,可存储超过400十亿键值对。
例子
redis 127.0.0.1:6379> HMSET redis name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
OK
redis 127.0.0.1:6379> HGETALL redis
1) "name"
2) "redis tutorial"
3) "description"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "23000"
HSET key field value
将哈希表key中的域field设置成指定的value,如果key不存在则新建一个hash表,如果域不存在则新建域,如果域已存在则更新域,如果field不存在返回1表示新建,存在则返回0表示更新
127.0.0.1:6379> HSET userinfo username 'stronger'
(integer) 1
127.0.0.1:6379> HSET userinfo userpsw '123456'
(integer) 1
127.0.0.1:6379> HSET userinfo userpsw '654321'
(integer) 0
HGET key field
获取哈希表key中的域field的值,如果key或者field不存在则返回(nil)
127.0.0.1:6379> HGET userinfo2 username
(nil)
127.0.0.1:6379> HGET userinfo username
"stronger"
127.0.0.1:6379> HGET userinfo email
(nil)
HSETNX key field value
将哈希表中的域field设置成指定的值,只有field不存在时才可以成功,如果field存在操作无效,返回0
127.0.0.1:6379> HGET userinfo username
"stronger"
127.0.0.1:6379> HSETNX userinfo username 'fish'
(integer) 0
127.0.0.1:6379> HGET userinfo username
"stronger"
HMSET key field vale [field value]
同时将多个field-value设定到hash表中,如果field已存在值则会被覆盖掉
127.0.0.1:6379> HMSET userinfo email 'yangdm@gmail.com' sex 'male'
OK
HMGET key field [field]
同时获得key存储的hansh表中多个field的值,如果不存在则返回(nil)
127.0.0.1:6379> HMGET userinfo email sex age
1) "yangdm@gmail.com"
2) "male"
3) (nil)
HGETALL key
返回key存储的所有field及value
127.0.0.1:6379> HGETALL userinfo
1) "username"
2) "stronger"
3) "userpsw"
4) "654321"
5) "email"
6) "yangdm@gmail.com"
7) "sex"
8) "male"
127.0.0.1:6379> HGETALL userinfo2
(empty list or set)
HKEYS key
返回hash的所有域
127.0.0.1:6379> HKEYS userinfo
1) "username"
2) "userpsw"
3) "email"
4) "sex"
HVALS key
返回hash的所有域的值
127.0.0.1:6379> HVALS userinfo
1) "stronger"
2) "654321"
3) "yangdm@gmail.com"
4) "male"
HEXISTS key field##
检测key中存储的hash中field是否存在,存在返回1,否则返回0
127.0.0.1:6379> HEXISTS userinfo username
(integer) 1
127.0.0.1:6379> HEXISTS userinfo age
(integer) 0
HLEN key
返回key中存储的hash表中field的数量
127.0.0.1:6379> HLEN userinfo
(integer) 4
HINCRBY key field increment
给key中存储的hash表field增加increment,如果此field不存在,则创建值为0的field,然后增加increment。操作的字段必须是整数,参照字符串处理
127.0.0.1:6379> HINCRBY userinfo age 10
(integer) 10
HINCRBYFLOAT key field increment
给key中存储的hash表field增加increment,可以为浮点数,参照字符串处理
127.0.0.1:6379> HINCRBYFLOAT userinfo salary 150.56
"150.56"
HDEL key field [field]##
删除key中存储的hash表的field,可以删除一个或多个,成功返回被移除域的数量
127.0.0.1:6379> HKEYS userinfo
1) "username"
2) "userpsw"
3) "email"
4) "sex"
5) "age"
6) "salary"
127.0.0.1:6379> HDEL userinfo salary age
(integer) 2
127.0.0.1:6379> HKEYS userinfo
1) "username"
2) "userpsw"
3) "email"
4) "sex"