十二、Redis五大数据类型之四Hash
hash类型
1.hash类型数据的基本操作
添加 / 修改数据:hset key field value
获取数据:hget key field
| hgetall key
删除数据:hdel key field field1
添加 / 修改多个数据:hmset key field value field1 value1
获取多个数据:hmget key field field1
获取表中字段数量:hlen key
获取表中是否存在某个字段:hexists key field
2. hash类型数据的扩展操作
获取hash表中所有的字段值:hkeys key
获取hash表中所有的字段值:hvals key
设置指定字段的数值增加指定范围的值:hincrby key field increment
| hincrbyfloat key field increment
3. hash业务场景之购物车
此图来源于网络非自制,只是模拟购物车场景
在上图中,我们可以看到购物车里的信息,下来咱们使用redis来对这个购物车的实现。
4.hash类型的操作配置
Map集合,key-map 时这个值是一个map集合! 本质和String类型没有太大区别,还是一个简单的key-vlaue!
hash变更的数据 user name age,尤其是是用户信息之类的,经常变动的信息! hash 更适合于对象的存储,String更加适合字符串存储!
##########################################################################
127.0.0.1:6379> hset myhash field1 sj # set一个具体 key-value
127.0.0.1:6379> hget myhash field1 # 获取一个字段值
127.0.0.1:6379> hmset myhash field1 hello field2 world # set多个 key-vlaue
127.0.0.1:6379> hmget myhash field1 field2 # 获取多个字段值
127.0.0.1:6379> hgetall myhash # 获取全部的数据
127.0.0.1:6379> hdel myhash field1 # 删除hash指定key字段!对应的value值也就消失了!
127.0.0.1:6379> hgetall myhash
##########################################################################
hlen127.0.0.1:6379> flushdb
127.0.0.1:6379> hmset myhash field1 hello field2 world
127.0.0.1:6379> HGETALL myhash
127.0.0.1:6379> hlen myhash # 获取hash表的字段数量!
##########################################################################
127.0.0.1:6379> HEXISTS myhash field1 # 判断hash中指定字段是否存在!
127.0.0.1:6379> HEXISTS myhash field3
##########################################################################
# 只获得所有field
# 只获得所有value
127.0.0.1:6379> hkeys myhash # 只获得所有field127.0.0.1:6379> hvals myhash # 只获得所有value
##########################################################################
incr decr
127.0.0.1:6379> hset myhash field3 5 #指定增量!
127.0.0.1:6379> HINCRBY myhash field3 1
127.0.0.1:6379> HINCRBY myhash field3 -1
127.0.0.1:6379> hsetnx myhash field4 hello # 如果不存在则可以设置
127.0.0.1:6379> hsetnx myhash field4 world # 如果存在则不能设置