gpt4 book ai didi

sorting - 优化redis排序集内存使用

转载 作者:可可西里 更新时间:2023-11-01 11:22:02 26 4
gpt4 key购买 nike

我目前在 Redis 中有 22k 个排序集。每个键的格式如下:

monitor:<type>:feed:<MongoId>

那些已排序的集合共有 11895225 个项目。这些集合有一个 unix 时间戳作为分数和一个 MongoId 作为成员。

<timestamp> - <MongoId>

安装速度极快,但数据库大小为 1.8g。我可以做任何优化来减少内存使用吗(请记住,我需要按时间对数据进行排序)?

最佳答案

您可以进行一些优化,但不要期望太多。每个成员在数据本身之上有大约 64 字节的开销(成员键 + 分数/ float )。

因此最小内存大小(不含数据)已经在 0.77GB 左右。

请参阅 Didier Spazia 的这个好答案:Redis 10x more memory usage than data

要进行优化,您可以使用客户端散列和/或客户端压缩。


关于您的数据设计:

The sets have a unix timestamp as the key and a MongoId as a value.

不太清楚你的意思。 key 是整个排序集的正确术语。您的成员(member)分数是多少,您的成员(member)字符串是什么?你靠分数排序吗?而且,还有按字符串的字典顺序排序?如果两者兼而有之:除了可能缩短字符串中的字符串/标记外,您无能为力。您可以将其与使用 MsgPack 格式的数据序列化相结合。如果字符串中有数字,这很有用,当序列化为 MsgPack 时使用的字节少得多。如果您使用数组(而不是序列化的字典),您可以再次节省一些空间。使用整数/ float 时,请确保您的字节顺序与所需的排序匹配,当您在成员字符串中使用 MsgPack 并且您需要排序集的字典顺序排序特征时。

希望这有帮助,TW

关于sorting - 优化redis排序集内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22965766/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com