文章詳情頁
kv存儲 - 怎樣用 Redis 緩存微博的評論列表?
瀏覽:88日期:2022-06-25 17:55:17
問題描述
我不知道微博的評論是不是用了Redis緩存,我只是拿他來做為一個例子而已。通用的場景是:用Redis緩存有序的對象列表,要求可以對對象進行增、刪、查操作。
我以微博的評論來說,之前跟其它人交流時,是用zset或list。如果用zset,每個元素是評論id,評論時間做score,而評論的內容無法存儲,只能根據id再查mysql等數據庫。如果用list,每個元素是一個hash的json序列化(包含評論id,評論內容,評論時間等),這樣的話貌似沒有辦法實現根據評論id刪除評論了? 當然,list的元素也可直接用評論id,那這樣的話,其實跟用zset差不多。
不知道大家有沒有更好的方案實現“用Redis緩存有序的對象列表,要求可以對對象進行增、刪、查、分頁操作”
問題解答
回答1:如果用zset,每個元素是評論id,而評論的內容無法存儲,只能根據id再查mysql等數據庫
zadd 微博 評論id 評論id+評論的內容id做scope,可以用id刪除,后面的評論內容也能顯示。
之前看到過這個問題,當時沒有回,因為你舉的例子看不太懂,隔了這么多天還沒人回你,我就來說一下吧,你的例子讓人看不太懂!上面的解決辦法也就只能是按你說的實際例子來說一下。
回答2:用list保存評論id,然后每條評論以id為key保存成hash。另外,一般還需要給這些鍵設置過期時間
標簽:
微博
相關文章:
1. docker-machine添加一個已有的docker主機問題2. html - 用ajax提交表單后,返回驗證數據在頁面location.href跳轉到主頁,怎么傳遞session給主頁3. java-ee - JAVA的注解@Api和@ApiOperation的作用是什么,怎么跳轉頁面的4. apache - nginx 日志刪除后 重新建一個文件 就打不了日志了5. java - mybatis會自己緩存自己生成過的prestatement嗎6. angular.js - grunt server 報錯7. java - tomcat服務經常晚上會掛,求解?8. java - 原生CGLib內部方法互相調用時可以代理,但基于CGLib的Spring AOP卻代理失效,為什么?9. node.js - node express 中ajax post請求參數接收不到?10. mysql的主從復制、讀寫分離,關于從的問題
排行榜
