《程序猿之Redis缓存实战 · 哈希类型》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗
🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍
文章目录
哈希(Hash)
【结构简介】
1、Hash类型,也叫散列,其value是一个无序字典,类似于Java中的HashMap结构。
2、Redis 中 的 Hash 是一个 String 类型的 field-value(键值对) 的映射表,特别适合用于存储对象,我们也可以直接修改对象中的某些字段值。
【补充:与String比较】
String 结构如果 Value 要存储对象,可以将对象序列化为JSON字符串后存储。当我们要修改对象的某个属性值的时候很不方便,必须取出来,转换JSON对象,修改了,再存进去,或者直接整个覆盖。
Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD。
【应用场景】
1、对象数据存储
举例:用户信息、商品信息、文章信息。
命令:HSET(设置一个/多个字段的值)、HGET(获取单个字段的值)、HMGET(获取多个字段的值)。
点评:如果从数据库查到的实体对象,作为缓存查询,又较少修改的话,直接String类可能更合适。
2、购物车功能
命令:HSET (加购)、HINCR(加数量)、HLEN(获取数量)、HDEL(删除商品)、HGETALL(获取商品)。
点评:算是一个特定场景,购物车的数据也不是很重要,放缓存也合适。
3、双Key的场景
举例:文章的用户评论,某个文章ID作为Key,用户ID作为H-Key,评论内容作为H-Value。
点评:实战中更经常是这类型使用哈希,还是挺多适用的。
【基本指令】
HSET key field value:将哈希表key中的字段field的值设为value
HMSET key field1 value1 [ field2 value2 ]:同时将多个field-value(域-值)对设置到哈希表key中
HVALS key:获取哈希表中所有的值
HDEL key field2 [ field2 ]:删除一个或者多个哈希表字段
HEXISTS key field:查看哈希表中key,指定的字段是否存在
HGETALL key:获取在哈希表中指定key的所有字段和值
----------
HSET key field value添加或者修改hash类型key的field的值
HGET key field获取一个hash类型key的field的值
HMSET批量添加多个hash类型key的field的值
HMGET批量获取多个hash类型key的field的值
HGETALL获取一个hash类型的key中的所有的field和value
HKEYS获取一个hash类型的key中的所有的field
HINCRBY让一个hash类型key的字段值自增并指定步长
HSETNX添加一个hash类型的key的field值,前提是这个field不存在,否则不执行
● HVALS key:获取哈希表中所有的值
● HSET key field value:将哈希表key中的字段field的值设为value
● HGET key field:获取存储在哈希表中指定字段的值
● HSETNX key field value:只有在字段field不存在时,设置哈希表字段的值
● HDEL key field2 [ field2 ]:删除一个或者多个哈希表字段
● HEXISTS key field:查看哈希表中key,指定的字段是否存在
● HGETALL key:获取在哈希表中指定key的所有字段和值
---------------------------------------------------分隔线---------------------------------------------------
● HINCRBY key field increment:为哈希表key中指定字段的整数值添加上增量increment
● HKEYS:获取所有哈希表中的字段
● HLEN key:获取哈希表中字段的数量
● HMGET key field1 [ field2 ]:获取所有给定字段的值
● HMSET key field1 value1 [ field2 value2 ]:同时将多个field-value(域-值)对设置到哈希表key中
● HSCAN key cursor [ MATCH pattem ] [ COUNT count ]:迭代哈希表中的键值对
● HINCRBYFLOAT key field increment:为哈希表key中指定字段的浮点数值添加上增量increment
【代码示例】
原文地址:https://blog.csdn.net/syb513812/article/details/142645932
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!