Redis Hash哈希类型
Hash相当于map集合。本质和String类型没有太大区别,还是一个简单的key-value!
所有的Hash命令是以“h”开头的。
1.利用 hset命令 设置键值
127.0.0.1:6379> hset myhash field1 ckfuture
(integer) 1
2.利用hget 命令获取键值
127.0.0.1:6379> hget myhash field1
"ckfuture"
3.利用 hmset 命令同时设置多个键值
127.0.0.1:6379> hmset myhash field1 hello field2 word
OK
4.利用hmget命令同时获取多个键值
127.0.0.1:6379> hmget myhash field1 field2
1) "hello"
2) "word"
5.利用hmgetall命令获取全部键值对
127.0.0.1:6379> hgetall myhash
1) "field1"
2) "hello"
3) "field2"
4) "word"
6.利用hdel命令删除指定的字段
127.0.0.1:6379> hdel myhash field1
(integer) 1
7.利用hlen命令获取哈市表字段数量
127.0.0.1:6379> hlen myhash
(integer) 1
8.利用hexists判断hash中指定字段是否存在
127.0.0.1:6379> hexists myhash field1 (integer) 0 127.0.0.1:6379> hexists myhash field2 (integer) 1 127.0.0.1:6379>
9.利用hkeys 命令获得所有field(字段)
127.0.0.1:6379> hkeys myhash
1) "field2"
127.0.0.1:6379>
10.利用hvals 命令获得所有value
127.0.0.1:6379> hvals myhash
1) "word"
11.利用hincrby命令设置字段自增1
127.0.0.1:6379> hset myhash field3 5 (integer) 1 127.0.0.1:6379> hincrby myhash field3 1 (integer) 6 127.0.0.1:6379>
12.利用hincrby key field -1 命令设置字段自减
127.0.0.1:6379> hincrby myhash field3 -1
(integer) 5
127.0.0.1:6379>
13.利用hsetnx 命令完成如果不存在则可以设置,如果存在则不能设置。
127.0.0.1:6379> hsetnx myhash field4 hello (integer) 1 127.0.0.1:6379> hsetnx myhash field4 word (integer) 0 127.0.0.1:6379>
使用场景:
- 分布式锁:存在则加1,不存在则减1。
- 变更数据,尤其是用户信息之类的保存,经常变动信息!
hash更适合于对象的存储。String更适合字符串存储。