2024-05-14 22:34:48 发布
网友
我想在python应用程序中与rocksdb接口,并在其中存储任意dict。我想我可以用像pickle这样的东西来序列化。但是我需要能够根据记录键的值过滤记录。这里的正确方法是什么?你知道吗
RocksDB是一个键值存储,键值都是二进制字符串。你知道吗
Get
Iterator
对于case1和case2,不需要反序列化所有值,只需要反序列化等于给定键或与模式匹配的值。但是,对于3情况,必须反序列化所有值。你知道吗
1
2
3
case2和case3都是低效的,因为它们需要迭代整个密钥空间。你知道吗
您可以配置RocksDB的密钥进行排序,RocksDB对前缀索引有很好的支持。因此,可以有效地进行范围查询和按键前缀查询。查看文档了解详细信息。你知道吗
为了有效地进行值筛选/搜索,您必须使用RocksDB创建一个值索引。你知道吗
假设您有一个名为dict_keys的键列表,还有一个名为big_dict的dict,您只想从dict_keys中过滤出值。您可以编写一个dict理解,在列表中循环,从dict中获取项目(如果它们是这样存在的):
dict_keys
big_dict
new_dict = {key: big_dict.get(key) for key in dict_keys}
RocksDB是一个键值存储,键值都是二进制字符串。你知道吗
Get
接口搜索数据库。你知道吗Iterator
接口来迭代整个数据库,并使用与模式匹配的键过滤记录。你知道吗对于case
1
和case2
,不需要反序列化所有值,只需要反序列化等于给定键或与模式匹配的值。但是,对于3
情况,必须反序列化所有值。你知道吗case
2
和case3
都是低效的,因为它们需要迭代整个密钥空间。你知道吗您可以配置RocksDB的密钥进行排序,RocksDB对前缀索引有很好的支持。因此,可以有效地进行范围查询和按键前缀查询。查看文档了解详细信息。你知道吗
为了有效地进行值筛选/搜索,您必须使用RocksDB创建一个值索引。你知道吗
假设您有一个名为
dict_keys
的键列表,还有一个名为big_dict
的dict,您只想从dict_keys
中过滤出值。您可以编写一个dict理解,在列表中循环,从dict中获取项目(如果它们是这样存在的):相关问题 更多 >
编程相关推荐