网站首页 > 技术文章 正文
Hash类型
简介
Hash类型是String类型的field和value的映射表,或者说是一个string集合, hash特别适合用于存储对象,相比教而言,将一个对象类型存储在Hash类型要存储在String类型里占用更少的内存空间,并对整个对象的存取。可以看成具有KEY和VALUE的MAP容器,该类型非常适合于存储值对象的信息,如: uname,upass,age等。该类型的数据仅占用很少的磁盘空间(相比于JSON)。Redis 中每个 hash 可以存储 2的32次方 - 1 键值对 (48多亿)
Hash命令
常用命令
赋值语法:
:为指定的KEY,设定FILD/VALUEHSET KEY FIELD VALUEHMSET KEY FIELD VALUE [FIELD1,VALUE1]- :同时将多 field-value (域-值)对设置到哈希表 key 中
加入我存入一个user对象id=1,name = lisi age =18
hset user:1 id 1 name lisi age 18
取值语法:
HGET KEY FIELD:获取存储在HASH中的值,根据FIELD得到VALUEHMGET KEY fieldlfield11:获取key所有给定字段的值HGETALL KEY:返回HASH表中所有的字段和值
HKEYS KEY:获取所有哈希表中的字段
HLEN KEY:获取哈希表中字段的数量
获取一个字段
hget user:1 name
获取多个字段用hmget 比如获取name和age
hmget user:1 name age
获取全部字段 hgetall
hgetall user:1
获取hash表中获取所有字段
hkeys user:1
删除字段 hdel
hdel user:1 remark
自增 hincrby 比如给年龄自增1
hincrby user:1 age 1
应用场景
哈希的应用场景: (存储一个用户信息对象数据)
常用于存储一个对象/分布式Session1
2、为什么不用字符串存储一个对象?
哈希是最接近关系数据库结构的数据类型,可以将数据库一条记录或程序中一个对象转换成哈希图存放在红包中。用户标识为查找的键,存储的值用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储,主要有以下2 种存储方式.
第一种方式将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储,这种方式的缺点是,增加了序列化/反序列化的开销,并且在需要修改其中一项信息时,需要把整个对象取回,并且修改操作需要对并发进行保护,引入CAS等复杂问
题。第二种方法是这个用户信息对象有多少成员就存成多少个键值对儿,用用户ID+对应属性的名称作为唯标识来取得对应属性的值,虽然省去了序列化开销和并发问题,但是用户编号为重复存储,如果存在大量这样的数据,内存浪费还是非常可观的。
总结:
红包提供的哈希很好的解决了这个问题,红包的哈希实际是内部存储的值为一个哈希映射,
并提供了直接存取这个Map成员的接口
- 上一篇: 流行算法:哈希算法 - 比特币就靠她了
- 下一篇: 小姐姐用 10 张动图,教会你 Git 命令使用
猜你喜欢
- 2025-01-10 哈希CODmaxII&CODmax plus sc化学需氧量在线自动监测仪常见问题
- 2025-01-10 太可怕了,大数据下,利用了多少人的欲望,能不能说是诈骗?
- 2025-01-10 哈希Amtax NA8000氨氮在线自动监测仪试剂和标准溶液配制方法分享
- 2025-01-10 哈希表原理及应用
- 2025-01-10 Pinot 架构分析
- 2025-01-10 面试官:高并发下HashMap的死循环是怎么形成的?
- 2025-01-10 小姐姐用 10 张动图,教会你 Git 命令使用
- 2025-01-10 流行算法:哈希算法 - 比特币就靠她了
- 2025-01-10 不用学C4D了?能把2D照片秒变3D场景的黑科技正式发布
- 2025-01-10 WinRAR实用技巧:一个设置,可能让多文件压缩变得更小
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)