您的位置:首页 > 数据库 > Redis

Redis入门(四)散列Hash

2016-11-12 15:45 507 查看
散列Hash

Redis的散列类型的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据类型,一个散列类型键可以包含至多2^32 -1个字段

hset 在散列里面关联起给定的键值对

hget 获取指定散列键的值

hgetall 获取散列包含的所有键值对

hdel 如果给定键存在于散列里面,那么移出这个键

127.0.0.1:6379> hset hash-key sub-key1 value1
(integer) 1
127.0.0.1:6379> hset hash-key sub-key2 value2
(integer) 1
127.0.0.1:6379> hset hash-key sub-key1 value1
(integer) 0
127.0.0.1:6379> hgetall hash-key
1) "sub-key1"
2) "value1"
3) "sub-key2"
4) "value2"
127.0.0.1:6379> hdel hash-key sub-key2
(integer) 1
127.0.0.1:6379> hdel hash-key sub-key2
(integer) 0
127.0.0.1:6379> hget hash-key sub-key1
"value1"
127.0.0.1:6379> hgetall hash-key
1) "sub-key1"
2) "value1"


hmset和hmget同时设置多个键值对和取出多个键值对

127.0.0.1:6379> hmset hash-key sub-key2 value2 sub-key3 value3
OK
127.0.0.1:6379> hmget sub-key2 sub-key3
1) (nil)
127.0.0.1:6379> hmget hash-key sub-key2 sub-key3
1) "value2"
2) "value3"


hexists检查键是否已存在

hsetnx如果键不存在,则将新的键值对插入,如果已存在,则不做任何操作

127.0.0.1:6379> hexists hash-key sub-key2
(integer) 1
127.0.0.1:6379> hsetnx hash-key sub-key3 hello
(integer) 0
127.0.0.1:6379> hget hash-key sub-key3
"value3"
127.0.0.1:6379> hsetnx hash-key sub-key4 value4
(integer) 1
127.0.0.1:6379> hget hash-key sub-key4
"value4"


由于散列类型没有hincr命令,可以通过hincrby key field increment来指定增加的整数

127.0.0.1:6379> hset hash-key sub-key5 5
(integer) 1
127.0.0.1:6379> hincrby hash-key sub-key5 3
(integer) 8


另外如果键一开始不存在,或者字段不存在,使用hincrby会创建这个键,然后在键映射的散列数据会再创建一个字段,其值为0,然后加上60

127.0.0.1:6379> hincrby person score 60
(integer) 60

127.0.0.1:6379> hincrby person score 60
(integer) 60


hkeys仅获取字段名

hvals仅获取字段值

hlen获取字段数量

127.0.0.1:6379> hkeys hash-key
1) "sub-key1"
2) "sub-key2"
3) "sub-key3"
4) "sub-key4"
5) "key5"
127.0.0.1:6379> hvals hash-key
1) "value1"
2) "value2"
3) "value3"
4) "value4"
5) "6"
127.0.0.1:6379> hlen hash-key
(integer) 5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: