gpt4 book ai didi

redis - 如何获取 foo :* using a single id counter instead of a set/array 中的所有哈希值

转载 作者:IT王子 更新时间:2023-10-29 06:06:46 27 4
gpt4 key购买 nike

介绍

我的域有 articles , 其中有一个 titletext .每篇文章都有revisions (就像 SVN 概念),所以每次更改/编辑时,这些更改将存储为 revision .修订由 changes 组成和 description这些变化

我希望能够获得所有修订 descriptions立刻。

有什么问题?

我确定我会存储 revision作为 articles:revisions:<id> 中的哈希存储 changes , 和 description在里面。
我不确定的是如何获得所有 descriptions立刻。
我有很多选择可以做到这一点,但没有一个能说服我。

  1. 将文章的修订 ID 存储为一个集合,并使用 SORT articles:revisions:idSet BY NOSORT GET articles:revisions:*->description .这意味着我将为每篇文章存储一组。如果每篇文章有 50 次修订,而我们有 10.000 篇文章,我们将存储 500.000 个 ID。

这是最好的方法吗?这不会占用太多 RAM 吗?

我还有其他想法,但我也不认为它们很好。

  1. 从 0 迭代到最后一个修订版的 ID,执行 HGET对于使用 MULTI 的每个 ID
  2. 为特定文章创建 idSet,如果它不存在并且是请求的,则在一段时间后过期。

有没有办法让redis做一个SORT array BY NOSORT GET , array 是 [0, MAX] 形式的临时数组?

最佳答案

看来你有一个很好的解决方案。只要您保持这些 ID 号小于 10,000并且你的集合少于 512 个元素(set-max-intset-entries),你的内存消耗会比你想象的要低得多。

Here's很好的解释。

关于redis - 如何获取 foo :* using a single id counter instead of a set/array 中的所有哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26910630/

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