Redis可以作为一个数据库使用吗?
R
分布式redis缓存如何部署使用?
我的标题号在一篇文章中有详细讨论
希望对你有帮助。
redis怎么缓存用户列表,做到可以分页展示?
普通寻呼
一般是直接找到分页缓存,按页放入缓存,但是这种缓存有很多缺点。
如果缓存不能及时更新,一旦数据发生变化,之前的所有分页缓存都将失效。
比如微博这样的场景,现在微博下面有一个排名靠前的。这在传统的分页中很难处理。
思路
最近想到了另一种思路。
数据缓存在Redis中,ID作为键;
将数据ID和排序分数存储在Redis的跳转列表中,即zset
查找数据时,先从Redis中的skiplist中取出对应的分页数据,得到ID列表。
使用multiget一次从redis中获取ID列表中的所有数据。如果有任何数据缺少某个ID,就从数据库中查找,再次返回给用户,并根据ID在Redis中缓存找到的数据。
在最后一步,你可以有一些提示:
比如在某些ID数据缺失的情况下,直接先返回给用户,然后前端用ajax请求缺失的ID数据,再动态刷新。
还有一些优化可能会使用Lua脚本合并操作,但考虑到Lua脚本运行速度较慢,可能需要仔细测试。
如果使用Lua脚本,可以在一个请求中完成以下操作:
查找一个页面上的所有文章,返回缓存文章的ID和内容,以及未缓存文章的ID列表。
其他事情:
Lua支持LRU模式,也就是说,它像Memcached一样工作。但似乎我还没有没见过有人这样用,很奇怪。
可能redis已经准备好存储了,我不知道不要担心记忆的容量。