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
  • 数据量较小时,采用压缩链表
  • 否则采用快速链表

应用场景

  • 消息队列
相关推荐
思成Codes7 分钟前
数据结构: 权值线段树——线段树系列(提供模板)
数据结构·算法
笨手笨脚の8 分钟前
链表与LinkedList
java·数据结构·链表·linkedlist
历程里程碑12 分钟前
破解三数之和:双指针高效解法
c语言·数据结构·c++·经验分享·算法·leetcode·排序算法
小智RE0-走在路上14 分钟前
Python学习笔记(13) --Mysql,Python关联数据库
数据库·python·学习
AI题库23 分钟前
NLTK自然语言处理实战:1.3 NLTK核心数据结构
数据结构·人工智能·自然语言处理
x66ccff23 分钟前
Claude Code 安装方法
android·java·数据库
嘟嘟w25 分钟前
MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
数据库·mysql
JH灰色31 分钟前
【大模型】-LlamaIndex框架(与LangChain区别)
数据库·langchain
一个专注写代码的程序媛31 分钟前
流式读取数据
java·数据结构·算法
Halo_tjn33 分钟前
Java Set集合知识点
java·开发语言·数据结构·windows·算法