Redis 存储用户信息时 string 和 hash 的对比


在 redis 中,string 类型和 hash 类型,都可以用来存储对象信息(结构体数据)。

那么,string 和 hash 有什么区别?该如何抉择?

既然 string 可以实现相同的功能,为何还要用 hash 呢?在 redis 官网可看到优先使用 hash 的字眼,主要是基于以下三个因素:内存占用率时间复杂度使用的简便性

假设用户表 user 有三个字段 id, name 和 age。

string 类型

第一种存储方式:单独存储用户的每个属性(字段)

127.0.0.1:6379> set user:1:name jack
OK
127.0.0.1:6379> set user:1:age 20
OK
  • 优点:简单直观,便于对用户的每个属性进行查询和更新。
  • 缺点:占用了更多的 key 和内存资源,用户的属性过于分散。

在生产环境中,一般不会采用这种方式

第二种存储方式:先将整个用户信息(对象或数组)转换为 json 字符串,然后再存储。

set user:1 json_str
  • 优点:占用的 key 和内存资源少。
  • 缺点:操作比较麻烦,每次都要使用序列化和反序列化,有一定开销。而且不便于单独操作用户的某个属性。

在生产环境中,可以采用这种方式。

hash 类型

hash 可以对结构体数据的每个属性(字段)进行单独存储和访问。

采用 hash 存储用户信息:

127.0.0.1:6379> hmset user:1 name jack age 20
OK

127.0.0.1:6379> hget user:1 name
"jack"
127.0.0.1:6379> hgetall user:1
1) "name"
2) "jack"
3) "age"
4) "20"
  • 优点:简单直观,便于对用户的每个属性和整体信息进行查询和更新。
  • 缺点:和 string 比,占用的内存稍微多一点。

总结:推荐优先使用 hash 来存储用户信息

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值