39 | Redis 6.0的新特性:多线程、客户端缓存与安全
该思维导图由 AI 生成,仅供参考
从单线程处理网络请求到多线程处理
- 深入了解
- 翻译
- 解释
- 总结
Redis 6.0版本引入了多线程处理网络请求的新特性,以提高性能和安全性。该版本的关键特性包括面向网络处理的多IO线程、客户端缓存、细粒度的权限控制和RESP 3协议的使用。多线程特性提高了网络请求处理速度,客户端缓存允许应用在客户端本地读取数据,提升Redis的性能。细粒度权限控制增强了Redis的安全保护,RESP 3协议增强了客户端的功能,使应用更便于使用Redis的不同数据类型。Redis 6.0的多线程特性采用了多个IO线程来处理网络请求,但仍然使用单线程来处理读写命令,以简化线程模型实现。此外,实例的访问权限控制列表功能(ACL)提升了Redis的使用安全性。另外,Redis 6.0实现了RESP 3通信协议,支持多种数据类型的区分编码,提升了客户端的效率。这些新特性为用户提供了更高性能和更安全的Redis使用体验。
《Redis 核心技术与实战》,新⼈⾸单¥68
全部留言(36)
- 最新
- 精选
- Geek_04f704老师,redis支持多线程后,怎么实现单命令操作原子性的?
作者回复: Redis 6.0中的多线程只是指,在客户端请求接收和解析,以及请求后的数据通过网络返回给客户端时,使用了多线程。而命令请求本身的数据读写操作还是由单线程来完成的,所以仍然可以保证单命令操作的原子性。
2020-12-16424 - 东6.0的权限细粒度控制对我们很有用,以前多个微服务共享同一个redis集群,权限没法隔离,现在可以控制不同的服务使用不同的key前缀,从而很好的隔离了服务,可以有效避免误操作,或者一个服务的bug影响到所有服务。
作者回复: 这是个很好的用例场景!
2020-11-2315 - 🌾🌾🌾小麦🌾🌾🌾请问老师客户端缓存端缓存会不会导致缓存污染及内存泄露问题?
作者回复: 我们说的缓存污染一般是指缓存系统里面的数据不被访问,但是由于缓存策略没有及时淘汰,又滞留在缓存中,导致缓存空间被占用,但是又不服务访问请求,造成了污染。 客户端缓存的主要问题是要和缓存系统中的数据保存一致,也就是说缓存系统中的数据被更新了,客户端需要及时做invalidation操作,避免应用在客户端缓存中读到旧的缓存数据。 内存泄露一般是内存没有正确回收导致的,和缓存污染、客户端缓存倒没有必然的联系。
2020-12-198 - Dolly客户端缓存那个直接解决redis和本地缓存的一致性问题
作者回复: 除了保证一致性,客户端缓存本身也能加速访问,所以,这个特性是Redis 6.0中比较重要的一个,可以重点关注 :)
2020-12-3127 - pretty.zh老师,redis常量池是什么
作者回复: 你说的是指Redis中的整数对象共享池么?例如0到9999这些整数会被频繁用到,所以,使用共享对象来表示这些数,每个数只存一份String对象,可以节省内存空间。
2020-11-236 - KaitoRedis 6.0 的哪些新特性帮助最大? 我觉得 Redis 6.0 提供的多 IO 线程和客户端缓存这两大特性,对于我们使用 Redis 帮助最大。 多 IO 线程可以让 Redis 在并发量非常大时,让其性能再上一个台阶,性能提升近 1 倍,对于单机 Redis 性能要求更高的业务场景,非常有帮助。 而客户端缓存可以让 Redis 的数据缓存在客户端,相当于每个应用进程多了一个本地缓存,Redis 数据没有变化时,业务直接在应用进程内就能拿到数据,这不仅节省了网络带宽,降低了 Redis 的请求压力,还充分利用了业务应用的资源,对应用性能的提升也非常大。2020-11-2312106
- 那时刻Redis 6.0增加了IO线程来处理网络请求,如果客户端先发送了一个`set key1 val1`写命令,紧接着发送一个`get key1`读命令。请问老师,由于IO线程是多线程处理的,是否会导致`get key1`读命令 先于 `set key1 val1`写命令执行呢?结果客户端读到了key1的旧值。2020-11-231419
- 王世艺多线程io和epoll啥区别2020-11-23415
- kevin请问下,redis的客户端缓存与业务实例的本地缓存有区别吗?2020-11-234
- 听秋老师,客户端缓存的普通模式,当不在收到服务端的通知时,服务端 的 key 被修改了,应用读的是缓存到本地的数据,那不就读到旧数据了吗?2021-12-2611