sorting - 如何最好地使用 Redis 创建排序集

标签 sorting caching redis nosql

在谈到 Sorted Sets 以及如何最好地构建它们时,我仍然有点迷茫。目前我的网站上有一组简单的事件。通常它会显示用户关注、用户喜欢、用户发布等内容。JSON 看起来像...

id: 2808697,
activity_type: "created_follower",
description: "Bob followed this profile",
body: null,
user: "Bob",
user_id: 99384,
user_profile_id: 233007,
user_channel_id: 2165811,
user_cube_url: "bob-anerson",
user_action: "followed this profile",
buddy: "http://s3.amazonaws.com/stuff/ju-logo.jpg",
affected: "Bill Anerson is following Jon Denver.",
created_at: "2014-06-24T20:34:11-05:00",
created_ms: 1403660051902,
profile_id: 232811,
channel_id: 2165604,
cube_url: "jondenver",
type: "profiles",

因此,如果事件类型可以是多个事物(IE 创建的关注、喜欢的事件、发布的新闻等),我将如何将它们全部放入一个排序集中?我已经确定我希望分数是 created_ms 但问题是,我可以在一个排序集中做多个值,所有的键都作为字段吗?大部分应该在哈希中吗?我意识到这是一个相当开放的问题,但在尝试全面了解所有教程之后,我只关心之前设置数据结构,这样我就不会陷入困境。

最佳答案

如果你想……让东西保持有序,则有序集很有用! ;)

因此,我假设您有兴趣按创建时间 (ms) 对事件进行排序。至于存储实际数据,您有两种选择:

  1. 使用排序集本身来存储数据,即使是原生 JSON 格式。请注意,使用这种方法,您将只能获取整个 JSON,并且必须在客户端对其进行解析。
  2. 或者,使用 sorted 来存储指向散列的“指针”——即值将是您将在其中存储数据的键名。根据您的描述,这似乎是更可取的方法。

关于sorting - 如何最好地使用 Redis 创建排序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24415818/

相关文章:

apache - Varnish -仅在后端关闭时才从缓存发送

node.js - 从 NodeJS 将数组插入 redis

ruby-on-rails - Redis 服务器强制执行 AUTH,但未配置为 requirepass

java - Collections.sort() 未按正确的顺序排序

java - 为什么我的短语查询给我的结果这么少?

c# - 为什么同一设计会得到两种不同的结果?

caching - Redis 哨兵故障转移不起作用

java - Java中的排序数组列表

python - 如果从数据库中删除相关对象,为什么 Redis 会删除对象中的关系?

redis - 我是如何无意中使用 ServiceStack 和 Redis 创建拒绝服务的?