Redis基本数据结构

String

数据结构

  • 如果存储的是整型,直接把值存储在RedisObject里面, 数据类型为int。
  • 如果存储的数据量不大(早期版本,32字节),采用动态字符串SDS存储,存储类型是embstr。
  • 超过32字节,采用动态字符串SDS进行存储,存储类型是raw。

embstr和raw类型的区别在于,RedisObject和embstr是连续存储的,只需要访存一次,而raw是分开存储的,需要访存两次。

应用场景

  • 共享session或者token
  • incr 计数
  • setnx 实现分布式锁

Hash

数据结构

  • 数据量不大时采用压缩列表进行存储
  • 否则采用与hashmap类型的存储结构:数组+链表

与HashMap的存储结构有何不同?

  • Redis的Hash字典的值只能存储字符串
  • Redis的Hash在rehash时采用渐进式Hash

应用场景

  • 缓存对象
  • 存储商品信息

Set

数据结构

  • 无序唯一
  • 采用整数集合
  • Hash表

应用场景

  • 点赞
  • 共同关注

Zset

数据结构

  • 数据量较小时,采用压缩列表
  • 采用跳表存储

应用场景

  • 排序

List

数据结构

  • 相当于Java的LinkedList
  • 数据量较小时,采用压缩链表
  • 否则采用快速链表

应用场景

  • 消息队列
相关推荐
Amarantine、沐风倩✨10 分钟前
列表接口严禁嵌套 LISTAGG + REGEXP:一次 mission_label 性能事故复盘
java·数据库·sql
好好研究19 分钟前
MyBatis - Plus(二)常见注解 + 常见配置
数据库·spring boot·mybatis·mybatis plus
666HZ66627 分钟前
数据结构4.0 串
c语言·数据结构·算法
PD我是你的真爱粉33 分钟前
MySQL基础-DQL语句与多表查询
数据库·mysql
C#程序员一枚39 分钟前
SqlServer如何创建全文索引
数据库·sqlserver
DBA小马哥1 小时前
时序数据库迁移实践指南:面向业务连续性的技术演进路径
数据库·时序数据库·dba
生命因何探索1 小时前
Redis-持久化
数据库·redis·缓存
yjb.gz2 小时前
Shell实现数据库巡检
数据库
你撅嘴真丑2 小时前
蛇形填充数组 与 查找最接近的元素
数据结构·c++·算法
福大大架构师每日一题2 小时前
redis 8.4.1 正式发布:安全升级、性能强化与多模块重大修复详解
数据库·redis·安全