zoukankan      html  css  js  c++  java
  • Redis 5.0新功能介绍

    Redis 5.0

    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不会重复存储。

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

    Redis Stream使用演示

    发布消息

    读取消息

    阻塞读取

    发布新消息

    消息返回

    创建消费组

    通过消费组读取消息

    Redis Stream使用场景

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

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

    Zpop

    Sorted Sets 增加了类似List的pop命令:
    ZPOPMAX 命令用于移除并弹出有序集合中分值最大的 count 个元素
    ZPOPMIN 命令用于移除并弹出有序集合中分值最小的 count 个元素
    BZPOPMAX 和 BZPOPMIN 是上述两个命令的阻塞变种.

    CLIENT:

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

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

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

    阿里云Redis 5.0优势:

    1. 新增的stream数据结构,丰富的应用场景和想象空间
    2. 内核的改进和bugfix,使用更健壮
    3. 支持账号体系,根据账号用途赋予相应的权限,更加安全
    4. 审计日志,记录了读写操作、敏感操作(keys、flushall等)、慢日志、管理类命令,供用户查询
    5. 大key分析,基于快照的完整内存分析,更准确,直接输出内存消耗top排行的key
    6. 支持单机和集群版的平滑迁移


    本文作者:stools

    原文链接

    本文为云栖社区原创内容,未经允许不得转载。

  • 相关阅读:
    lucene 大量数据搜索的处理方案
    PC总线带宽与内存带宽的计算
    【JavaP6大纲】Dubbo篇:Dubbo特性?
    【JavaP6大纲】Dubbo篇:Dubbo 支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的?
    【JavaP6大纲】Dubbo篇:如何自己设计一个类似 Dubbo 的 RPC 框架?
    【JavaP6大纲】Dubbo篇:Dubbo SPI 和 Java SPI 区别?
    【JavaP6大纲】Dubbo篇:如何基于 Dubbo 进行服务治理、服务降级、失败重试以及超时重试?
    【JavaP6大纲】Dubbo篇:Dubbo 用到哪些设计模式?
    【JavaP6大纲】Dubbo篇:Dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?
    【JavaP6大纲】MySQL篇:传播行为
  • 原文地址:https://www.cnblogs.com/zhaowei121/p/10790554.html
Copyright © 2011-2022 走看看