Redis的散列可以让用户将多个键值对存储到一个Redis键里面。从功能来说,Redis为散列提供了一些于字符串相同的特性,是的散列非常适用于将一些关联的数据存储在一起。可以把这种数据聚集看作是关系数据库中的行,或者文档数据库中的文档。
常用命令
命令 | 用例 | 描述 | 注意 |
---|---|---|---|
hmset | hmset key-name key value [key value …] | 添加一个或多个key value键值对 | |
hmget | hmget key-name key [key …] | 从散列中获取一个或多个值 | |
hdel | hdel key-name key [key …] | 从散列中移除一个或多个键 | |
hlen | hlen key-name | 返回散列的键值对数量 |
hmset 添加键值对
127.0.0.1:6379> hmset map key1 v1 key2 v2 key3 v3
OK
hmget 查看键对应的值
127.0.0.1:6379> hmget map key1 key2 key3
1) "v1"
2) "v2"
3) "v3"
hdel 删除键
127.0.0.1:6379> hdel map key1
(integer) 1
127.0.0.1:6379> hmget map key1
1) (nil)
hlen 查看键值对数量
127.0.0.1:6379> hlen map
(integer) 2
高级特性
命令 | 用例 | 描述 | 注意 |
---|---|---|---|
hexists | hexists key-name key | 检查key是否在散列里 | |
hkeys | hkeys key-name | 返回散列所有的键 | |
hvals | hvals key-name | 返回散列所有的值 | |
hgetall | hgetall key-name | 返回散列所有的键值对 | 如果数据过大,导致线程阻塞 |
hincrby | hincrby key-name key increment | 将key的值加上整数increment | |
hincrbyfloat | hincrbyfloat key-name key increment | 将key的值加上浮点数increment |
尽管 hgetall 存在,但是不建议使用,如果散列包含的数据特别大,那么用户可以先使用hkeys查询到所有的键,再使用hget一个接一个的从散列中取出键的值,从而避免因为一次获取多个大体积的值而导致服务器阻塞。
hincrby 和 hincrbyfloat 同字符串的用法相同,只不过在在这儿处理的是散列。