国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

redis 做分頁有必要嗎 redis怎么緩存用戶列表,做到可以分頁展示?

redis怎么緩存用戶列表,做到可以分頁展示?普通分頁一般分頁做緩存都是直接查找出來,按頁放到緩存里,但是這種緩存方式有很多缺點。如緩存不能及時更新,一旦數(shù)據(jù)有變化,所有的之前的分頁緩存都失效了。比如

redis怎么緩存用戶列表,做到可以分頁展示?

普通分頁

一般分頁做緩存都是直接查找出來,按頁放到緩存里,但是這種緩存方式有很多缺點。

如緩存不能及時更新,一旦數(shù)據(jù)有變化,所有的之前的分頁緩存都失效了。

比如像微博這樣的場景,微博下面現(xiàn)在有一個頂次數(shù)的排序。這個用傳統(tǒng)的分頁方式很難應對。

一種思路

最近想到了另一種思路。

數(shù)據(jù)以ID為key緩存到Redis里;

把數(shù)據(jù)ID和排序打分存到Redis的skip list,即zset里;

當查找數(shù)據(jù)時,先從Redis里的skip list取出對應的分頁數(shù)據(jù),得到ID列表。

用multi get從redis上一次性把ID列表里的所有數(shù)據(jù)都取出來。如果有缺少某些ID的數(shù)據(jù),再從數(shù)據(jù)庫里查找,再一塊返回給用戶,并把查出來的數(shù)據(jù)按ID緩存到Redis里。

在最后一步,可以有一些小技巧:

比如在缺少一些ID數(shù)據(jù)的情況下,先直接返回給用戶,然后前端再用ajax請求缺少的ID的數(shù)據(jù),再動態(tài)刷新。

還有一些可能用Lua腳本合并操作的優(yōu)化,不過考慮到Lua腳本比較慢,可能要仔細測試。

如果是利用Lua腳本的話,可以在一個請求里完成下面的操作:

查找某頁的所有文章,返回已緩存的文章的ID及內容,還有不在緩存里的文章的ID列表。

其它的一些東東:

Lua是支持LRU模式的,即像Memcached一樣工作。但是貌似沒有見到有人這樣用,很是奇怪。

可能是用redis早就準備好把redis做存儲了,也不擔心內存的容量問題。

redis支持分頁嗎?

對于有分頁條件的緩存,可以緩存多個key,分頁查詢page=1&limit=10和page=1&limit=5這兩次請求可以這樣緩存查詢結果