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已經準備好存儲了,我不知道不要擔心記憶的容量。