Redis 基础详解

码农日常1个月前更新 Trunks
565 0 0

2、Hash类型

为了区别与 Redis 的键值对的称呼,Hash 中的键称为 field,而 key 为 Redis 的键

  • 新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息
  • 需要的内存结构:一个存储空间保存多少个键值对数据
  • Hash 类型:底层使用哈希表结构实现数据存储

Hash 常用操作

Redis
// Hash常用操作
// 1、存储一个哈希表key的键值(将哈希表key的字段field的值设为value)
HSET key field value
// 2、存储一个不存在的哈希表key的键值(field不存在时,设置哈希表字段的值)
HSETNX key field value
// 3、在一个哈希表key中存储多个键值对
HMSET key field value [field value ...]
// 4、获取哈希表key对应的field键值
HGET key field
// 5、批量获取哈希表key中多个field键值
HMGET key field [field ...]
// 6、删除哈希表key中的field键值(删除指定的field)
HDEL key field [field ...]
// 删除整个hash
DEL key
// 7、返回哈希表key中field的数量
HLEN key
// 8、返回哈希表key中所有的键值
HGETALL key
// 9、为哈希表key中field键的值加上增量increment
HINCRBY key field increment
// 10、有多少个元素
hlen key

其他操作

Redis
// 对象缓存
HMSET user {userId}:name zs {userId}:balance 1888
HMSET user 1:name zs 1:balance 1888
HMGET user 1:name 1:balance

适用场景

场景 1、Hash 实现抢购,限购发放优惠券,激活码等

解决方案:

  • 以商家id作为key
  • 将参与抢购的商品id作为field
  • 将参与抢购的商品数量作为对应的value
  • 抢购时使用这样的方式控制产品数量

场景 2、电商购物车

1、以用户 id 作为 key
2、商品 id 为 field
3、商品数量为 value

购物车操作

1、添加商品 -> hset cart:1001 10006 1
2、增加数量 -> hincrby cart:1001 10006 1
3、商品总数 -> hlen cart:1001
4、删除商品 -> hdel cart:1001 10006
5、获取购物车所有商品 -> hgetall cart:1001

优点:

同类数据归类整合存储,方便数据管理
相比 String 操作消耗内存与 CPU 更小
相比 String 存储更节省空间

缺点:

过期功能不能使用 field 上,只能用在 key 上
Redis 集群架构下不适合大规模使用( 因为某个 key 下是所有 hash 都在一个节点上,可能导致数据倾斜,可以采用拆分 key 的方式 )

Redis 基础详解

© 版权声明

相关文章

暂无评论

暂无评论...