Redis 五种数据类型(Hash)

Redis 五种数据类型(Hash)

简介:

  Redis Hash 是一个String类型的 field 和 value的映射表,hash 特别适合用于存储对象。Redis中每个 hash 可以存储 2的32次方减一个键值对(40多亿),可以看成具有KEY和VALUE的map容器,该类型非常适合于存储对象的信息;如:unames,upass、age等。该类型的数据仅占用很少的磁盘空间(相比JSON);


Redis hash命令

序号 命令及描述
1 HDEL key field1 field2] 删除一个或多个哈希表字段
2 HEXISTS key field 查看哈希表 key 中,指定的字段是否存在。
3 HGET key field 获取存储在哈希表中指定字段的值。
4 HGETALL key 获取在哈希表中指定 key 的所有字段和值
5 HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment 。
6 HINCRBYFLOAT key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
7 HKEYS key 获取所有哈希表中的字段
8 HLEN key 获取哈希表中字段的数量
9 [HMGET key field1 field2] 获取所有给定字段的值
10 [HMSET key field1 value1 field2 value2 ] 同时将多个 field-value (域-值)对设置到哈希表 key 中。
11 HSET key field value 将哈希表 key 中的字段 field 的值设为 value 。
12 HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值。
13 HVALS key 获取哈希表中所有值
14 HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的键值对。

应用场景:

Hash的应用场景:(存储一个用户信息对象数据)

  1. 常用于存储一个对象;

  2. 为什么不用String存储一个对象呢?

    Hash 是最接近关系型数据结构的数据类型,可以将数据库一条记录或程序中一个对象转换成 hashMap 存放在redis中;

    用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key / value结构来存储,主要有以下2中存储方式:

    1. 第一种方式将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储,这种方式的缺点是,增加了序列化 / 反序列化的开销,并且在需要修改其中一项信息时,需要把整个对象取回,并且修改操作需要对并发进行保护,引入CAS等复杂问题;

    2. 第二种方式是这个用户信息对象有多少成员就存多少个key-value对,用户ID对应属性的名称作为唯一标识来取得属性的值,虽然省去了序列化开销和并发问题,但是用户ID为重复存储,如果存在大量这样的数据,内存浪费还是非常可怕的;

      扫描二维码关注公众号,回复: 11386780 查看本文章

    总结:

    Redis 提供的Hash很好的解决了这个问题,Redis的Hash实际是内部存储的Value为一个HashMap,并提供直接存取这个Map的接口;

猜你喜欢

转载自www.cnblogs.com/lililixuefei/p/13204743.html
今日推荐