TiKV 和 Tendis 混合版有什么异同呢?

最近在做技术选项,想找一款高性能kv存储引擎。发现tendis和 tikv都用了rocksdb, 以此作为存储引擎。

我看到配置里面,需要为tikv配置大量磁盘和内存资源的,这部分内存是和rocksdb做冷热分离的么?为tikv配置更多内存,是否能显著提高读key命中率,以此提高性能。

tikv的整体技术方案是偏 【tendis 缓存版】,还是 【tendis 冷热混合缓存版】?

tendis 介绍: Redis vs Tendis:冷热混合存储版架构揭秘 - 腾讯云开发者社区-腾讯云

我看到配置里面,需要为tikv配置大量磁盘和内存资源的,这部分内存是和rocksdb做冷热分离的么?为tikv配置更多内存,是否能显著提高读key命中率,以此提高性能。

TiKV 的数据存储于 RocksDB 中,内存中主要用于 RocksDB 的 Block Cache,提高这部分的内存配置的确能提升 key 在内存中的命中率,进而提升读性能,可以参考这篇文档:TiKV 内存参数性能调优

tikv的整体技术方案是偏 【tendis 缓存版】,还是 【tendis 冷热混合缓存版】?

TiKV 的每个写入都会落盘(通过 Raft 协议保证多副本之间的数据一致性,提供高可用能力),因为 RocksDB Block Cache 的存在,整体上来看有点类似 “冷热混合缓存版”。

1 Like

感谢大佬回复。

方便透露是什么场景的技术选型吗,看看我们是否能有一定帮助?

Ng对api数据的缓存,有些接口的输出的数据偏稳定,例如:省市、病种。如果用redis,需要定时刷数据库,因为dba不允许永不超时。如果能自动 冷热,那就不用理会超时问题了。

目前注意到tendis只开源了存储版,在tendis交流群发现普遍反映慢。要用混合版,估计要用腾讯云。

看到tikv时,发现有点 冷热混合版的意思,逛社区发现,又有很多人反馈需要定时重启?如果运维成本过高,可能直接使用云服务整体更划算。

Ng对api数据的缓存,有些接口的输出的数据偏稳定,例如:省市、病种。如果用redis,需要定时刷数据库,因为dba不允许永不超时。如果能自动 冷热,那就不用理会超时问题了。

这里超时的问题没有理解,是说应用访问 Redis 有访问超时的问题,还是说希望数据能够自动过期(TTL),老数据被自动清理掉?

又有很多人反馈需要定时重启?

有个已知问题(https://asktug.com/t/topic/67878)已经修复了,可否把你看到的相关帖子发到这里,我们看看是否是同类问题呢,正常不应该出现这类问题才对。

超时,这里指 key 的 ttl,某些数据基本不变,研发想让它每次应用访问都能命中,而不是去查库,除非binlog触发了 del key 动作。带来的问题就是redis内存占用过高问题。自动冷热这种方案就非常有吸引力。

我只是看到有人反馈,如果已解决的话,那么就很放心得使用了。

超时,这里指 key 的 ttl

可以试试 TiKV RawKV 接口的 TTL 功能,参考文档:TTL on RawKV

研发想让它每次应用访问都能命中

如果要自动冷热,应该还是会出现缓存未命中,穿透到下面持久化存储的情况。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。