引言
通过上一章我们知道,可以使用string类型存储csdn专家博客的用户信息,但是较频繁的更新用户信息,String类型操作起来比较笨拙,那么有没有更好的方式呢?我们可以使用redis中的hash数据类型来存储对象类数据。
hash数据类型:典型的对象类数据存储,一个存储空间保存多个键值对数据。
基本操作
- 添加数据
hset key field value
- 获取数据
hget key field #获取指定字段的值
hgetall key #获取所有的字段和值
- 删除数据
hdel key field1 field2 ...
- 添加多个数据
hmset key field1 value1 field2 value2 ... #如果field存在则覆盖,否则创建
- 获取多个数据
hmget key field1 field2 ...
- 获取hash表中字段的数量
hlen key
- 获取hash表中是否存在指定的字段
hexists key field #返回值:1存在,0不存在
扩展操作
- 获取hash表中所有的字段名或字段值
hkeys key #获取hash表中的所有字段名
hvals key #获取hash表中的所有字段值
- 设置指定字段的数值增加指定范围的值
hincrby key field increment #指定hash表中的字段对应的值增加指定的increment(整数)
hincrbyfloat key field increment #指定hash表中的字段对应的值增加指定的increment(float)
hash类型数据操作注意事项
- hash表中的value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象。如果数据未获取到,返回(nil)
- 每个hash可以存储 2^32-1个键值对
- hash类型很贴近对象类的数据存储,并且可以灵活添加删除对象属性,但是hash设计初衷不是为了存储大量对象而设计的,千万不要滥用,否则效率会很低下。
ash类型很贴近对象类的数据存储,并且可以灵活添加删除对象属性,但是hash设计初衷不是为了存储大量对象而设计的,千万不要滥用,否则效率会很低下。 hgetall
操作可以获取所有的属性,但是如果field过多,效率会很低下,所以用到啥取啥,别全部都取。
应用场景
购物车、商家抢购