gpt4 book ai didi

java - 基于 Redis 的通知系统的问题

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

基于 this question 的答案,我设法使用 Redis 为我的网站构建了一个通知流。 Web 客户端上的每个“ Action ”都会为每个用户(关注者、评论者等)感兴趣的用户“记录”下来。挂起的通知每隔几秒就会使用轮询进行提取。

由于最初的要求,我让我的服务器基础架构在获取通知后将其删除(保持 Redis 快速且内存消耗低很重要)

当我在一台机器上打开多个客户端时,问题就来了。只有第一个会显示通知,因为它是后来从 redis 中弹出的。

我考虑了一些解决方案,但到目前为止,我唯一合理的解决方案如下:我没有删除通知,而是将其设置为在几个小时后过期。当然,这无助于解决服务器一遍又一遍地向我发送相同通知的问题(因为它没有被删除),除非我想出基于客户端的 ID 或其他东西,但这已经使情况变得太复杂了.

任何简单的替代方案?

最佳答案

我认为最简单的解决方案是为每个用户维护一个计数器,每次添加通知时都会增加它并记录通知。

然后每个 Web 客户端都可以为它们已有的通知维护一个序列 ID 号。因此,在每次轮询中,您只需检查是否有基于序列 ID 更改的新通知。此外,您可以使用有序集并在集合中存储通知,而不是使用过期键,然后您可以根据序列 ID 获取您想要的所有通知,并且不时地从集合中清除内容

关于java - 基于 Redis 的通知系统的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8079261/

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