我有一个场景,我需要每 2 分钟将我的 MySQL 数据同步到 redis 缓存中。
基本上我有 2 个表格类别和文章表格。每篇文章都属于某个特定的类别。检索:我需要获取特定部分的文章,有时会限制它。
我看到了 Redis 中可用的 5 种数据结构,但对于选择适合这些要求的一种数据结构感到困惑。
每 2 分钟删除和插入整个数据。
那么我可以继续使用它的最佳方式是什么。
我有一个场景,我需要每 2 分钟将我的 MySQL 数据同步到 redis 缓存中。
基本上我有 2 个表格类别和文章表格。每篇文章都属于某个特定的类别。检索:我需要获取特定部分的文章,有时会限制它。
我看到了 Redis 中可用的 5 种数据结构,但对于选择适合这些要求的一种数据结构感到困惑。
每 2 分钟删除和插入整个数据。
那么我可以继续使用它的最佳方式是什么。
可以为您的方案服务的一项建议是:
包含您的文章和类别的哈希表。
排序集用作每个类别的最新文章的索引。
综上所述,我们将:
将对象添加到 Redis 中的类别和文章的哈希表中。如此处所述,这将使您受益于平均时间复杂度恒定的数据结构。
HMSET article_with_id_{1234} field1 value1 .. etc
HMSET category_with_id_{567} field1 value1 .. etc
现在你需要将它们连接在一起的结构,开始创建排序集one category -> many articles
,下面是一个例子:
ZADD category_{category_id} {Sorting Score - it could be the article_id in descending order or the timestamp as you mentioned} {article ID}
现在您应该有一个可以按类别引用的索引。所以拉数据会像:
ZREVRANGE category_{category_id} 0 10
从该类别中提取得分最高的 10 篇文章的排序集。现在这也将有助于分页。
从您收集的文章 ID 中,您可以使用HGET