Redis如何选择数据结构

Redis 常用的数据结构一共有五种:string、hash、list、set、zset(sorted set)。

大多数场景下使用 string 都可以去解决问题。但是,这并不一定是最优的选择。

下面,简单说明下它们各自的适用场景:

  • string:单个的缓存结果,不与其他的 KV 之间有联系
  • hash:一个 Object 包含有很多属性,且这些属性都需要单独存储。注意:这种情况不要使用 string,因为 string 会占据更多的内存
  • list:一个 Object 包含很多数据,且这些数据允许重复、要求有顺序性
  • set:一个 Object 包含很多数据,不要求数据有顺序,但是不允许重复
  • zset:一个 Object 包含很多数据,且这些数据自身还包含一个权重值,可以利用这个权重值来排序

另外Redis还提供了几种的扩展类型,如下:

  • HyperLogLog:适合用于基数统计,比如PV,UV的统计,存在误差问题,不适合精确统计。
  • BitMap:适合二值状态的统计,比如签到打卡,要么打卡,要么未打卡等。
相关推荐
Craaaayon1 小时前
如何选择两种缓存更新策略(写缓存+异步写库;写数据库+异步更新缓存)
java·数据库·redis·后端·缓存·mybatis
少许极端1 小时前
算法奇妙屋(十)-队列+宽搜(BFS)
java·数据结构·算法·bfs·宽度优先·队列
异步的告白3 小时前
C语言-数据结构-1-动态数组
c语言·数据结构·c++
foxbillcsdn3 小时前
《Redis应用实例》Java实现(28):栈
java·redis
Miraitowa_cheems5 小时前
LeetCode算法日记 - Day 98: 分割回文串 II
数据结构·算法·leetcode·深度优先·动态规划
立志成为大牛的小牛5 小时前
数据结构——三十九、顺序查找(王道408)
数据结构·学习·程序人生·考研·算法
星辰_mya5 小时前
亲爱的redis你好
redis
2301_807997385 小时前
代码随想录-day30
数据结构·c++·算法·leetcode
ゞ 正在缓冲99%…6 小时前
leetcode1771.由子序列构造的最长回文串长度
数据结构·算法·leetcode
Mr.H01277 小时前
快速排序的常见构思
数据结构·算法