Redis 选择数据类型的建议

标签 redis

我们有一些问题是基于我们在主页中显示 2 列表的位置

  1. 问题修改日期
  2. 问题有更大的观点和答案。在这两个列表中,如果问题有相同的观点或答案计数,则排序基于日期。

以前我直接查询 MySQL 数据库并获取值,所以很容易。 但是每个页面请求到达 MySQL 都会有点昂贵,然后开始进行缓存。

我开始使用 Redis。以下是我使用redis缓存的情况

问题是在第二个列表中,我必须通过投票显示问题而不是结合回答问题。 我如何将这种类型的数据存储在 Redis 中,以便通过基于 2 个条件投票和时间的排序来更快地加载?

最佳答案

您可以在 Redis 中使用排序集。您的观看次数或回答次数可以作为分数。根据时间戳创建 key 。排序集方法 zrevrangebyscore 将为您提供正确的顺序。

您可以将您的排序集成员设置为:

'YEAR_MONTH_DATE_HOUR_MINUTE_SECONDS:question_id'

这样排序的话,得分相同的题目,会按照字典顺序返回。如果你使用 zrevrangebyscore,那么后面出现的问题会被放在更高的位置。

您可以创建一个 HashMap 来映射时间戳和问题 ID。更快的查找

我问了一个类似的问题,我也在这里提出了一个解决方案。我想要一些不同的东西,但它会做你想要的。

Redis zrevrangebyscore, sorting other than lexicographical order

关于Redis 选择数据类型的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12854149/

相关文章:

ruby-on-rails - Discourse server启动失败,出现redis相关错误

php - 拉维尔 5.1 : Class cache does not exist

java - 日志存储 : Directly send logs to redis broker

python - 使用通配符删除redis中的哈希属性

PHP/Magento - 缓存策略

redis cluster dbsize 仅显示该节点上的键

spring-boot - 使用Spring的@EnableRedisHttpSession时如何在 Controller 中获取session或redis key的过期时间?

ruby-on-rails - 如何让Redis在Heroku上启动?

lua - 如何从redis中的多个哈希中获取

python - "Operation not Permitted"用于 Redis