Redis-Redis的常用数据类型之Hash表
Posted 码农飞哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis-Redis的常用数据类型之Hash表相关的知识,希望对你有一定的参考价值。
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。
💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通
❤️ 2. Python爬虫专栏,系统性的学习爬虫的知识点。9.9元买不了吃亏,买不了上当,持续更新中 。python爬虫入门进阶
❤️ 3. Ceph实战,从原理到实战应有尽有。 Ceph实战
❤️ 4. Java高并发编程入门,打卡学习Java高并发。 Java高并发编程入门
😁 5. 社区逛一逛,周周有福利,周周有惊喜。码农飞哥社区,飞跃计划
全网同名【码农飞哥】欢迎关注,个人VX: wei158556
文章目录
简介
Redis hash 是一个键值对集合,
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。它类似于Java里面的Map<String,Object>
。
比如现在需要存储用户信息,用户ID为查找的key,存储的value 用户对象包括姓名,年龄,账号等信息
这里有两种存储方式:
1. 将对象序列化后存储
第一种方式就是将对象序列化成字符串进行存储
这种方式的优点是存储简单,缺点就是当需要修改对象中的某个属性时需要将Redis中拿到的字符串反序列化成该对象,然后修改此对象的值,最后再将修改后的对象序列化后存到Redis中。
2. 存储为hash对象
另外一种方式就是将该对象以hash对象的形式存储到Redis中。通过hash对象的方式存储对象的话,修改单个字段就方便多了。只需要取出需要修改的那个字段的值然后直接进行修改即可。
它实际的存储结构是:
常用命令
- 给
<key>
集合中的<field>
键赋值<value>
hset <key> <field> <value>
- 从
<key1>
集合<field>
取出value
hget <key1> <field>
- 批量设置hash的值
hmset <key1> <field> <value1> <field2> <value2> ....
- 列出指定
<key>
的hash集合的所有field
hkeys <key>
5. 查看哈希表key中,给定域field是否存在
hexists <key1> <field>
- 列出指定
<key>
的hash集合的所有value
hvals <key>
7. 为哈希表key中的域 field 的值加上增量1,-1
hincrby <key> <field> <increment>
- 将哈希表key中的域field的值设置为value,当且仅当域field 不存在
hsetnx <key> <field> <value>
数据结构
Hash类型对应的数据结构有两种:ziplist (压缩列表),hashtable (哈希表)。当field-value长度较短且个数较少时,使用ziplist,否则使用hashtable。
详细可以观看此文 Redis(十)-Redis的数据结构之字典
参考
《Redis的设计与实现》
Redis基本类型及其数据结构
以上是关于Redis-Redis的常用数据类型之Hash表的主要内容,如果未能解决你的问题,请参考以下文章