kv存儲(chǔ) - 怎樣用 Redis 緩存微博的評(píng)論列表?
問題描述
我不知道微博的評(píng)論是不是用了Redis緩存,我只是拿他來做為一個(gè)例子而已。通用的場(chǎng)景是:用Redis緩存有序的對(duì)象列表,要求可以對(duì)對(duì)象進(jìn)行增、刪、查操作。
我以微博的評(píng)論來說,之前跟其它人交流時(shí),是用zset或list。如果用zset,每個(gè)元素是評(píng)論id,評(píng)論時(shí)間做score,而評(píng)論的內(nèi)容無法存儲(chǔ),只能根據(jù)id再查mysql等數(shù)據(jù)庫(kù)。如果用list,每個(gè)元素是一個(gè)hash的json序列化(包含評(píng)論id,評(píng)論內(nèi)容,評(píng)論時(shí)間等),這樣的話貌似沒有辦法實(shí)現(xiàn)根據(jù)評(píng)論id刪除評(píng)論了? 當(dāng)然,list的元素也可直接用評(píng)論id,那這樣的話,其實(shí)跟用zset差不多。
不知道大家有沒有更好的方案實(shí)現(xiàn)“用Redis緩存有序的對(duì)象列表,要求可以對(duì)對(duì)象進(jìn)行增、刪、查、分頁(yè)操作”
問題解答
回答1:如果用zset,每個(gè)元素是評(píng)論id,而評(píng)論的內(nèi)容無法存儲(chǔ),只能根據(jù)id再查mysql等數(shù)據(jù)庫(kù)
zadd 微博 評(píng)論id 評(píng)論id+評(píng)論的內(nèi)容id做scope,可以用id刪除,后面的評(píng)論內(nèi)容也能顯示。
之前看到過這個(gè)問題,當(dāng)時(shí)沒有回,因?yàn)槟闩e的例子看不太懂,隔了這么多天還沒人回你,我就來說一下吧,你的例子讓人看不太懂!上面的解決辦法也就只能是按你說的實(shí)際例子來說一下。
回答2:用list保存評(píng)論id,然后每條評(píng)論以id為key保存成hash。另外,一般還需要給這些鍵設(shè)置過期時(shí)間
相關(guān)文章:
1. 關(guān)于nginx location配置的問題,root到底是什么2. docker鏡像push報(bào)錯(cuò)3. angular.js - angular內(nèi)容過長(zhǎng)展開收起效果4. 關(guān)于docker下的nginx壓力測(cè)試5. angular.js - angularjs的自定義過濾器如何給文字加顏色?6. python 怎樣用pickle保存類的實(shí)例?7. 大家好,請(qǐng)問在python腳本中怎么用virtualenv激活指定的環(huán)境?8. python的前景到底有大?如果不考慮數(shù)據(jù)挖掘,機(jī)器學(xué)習(xí)這塊?9. 并發(fā)模型 - python將進(jìn)程池放在裝飾器里為什么不生效也沒報(bào)錯(cuò)10. python2安裝失敗
