28 | Pika:如何基于SSD实现大容量Redis?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
Pika: 利用SSD实现大容量Redis Pika是一个基于SSD实现大容量Redis的解决方案,通过使用固态硬盘(SSD)降低成本、提高容量和读写速度。该方案采用RocksDB保存数据、避免内存快照和主从同步问题,并实现了与Redis数据类型兼容。Pika通过RocksDB将大量数据保存到SSD上,并使用binlog机制进行主从同步,避免了内存快照和缓冲区溢出问题。此外,Pika的Nemo模块实现了Redis数据类型的兼容,保留了数据类型的特征。尽管Pika将数据保存到SSD上会降低数据的访问性能,但其多线程模型和高配SSD的配置可以在一定程度上弥补性能损失。Pika提供了测试数据表,显示在不写binlog时,SET/GET、HSET/HGET的性能能达到200K OPS以上,但一旦增加了写binlog操作,性能下降约41%。因此,在使用Pika时,需要权衡单实例扩容的必要性和可能的性能损失。总的来说,Pika是一个很好的选择,特别适用于需要扩展Redis容量的用户。
《Redis 核心技术与实战》,新⼈⾸单¥68
全部留言(30)
- 最新
- 精选
- Roy LiangSSD使用寿命和擦写次数相关,我们有的业务数据量和访问量特别大,使用SSD一年就得换了,这样实际成本降不下来。所以,请问有没有可能开发一套混合存储系统,热数据存储而不是缓存在Redis,冷数据存储在Pika,Redis中的热数据淘汰时,自动写入Pika,Pika的冷数据加载时,自动写入Redis,这样业务代码几乎就不用做数据一致性维护相关的内容。不知道这个系统是否存在可行性?其中的技术风险可能在哪里?
作者回复: 这个方案是可行的,相当于冷热分层存储了,而且Pika和Redis的数据模型兼容,所以数据迁移起来会比较方便直接。 我想到的关键技术问题:1. 数据冷热的区分方法,这有点类似于缓存算法,把经常访问的数据要能够筛选出来;2. 数据的迁移开销,数据迁移时需要避免对Redis前端读写请求的阻塞,开发这个系统时可能要考虑使用额外线程来迁移Redis数据;3. 数据迁移时数据读写正确性的保证,例如数据正在迁移,是否还能正常读写。
2020-10-26430 - 杨逸林Redis 服务器有没有必要上 ECC 内存? 还有如果那个 Memtable 有没有极端情况,Memtable1 还在写入 SSD,Memtable2 已经满了,这怎么办?虽然写入 SSD 很快,我是说如果。 binlog 机制在 MySQL 那已经玩烂了。。。
作者回复: ECC内存是需要的,Redis数据都在内存中,如果内存出错,会有影响的。 关于Memtable的问题是个好问题。在你说的情况下,Memtable1还在写SSD,Memtable2已经满了,此时相当于有两个Memtable要刷盘,RocksDB会对前端的写进行限速。 RocksDB中有个配置项是max_write_buffer_number,如果需要往盘上刷的memtable大于这个配置项,就会进行写限速了。
2020-10-2545 - 游弋云端可以考虑内存、SSD、HDD做分级存储,当前这对系统要求就更高了,需要识别数据的冷温热,再做不同介质间的动态迁移,甚至可以做一些访问预测来做预加载和调级。
作者回复: 分级存储时,数据的冷热度识别是一个主要要考虑的问题。通常可以用缓存算法策略来筛选冷热数据,目前也有些尝试是用机器学习的方法来预测数据冷热度,进而再放到不同的介质中。
2020-10-213 - Mr.蜜只要能区分出冷热数据,启用机械硬盘作为一部分存储介质也是一个可取的方案。
作者回复: 如果用机械硬盘,考虑到机械硬盘的毫秒级别延迟,数据访问速度会比较慢,会拖慢前端应用的响应。一般还是建议用SSD更好些。
2020-11-13 - dfuru使用机械硬盘作为实例容量扩展: 1. 在pika的解决方案中,当写满一个memtable时,切换memtable,将写满的memtable中的数据已文件的形式持久化到硬盘上。 硬盘具体是SSD、机械硬盘还是NVME,都可以。 2. 使用机械硬盘,容量更大,价格更便宜,读写性能更低。大量数据访问机械盘时,磁盘IO是主要瓶颈。
作者回复: 机械硬盘作为容量扩展是可以的,不过机械硬盘的性能慢,会是潜在问题。另外,现在SSD的容量也可以做到很大,当然容量的性价比还是比不上机械硬盘。
2020-10-31 - Kaito是否可以使用机械硬盘作为Redis的内存容量的扩展? 我觉得也是可以的。机械硬盘相较于固态硬盘的优点是,成本更低、容量更大、寿命更长。 1、成本:机械硬盘是电磁存储,固态硬盘是半导体电容颗粒组成,相同容量下机械硬盘成本是固态硬盘的1/3。 2、容量:相同成本下,机械硬盘可使用的容量更大。 3、寿命:固态硬盘的电容颗粒擦写次数有限,超过一定次数后会不可用。相同ops情况下,机械硬盘的寿命要比固态硬盘的寿命更长。 但机械硬盘相较于固态硬盘的缺点也很明显,就是速度慢。 机械硬盘在读写数据时,需要通过转动磁盘和磁头等机械方式完成,而固态硬盘是直接通过电信号保存和控制数据的读写,速度非常快。 如果对于访问延迟要求不高,对容量和成本比较关注的场景,可以把Pika部署在机械硬盘上使用。 另外,关于Pika的使用场景,它并不能代替Redis,而是作为Redis的补充,在需要大容量存储(50G数据量以上)、访问延迟要求不苛刻的业务场景下使用。在使用之前,最好是根据自己的业务情况,先做好调研和性能测试,评估后决定是否使用。2020-10-216111
- neohope用机械硬盘阵列来做缓存,其实没有必要,速度太慢了: 1、用redis来做缓存,就是因为mysql慢,所以加了一层 2、redis比mysql快的最根本原因,不是redis技术强悍,而是内存比磁盘快 3、mysql本身就是把热数据放到内存里,冷数据存到磁盘阵列上,并且做了很多数据查找的优化 4、pika利用的是SSD比磁盘快,比内存便宜,才找到了自己的生存空间,其根本原因也不是RocksDB技术先进; 5、Pika的用磁盘做缓存,从磁盘上查找记录,比mysql也快不了太多,解决不了什么问题,而且还引入了新的故障点,没有太多价值2021-02-19222
- 孔祥鑫有个地方没搞明白,读ssd上的数据文件,和redis读rdb文件相比,两者都是文件,为什么会比redis快呢2020-11-1648
- Geek_9a0c9fpika从性能上比当然不然redis,但是它你补了redis几个不足,那么pika在真是项目中都应用在什么场景呢?,与ssd的mysql比优势在哪里?除了o(1)的操作。2020-10-216
- Q, Qpika实际是使用ssd提高性能,那还不如把redis层去掉,mysql直接上ssd岂不是更加方便?2021-08-0145