首页 > 解决方案 > RocksDB如何组织键值来实现Redis ZSet命令?

问题描述

我通过 RocksDB 实现 Redis ZSet 命令,并且迭代器使用大键真的很慢,我该如何优化这些键值?

我将 1 个 zset key-element-score 与 3 个 RocksDB 键值分开,例如name2age:linda:25

// using rocksdb iterate to start index, count offset, and select elements
// this will be slow when zset have too many elements

我想要一个新的实现来重写zset,也许有一些提示,非常感谢

标签: key-value-storesortedsetrocksdbskip-lists

解决方案


要在有序键值存储之上实现排序集,您必须依赖称为skip-list的概率数据结构。

但是在您的问题中,您要执行的操作不需要跳过列表。

有关跳过列表的介绍,请参阅此幻灯片

并且在foundationdb 论坛上的这个线程关于如何实现最有可能是你想要的排行榜。

这链接到可以在github上找到的 C# 实现

祝你好运!


推荐阅读