redis快取分頁思路

2022-03-28 10:56:14 字數 725 閱讀 8222

傳統分頁

一般分頁做快取都是直接查詢出來,按頁放到快取裡,但是這種快取方式有很多缺點。

如快取不能及時更新,一旦資料有變化,所有的之前的分頁快取都失效了。

比如像微博這樣的場景,微博下面現在有乙個頂次數的排序。這個用傳統的分頁方式很難應對。

redis快取分頁

1.資料以id為key快取到redis裡;

2.把資料id和排序打分存到redis的skip list,即zset裡;

3.當查詢資料時,先從redis裡的skip list取出對應的分頁資料,得到id列表。

4.用multi get從redis上一次性把id列表裡的所有資料都取出來。如果有缺少某些id的資料,再從資料庫裡查詢,再一塊返回給使用者,並把查出來的資料按id快取到redis裡。

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

比如在缺少一些id資料的情況下,先直接返回給使用者,然後前端再用ajax請求缺少的id的資料,再動態重新整理。

還有一些可能用lua指令碼合併操作的優化,不過考慮到lua指令碼比較慢,可能要仔細測試。

如果是利用lua指令碼的話,可以在乙個請求裡完成下面的操作:

查詢某頁的所有文章,返回已快取的文章的id及內容,還有不在快取裡的文章的id列表。

其它的一些東東:

lua是支援lru模式的,即像memcached一樣工作。但是貌似沒有見到有人這樣用,很是奇怪。

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

redis快取分頁思路

傳統分頁 一般分頁做快取都是直接查詢出來,按頁放到快取裡,但是這種快取方式有很多缺點。如快取不能及時更新,一旦資料有變化,所有的之前的分頁快取都失效了。比如像微博這樣的場景,微博下面現在有乙個頂次數的排序。這個用傳統的分頁方式很難應對。redis快取分頁 1.資料以id為key快取到redis裡 2...

利用redis快取熱門資料,分頁的一種思路

一般分頁做快取都是直接查詢出來,按頁放到快取裡,但是這種快取方式有很多缺點。如快取不能及時更新,一旦資料有變化,所有的之前的分頁快取都失效了。比如像微博這樣的場景,微博下面現在有乙個頂次數的排序。這個用傳統的分頁方式很難應對。最近想到了另一種思路。資料以id為key快取到redis裡 把資料id和排...

利用redis快取熱門資料,分頁的一種思路

一般分頁做快取都是直接查詢出來,按頁放到快取裡,但是這種快取方式有很多缺點。如快取不能及時更新,一旦資料有變化,所有的之前的分頁快取都失效了。比如像微博這樣的場景,微博下面現在有乙個頂次數的排序。這個用傳統的分頁方式很難應對。最近想到了另一種思路。資料以id為key快取到redis裡 把資料id和排...