美文网首页
Redis常见数据类型以及使用场景选择

Redis常见数据类型以及使用场景选择

作者: one_8274 | 来源:发表于2024-06-17 17:39 被阅读0次

一. 底层数据结构

数据类型 实现数据结构
String SDS(动态字符串)
List LinkedList(双向链表)/ZipList(压缩列表)/QuickList(快速列表)
Hash Dict、ZipList
Set Dict、Intset(整数集合)
Zset ZipList、SkipList(跳表)

数据类型与使用场景

1. String

1.1 类型说明

1.2 常用命令

image.png

1.3 基本演示

1.4 使用场景

    1. 缓存,热点数据
    1. 分布式数据共享(多个应用之间共享)
    1. 分布式锁(setnx方法,只有不存在时才能添加成功)
    1. 全局ID
    1. 计数器
    1. 限流(int类型)INCR方法

2. Hash

2.1 类型说明

2.2 常用命令

image.png

2.3 基本演示

2.4 使用场景

  • 涉及多个key的话,可以考虑hash存储,如用户信息,购物车信息
  • string可以做的,hash都可以做

3. Set

3.1 类型说明

3.2 常用命令

image.png

3.3 基本演示

3.4 使用场景

    1. 抽奖(随机获取元素)
    1. 点赞、签到、打卡
    1. 商品标签
    1. 商品筛选

4. List

4.1 类型说明

4.2 常用命令

image.png

4.3 基本演示

4.4 使用场景

    1. 消息列表(公告列表,活动列表,评论列表等)
    1. 队列/栈

5. ZSet

5.1 类型说明

5.2 常用命令

image.png

5.3 基本演示

5.4 使用场景

6. Bitmap(位图)

6.1 类型说明

  • Bitmap 不是 Redis 中的实际数据类型,而是在 String 类型上定义的一组面向位的操作,将其视为位向量。由于字符串是二进制安全的块,且最大长度为 512 MB,它们适合用于设置最多 2^32 个不同的位。

6.2 常用命令

常用命令 备注
SETBIT key offset value 设置指定 offset 位置的值
GETBIT key offset 获取指定 offset 位置的值
BITCOUNT key start end 获取 start 和 end 之间值为 1 的元素个数
BITOP operation destkey key1 key2 ... 对一个或多个 Bitmap 进行运算,可用运算符有 AND, OR, XOR 以及 NOT

6.3 基本演示

6.4 使用场景

    1. 对一个或多个key 求逻辑或/逻辑并/逻辑异或/逻辑非
    1. 需要保存状态信息(0/1 即可表示)的场景
    • 如 用户签到,活跃用户,用户行为统计(是否点击)

7. HyperLogLog

7.1 类型说明

  • HyperLogLog 是一种有名的基数计数概率算法 ,基于 LogLog Counting(LLC)优化改进得来,并不是 Redis 特有的,Redis 只是实现了这个算法并提供了一些开箱即用的 API。Redis 提供的 HyperLogLog 占用空间非常非常小,只需要 12k 的空间就能存储接近2^64个不同元素。并且,Redis 对 HyperLogLog 的存储结构做了优化,采用两种方式计数:
    • 稀疏矩阵:计数较少的时候,占用空间很小。
    • 稠密矩阵:计数达到某个阈值的时候,占用 12k 的空间。
  • 基数结果并不精确,存在一定的误差(标准误差为0.81%)

7.2 常用命令

常用命令 备注
PFADD key element1 element2 ... 添加一个或多个元素到 HyperLogLog 中
PFCOUNT key1 key2 获取一个或者多个 HyperLogLog 的唯一计数
PFMERGE destkey sourcekey1 sourcekey2 ... 将多个 HyperLogLog 合并到 destkey 中,destkey 会结合多个源,算出对应的唯一计数

7.3 基本演示

7.4 使用场景

  • 数量量巨大(百万、千万级别以上)的计数场景(热门网站每日/每周/每月访问 ip 数统计、热门帖子 uv 统计)

8. GEO

8.1 类型说明

  • Geospatial index(地理空间索引,简称 GEO) 主要用于存储地理位置信息,基于 Sorted Set 实现。

8.2 常用命令

常用命令 备注

8.3 基本演示

8.4 使用场景

  • 附近的人

9. Sreams

9.1 类型说明

  • 大于等于5.0版本才有的数据类型

9.2 常用命令

常用命令 备注

9.3 基本演示

9.4 使用场景

  • 支持多播的可持久化消息队列,用户实现发布订阅功能,参考kafka设计

相关文章

  • 18 redis 总结

    1,redis 应用场景: 2, 选择配置文件执行server redis 数据类型以及基本操作:Redis一共...

  • Redis总结

    一、数据类型 二、使用场景 二、redis缓存使用总结 三、redis缓存常见问题 四、布隆过滤器的方式解决缓存穿透问题

  • redis 学习笔记

    这篇 redis 学习笔记主要介绍 redis 的数据结构和数据类型,并讨论数据结构的选择以及应用场景的优化。 r...

  • 《Redis实战》

    阅读本书可以让你学到很多小技巧、小窍门以及使用Redis解决某些常见问题的方法。 redis五大数据类型 stri...

  • redis数据类型常见使用场景

    String不必说,是redis最常用的数据类型,就是普通的键值存储。 List的使用场景,经常用于列表式存储,且...

  • Redis 数据结构与内存管理策略(上)

    Redis 数据类型特点与使用场景 redis为我们提供了5种数据类型,基本上我们使用频率最高的就是string,...

  • Redis的基本使用(-) 分布式锁

    Redis的基本使用(-) 分布式锁 1、Redis做分布式锁 分布式锁是Redis较常见的使用场景。 问题场景:...

  • redis常用数据类型以及使用场景

    redis常用数据类型: string hash list set zset 本文使用stringRedisTem...

  • redis 新用法

    redis五大基本数据类型的使用场景,除了string,hash,list,set,zset之外,redis还提供...

  • Redis还可以做哪些事?

    redis五大基本数据类型的使用场景,除了string,hash,list,set,zset之外,redis还提供...

网友评论

      本文标题:Redis常见数据类型以及使用场景选择

      本文链接:https://www.haomeiwen.com/subject/fguxcjtx.html