首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Redis 5.0新功能介绍

Redis 5.0新功能介绍

作者头像
张哥编程
发布2024-12-19 11:18:35
发布2024-12-19 11:18:35
3260
举报
文章被收录于专栏:云计算linux云计算linux

Redis5.0版是Redis产品的重大版本发布,我们先看一下它的最新特点:

  1. 新的流数据类型(Stream data type) https://redis.io/topics/streams-intro
  2. 新的 Redis 模块 API:定时器、集群和字典 API(Timers, Cluster and Dictionary APIs)
  3. RDB 增加 LFU 和 LRU 信息
  4. 集群管理器从 Ruby (redis-trib.rb) 移植到了redis-cli 中的 C 语言代码
  5. 新的有序集合(sorted set)命令:ZPOPMIN/MAX 和阻塞变体(blocking variants)
  6. 升级 Active defragmentation 至 v2 版本
  7. 增强 HyperLogLog 的实现
  8. 更好的内存统计报告
  9. 许多包含子命令的命令现在都有一个 HELP 子命令
  10. 客户端频繁连接和断开连接时,性能表现更好
  11. 许多错误修复和其他方面的改进
  12. 升级 Jemalloc 至 5.1 版本
  13. 引入 CLIENT UNBLOCK 和 CLIENT ID
  14. 新增 LOLWUT 命令 http://antirez.com/news/123
  15. 在不存在需要保持向后兼容性的地方,弃用 "slave" 术语
  16. 网络层中的差异优化
  17. Lua 相关的改进
  18. 引入动态的 HZ(Dynamic HZ) 以平衡空闲 CPU 使用率和响应性
  19. 对 Redis 核心代码进行了重构并在许多方面进行了改进

Redis Stream

Redis stream本质上是个时序数据结构,具有如下特点:

  1. 每条记录是结构化、可扩展的对
  2. 每条记录在日志中有唯一标识,标识中包含了时间戳信息,单调递增
  3. 可以根据需要自动清理历史记录
  4. 保存在内存中,支持持久化

底层是修改版的radix tree,每个node存储了一个listpack。listpack是一块连续的内存block,用于序列化msg entry及相关元信息,如msg ID,使用了多种编码,用于节省内存,是ziplist的升级版。如果XADD每次添加的对中的field是一样的,那么field不会重复存储。

Redis 5.0新功能介绍_redis
Redis 5.0新功能介绍_redis

内存友好,对于简单的十几~几十字节的msg,100MB内存可以存储数百万个。listpack在内存和disk上的存储结构是一样的,所以stream数据在做RDB时效率非常高,0.3s,500w entries。

Redis Stream使用演示

Redis 5.0新功能介绍_客户端_02
Redis 5.0新功能介绍_客户端_02

发布消息

Redis 5.0新功能介绍_redis5.0_03
Redis 5.0新功能介绍_redis5.0_03

读取消息

Redis 5.0新功能介绍_有序集合_04
Redis 5.0新功能介绍_有序集合_04

阻塞读取

Redis 5.0新功能介绍_有序集合_05
Redis 5.0新功能介绍_有序集合_05

发布新消息

Redis 5.0新功能介绍_redis_06
Redis 5.0新功能介绍_redis_06

消息返回

Redis 5.0新功能介绍_redis5.0_07
Redis 5.0新功能介绍_redis5.0_07

创建消费组

Redis 5.0新功能介绍_redis_08
Redis 5.0新功能介绍_redis_08

通过消费组读取消息

Redis 5.0新功能介绍_redis_09
Redis 5.0新功能介绍_redis_09
Redis 5.0新功能介绍_redis_10
Redis 5.0新功能介绍_redis_10

Redis Stream使用场景

可用作时通信等,大数据分析,异地数据备份等

Redis 5.0新功能介绍_redis_11
Redis 5.0新功能介绍_redis_11

客户端可以平滑扩展,提高处理能力

Redis 5.0新功能介绍_客户端_12
Redis 5.0新功能介绍_客户端_12

Zpop

Sorted Sets 增加了类似List的pop命令:

ZPOPMAX 命令用于移除并弹出有序集合中分值最大的 count 个元素

ZPOPMIN 命令用于移除并弹出有序集合中分值最小的 count 个元素

BZPOPMAX 和 BZPOPMIN 是上述两个命令的阻塞变种.

Redis 5.0新功能介绍_客户端_13
Redis 5.0新功能介绍_客户端_13

CLIENT:

Client id返回当前连接的ID,每个ID符合如下约束:

  1. 永不重复,可以判断当前链接是否断链过
  2. 单调递增,可以判断不同链接的接入顺序

Client unblock:

当客户端因为执行具有阻塞功能的命令(如BRPOP、XREAD或者WAIT)被阻塞时,该命令可以通过其他连接解除客户端的阻塞

Redis 5.0新功能介绍_redis5.0_14
Redis 5.0新功能介绍_redis5.0_14
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Redis Stream
  • Redis Stream使用场景
  • Zpop
  • CLIENT:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档