Luc*_*cas 4 mysql notifications ruby-on-rails redis
我在我的应用程序中有社交网络的方面,我已经实现了像这个答案的活动流:
就像在那里说的那样,系统中的每个通知,我为每个被通知的用户(密钥)推送redis,来自Activities关系表的ID的列表(值):
key value
user:1:notifications [25, 24, 23]
user:2:notifications [24, 22, 17, 13, 5, 4]
...
Run Code Online (Sandbox Code Playgroud)
所以,我的表只有活动和导致这个的用户.会发生什么是我只有用户在redis中收到通知而在mysql中没有任何内容...
我的问题是,如果在redis中保持这个id无限或仅仅为了更新的memcached并定期修改此列表是正确的吗?
这更像是一个应用程序架构/设计问题,而不是编程问题,所以理论上没有一个正确的答案.
但是,在实践中 - Redis/Memcache和许多其他此类实现并不意味着持久存在非常大(或快速增长)的数据集.
作为一个nosql数据存储,Redis使用内存,再加上硬盘上的镜像.因此,虽然您可以存储的数据大小没有限制,但理想情况下,它应该始终小于您计划分配给Redis的可用内存.
覆盖所有基础的最简单的解决方案是在生成时将用户活动数据存储在Redis中.使用Redis显示通知等.保持cron运行,截断早于预定天数的所有活动日志(或每个用户预定义的活动数)并将其保存到常规数据库.
当用户希望检索所有通知时,可以接受一些速度损失(因为它不是频繁,必需或提升的操作),您可以通过绕过Redis从数据库中提取它们.
替代方案: 同样,最好根据应用程序的实际数量选择使用的解决方案.但你可以这样做:
| 归档时间: |
|
| 查看次数: |
1892 次 |
| 最近记录: |