Redis 核心技术与实战
蒋德钧
中科院计算所副研究员
79224 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 53 讲
开篇词 (1讲)
实践篇 (28讲)
Redis 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

39 | Redis 6.0的新特性:多线程、客户端缓存与安全

你好,我是蒋德钧。
Redis 官方在今年 5 月份正式推出了 6.0 版本,这个版本中有很多的新特性。所以,6.0 刚刚推出,就受到了业界的广泛关注。
所以,在课程的最后,我特意安排了这节课,想来和你聊聊 Redis 6.0 中的几个关键新特性,分别是面向网络处理的多 IO 线程、客户端缓存、细粒度的权限控制,以及 RESP 3 协议的使用。
其中,面向网络处理的多 IO 线程可以提高网络请求处理的速度,而客户端缓存可以让应用直接在客户端本地读取数据,这两个特性可以提升 Redis 的性能。除此之外,细粒度权限控制让 Redis 可以按照命令粒度控制不同用户的访问权限,加强了 Redis 的安全保护。RESP 3 协议则增强客户端的功能,可以让应用更加方便地使用 Redis 的不同数据类型。
只有详细掌握了这些特性的原理,你才能更好地判断是否使用 6.0 版本。如果你已经在使用 6.0 了,也可以看看怎么才能用得更好,少踩坑。
首先,我们来了解下 6.0 版本中新出的多线程特性。

从单线程处理网络请求到多线程处理

在 Redis 6.0 中,非常受关注的第一个新特性就是多线程。这是因为,Redis 一直被大家熟知的就是它的单线程架构,虽然有些命令操作可以用后台线程或子进程执行(比如数据删除、快照生成、AOF 重写),但是,从网络 IO 处理到实际的读写命令处理,都是由单个线程完成的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Redis 核心技术与实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(36)

  • 最新
  • 精选
  • Geek_04f704
    老师,redis支持多线程后,怎么实现单命令操作原子性的?

    作者回复: Redis 6.0中的多线程只是指,在客户端请求接收和解析,以及请求后的数据通过网络返回给客户端时,使用了多线程。而命令请求本身的数据读写操作还是由单线程来完成的,所以仍然可以保证单命令操作的原子性。

    4
    23
  • 6.0的权限细粒度控制对我们很有用,以前多个微服务共享同一个redis集群,权限没法隔离,现在可以控制不同的服务使用不同的key前缀,从而很好的隔离了服务,可以有效避免误操作,或者一个服务的bug影响到所有服务。

    作者回复: 这是个很好的用例场景!

    13
  • 🌾🌾🌾小麦🌾🌾🌾
    请问老师客户端缓存端缓存会不会导致缓存污染及内存泄露问题?

    作者回复: 我们说的缓存污染一般是指缓存系统里面的数据不被访问,但是由于缓存策略没有及时淘汰,又滞留在缓存中,导致缓存空间被占用,但是又不服务访问请求,造成了污染。 客户端缓存的主要问题是要和缓存系统中的数据保存一致,也就是说缓存系统中的数据被更新了,客户端需要及时做invalidation操作,避免应用在客户端缓存中读到旧的缓存数据。 内存泄露一般是内存没有正确回收导致的,和缓存污染、客户端缓存倒没有必然的联系。

    8
  • Dolly
    客户端缓存那个直接解决redis和本地缓存的一致性问题

    作者回复: 除了保证一致性,客户端缓存本身也能加速访问,所以,这个特性是Redis 6.0中比较重要的一个,可以重点关注 :)

    7
  • pretty.zh
    老师,redis常量池是什么

    作者回复: 你说的是指Redis中的整数对象共享池么?例如0到9999这些整数会被频繁用到,所以,使用共享对象来表示这些数,每个数只存一份String对象,可以节省内存空间。

    5
  • Kaito
    Redis 6.0 的哪些新特性帮助最大? 我觉得 Redis 6.0 提供的多 IO 线程和客户端缓存这两大特性,对于我们使用 Redis 帮助最大。 多 IO 线程可以让 Redis 在并发量非常大时,让其性能再上一个台阶,性能提升近 1 倍,对于单机 Redis 性能要求更高的业务场景,非常有帮助。 而客户端缓存可以让 Redis 的数据缓存在客户端,相当于每个应用进程多了一个本地缓存,Redis 数据没有变化时,业务直接在应用进程内就能拿到数据,这不仅节省了网络带宽,降低了 Redis 的请求压力,还充分利用了业务应用的资源,对应用性能的提升也非常大。
    12
    103
  • 那时刻
    Redis 6.0增加了IO线程来处理网络请求,如果客户端先发送了一个`set key1 val1`写命令,紧接着发送一个`get key1`读命令。请问老师,由于IO线程是多线程处理的,是否会导致`get key1`读命令 先于 `set key1 val1`写命令执行呢?结果客户端读到了key1的旧值。
    14
    19
  • 王世艺
    多线程io和epoll啥区别
    4
    15
  • kevin
    请问下,redis的客户端缓存与业务实例的本地缓存有区别吗?
    4
  • 听秋
    老师,客户端缓存的普通模式,当不在收到服务端的通知时,服务端 的 key 被修改了,应用读的是缓存到本地的数据,那不就读到旧数据了吗?
    1
    1
收起评论
显示
设置
留言
36
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部