使用排序集通知系统

2024-05-12 22:55:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用redissorted sets保存用户通知。但由于我从来没有做过通知系统,我在问我的逻辑。你知道吗

我需要为每个通知保存4件东西。你知道吗

  • 邮政编码
  • A/B型邮政编码
  • 可见-是/否
  • 勾选-是/否

我的问题是如何在排序集中存储这种类型的结构?你知道吗

ZADD users_notifications:1 10 1_A_Y_Y 
ZADD users_notifications:1 20 2_A_Y_N
....

在redis中有更好的方法来做这类事情吗?在上面的例子中,我保存了每个元素中的四个元素,我需要用服务器语言中的下划线来分割。你知道吗


Tags: 方法用户redis元素类型排序系统sets
1条回答
网友
1楼 · 发布于 2024-05-12 22:55:57

这实际上取决于您需要如何查询数据。你知道吗

解决这个问题最常用的方法是对顺序使用排序集,对每个对象使用哈希。你知道吗

所以:

ZADD notifications:<user-id> <timestamp> <post-id>
HMSET notifications:<user-id>:<post-id> type <type> visible <visible> checked <checked>

您可以使用ZRANGE按顺序获取最新的通知,然后通过管道调用HMGET来获取每个对象的属性。你知道吗

正如我提到的,这取决于您需要如何访问数据。例如,如果您总是向用户显示可见和未检查的通知,那么您可能希望将这些id存储在不同的排序集中,这样就不必查询状态。你知道吗

假设您有这样一个排序集,当用户取消通知时,您将执行以下操作:

HSET notifications:<user-id>:<post-id> visible 0
ZREM notifications:<user-id>:visible <post-id>

相关问题 更多 >