Skip to content
作者:daily5am创建:-更新:-
字数:预计阅读: 分钟访问量:--

Redis数据结构和使用场景

AI生成声明: 本文档由AI辅助生成,旨在提供Redis数据结构和使用场景的完整指南。

Redis提供了丰富的数据结构,每种数据结构都有其特定的使用场景。

核心问题

Redis支持的数据结构

  1. String(字符串)

    • 最基本的数据类型
    • 可以存储字符串、整数、浮点数
    • 最大512MB
  2. Hash(哈希)

    • 键值对集合
    • 适合存储对象
    • 字段数量最多2^32-1
  3. List(列表)

    • 有序的字符串列表
    • 支持双向操作
    • 最多2^32-1个元素
  4. Set(集合)

    • 无序的字符串集合
    • 不允许重复元素
    • 支持集合运算
  5. Sorted Set(有序集合)

    • 有序的字符串集合
    • 每个元素关联一个分数
    • 按分数排序
  6. Bitmaps(位图)

    • 基于String的位操作
    • 节省内存
    • 适合统计场景
  7. HyperLogLog

    • 用于基数统计
    • 占用空间小
    • 有误差但可接受
  8. Streams(流)

    • Redis 5.0新增
    • 类似消息队列
    • 支持消费者组

使用场景

String使用场景

  • 缓存:存储简单的键值对
  • 计数器:INCR/DECR操作
  • 分布式锁:SET NX EX
  • Session存储:用户会话信息

Hash使用场景

  • 用户信息:存储用户对象
  • 购物车:商品ID和数量
  • 配置信息:系统配置参数

List使用场景

  • 消息队列:LPUSH/RPOP
  • 最新列表:LTRIM保留最新N条
  • 文章列表:分页查询

Set使用场景

  • 标签系统:文章标签
  • 共同关注:SINTER求交集
  • 去重:自动去重

Sorted Set使用场景

  • 排行榜:按分数排序
  • 延时队列:按时间排序
  • 范围查询:ZRANGE操作

常见面试题

  1. Redis为什么这么快?

    • 基于内存操作
    • 单线程避免上下文切换
    • 高效的数据结构
    • I/O多路复用
  2. 如何选择合适的数据结构?

    • 根据业务需求选择
    • 考虑内存占用
    • 考虑操作复杂度
  3. Redis数据结构的底层实现?

    • String:SDS(简单动态字符串)
    • Hash:ziplist或hashtable
    • List:ziplist或linkedlist
    • Set:intset或hashtable
    • Sorted Set:ziplist或skiplist