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

应用场景

  • 消息队列
相关推荐
蛋蛋的就会顺顺的2 小时前
hot100——矩阵
java·数据结构·算法·leetcode·力扣
红红谈说3 小时前
标签化推送与已读统计怎么做?一次通知链路的工程复盘
数据库·消息推送·数字乡村·集合运算·已读回执·标签体系·写入放大
Shadow(⊙o⊙)3 小时前
MySQL索引
数据库·mysql
学代码的CJY3 小时前
从代码出发理解时间复杂度与空间复杂度
数据结构·算法
ShineWinsu5 小时前
对于Redis:string类型的解析
java·c++·redis·分布式·缓存·面试·string
字节跳动的猫5 小时前
LikeShop 积分体系全链路改造:获取规则、订单抵扣与积分商品兑换二开
运维·数据结构
倔强的石头_5 小时前
多环境配置治理:开发、测试、生产连接信息如何隔离
数据库
杨云龙UP5 小时前
一次数据库查询缓慢故障复盘:大表数据增长、SQL全表扫描导致系统响应异常
linux·运维·服务器·数据库·sql·mysql
上位机妹子5 小时前
C 语言 数组删除指定元素(快慢指针法)
c语言·数据结构·算法
2501_933670796 小时前
2027 应用统计学秋招选岗指南:统计、SQL、业务指标如何对应岗位
数据库·sql