40 | Redis的下一步:基于NVM内存的实践
该思维导图由 AI 生成,仅供参考
NVM 内存的特性与使用模式
- 深入了解
- 翻译
- 解释
- 总结
Redis的下一步发展将基于新型非易失存储器件(NVM)内存展开,这种器件具有容量大、性能快、能持久化保存数据的特点,与Redis的目标高度契合。NVM内存的特性包括持久化保存数据、接近DRAM的访问速度和大容量存储,其中Intel的Optane AEP内存条是实际产品代表。AEP内存提供了两种使用模式:Memory模式用于扩展内存容量,而App Direct模式则实现了数据持久化功能。对于Redis而言,可以利用AEP内存的App Direct模式来实现快速持久化数据和恢复。这一发展趋势将使Redis能够实现大容量实例,并提高数据持久化和恢复的速度。 文章介绍了NVM内存的特点以及其在Redis中的应用。NVM内存具有高性能、大容量和持久化保存数据的特性,可以通过Memory模式扩展内存容量,也可以通过App Direct模式实现数据持久化。在Redis中,利用NVM内存可以实现大容量实例,并提高数据持久化和恢复的速度。此外,文章还介绍了如何在服务器中部署PM后,通过内存映射的方式将Redis数据直接保存在内存上,实现快速的故障恢复。最后,文章提到了NVM内存的发展趋势,以及对未来基于DRAM和硬盘的系统软件优化带来的新机遇。 总的来说,本文介绍了NVM内存在Redis中的应用,以及其带来的性能和容量优势,对读者了解NVM内存的特点和在Redis中的应用具有重要参考价值。
《Redis 核心技术与实战》,新⼈⾸单¥68
全部留言(27)
- 最新
- 精选
- Mr.Brooks使用NVM,没有了RDB,主从复制对于新添加的机器,是怎么实现的呢
作者回复: 这是个好问题。 增加从节点时,需要把全库数据拷贝到从节点上。我自己现在考虑的有两种方法:一种还是用写前日志,日志拷贝到从节点进行回放,但是这会带来双写的问题。另一种是,主节点在NVM上做快照,但是不写文件,从节点上直接从主节点的NVM上通过远程内存拷贝来实现复制,这个需要基于RDMA来做。
2020-12-04327 - u老师,比较好奇应用程序是如何基于持久化内存来恢复自身的状态的,还是说应用程序本身也作为持久化的一部分,在重启后就存在于内存中?
作者回复: 这个问题很好。目前,应用程序是把本来要保存到磁盘上的数据保存到持久化内存上了,但是应用程序运行时的堆和栈还是在DRAM上,进程重启这些运行时信息就丢了。 所以,如果想把应用程序本身的运行时状态,例如堆栈等,也保存到持久化内存上,这个需要对操作系统的内核做修改。目前还没有成熟的方案。
2020-11-2719 - Lemon肯定还是需要的,两者是互补的。 NVM 给了数据存储方面的新方案,但目前用作 PM 的读写速度比 DRAM 慢,不使用主从集群仍会有明显的访问瓶颈。【过大的实例在主从同步时会有影响(缓存、带宽)】 而集群是为了高可用,分散了数据的访问和存储,便于拓展与维护。对于单实例而言,即便单实例恢复的再快,挂了对业务仍会有影响。 感觉 NVM 内存用作 PM 有点像第 28 将的 Pika,如果把 SSD 换为 NVM ,岂不是都再内存中操作?是否可以解决 Pika 操作慢的缺点?
作者回复: 回答的很好。 而且对NVM使用的思考非常赞。NVM的读写延迟(几百ns级别)还是要低于SSD的(几十到几百us级别),所以使用NVM替换SSD是可以解决Pika操作慢的问题。 不过,NVM的每GB成本还是要高于SSD的,这个在实际应用中要考虑。
2020-11-2528 - 宙斯需要。主从集群 1读写分离,降低实例压力 2数据冗余,防止介质损坏数据丢失
作者回复: 对主从集群的作用理解到位。
2021-01-307 - 李梦嘉老师,请问有AEP方案redis的最佳实践么,最近在调研这方面
作者回复: Intel有在推基于AEP的Redis,可以看下 https://www.intel.com/content/dam/www/public/us/en/documents/solution-briefs/redis-enterprise-brief.pdf 另外,github上有基于PMem的Redis实现,是基于Redis 4.0实现,有些旧了,不过可以作为一个参考。 https://github.com/pmem/pmem-redis 另外,阿里云上的Tair有基于AEP做扩展,参考 https://developer.aliyun.com/article/776609
2020-12-0427 - yyl问题:有了持久化内存,是否还需要 Redis 主从集群? 解答:需要,主从集群解决的单点故障问题,而且还能起到一定的负载分担。而NVM解决的是数据丢失
作者回复: 对主从集群作用的理解很到位 :)
2020-11-254 - Mr.蜜由于PM的读写速度存在差异,使用读写分离的主从集群,还是有必要,这样可以分担单实例的处理压力,提升redis整体的性能,所以使用主从集群还是非常有必要的。
作者回复: 大流量情况下,单个实例的压力太大,从节点是可以用来分担读压力的。
2020-12-2121 - Kaito有了持久化内存,是否还需要 Redis 主从集群? 肯定还是需要主从集群的。持久化内存只能解决存储容量和数据恢复问题,关注点在于单个实例。 而 Redis 主从集群,既可以提升集群的访问性能,还能提高集群的可靠性。 例如部署多个从节点,采用读写分离的方式,可以分担单个实例的请求压力,提升集群的访问性能。而且当主节点故障时,可以提升从节点为新的主节点,降低故障对应用的影响。 两者属于不同维度的东西,互不影响。2020-11-255111
- 好好学习终于学完了。 我真棒!2021-01-15117
- 写点啥呢请问蒋老师,Redis将PM用作内存模式的话,是否需要修改Redis代码。我理解内存模式是对程序透明的,虽然PM可以把数据持久化保存,但是如果Redis进程把它看做内存,如果希望进程启动能够自动回复,就会涉及到进程内存空间的恢复,OS里是没有这个功能的,是不是应该需要Redis来做个事情,才可以直接从PM保存的上一次数据中作为新进程的内存空间,而不再需要通过RDB或者AOF来做数据持久化?2020-11-254