如何用Redis zset做乙個商品排行榜

2021-10-18 19:23:28 字數 1194 閱讀 4527

想做乙個根據使用者對商品的點讚數的排行榜,考慮到redis 的zset 的可以根據分數排序,今天就來玩一下。文中使用springboot 的redistemplate 操作redis,可以參考之前寫的一篇操作redis 各種資料結構的文章:redistemplate分別訪問redis的string/list/set/zset/hash等資料型別  這裡會用到裡面介紹的redistemplate.

首先建立乙個實體類,用於測試,商品資料統一使用springboot jpa 進行操作:

/**

* @author chenxiangweifeng

* 商品實體類

*/@data

@entity

@table(name = "tb_product")

public class product

資料結構的設計:在redis 中建立乙個zset 型別的key,其中的每個member 用商品的id充當,分數使用使用者對該商品的點讚數量表示,這樣redis就可以根據點讚數對庫中的商品進行排序,從而我們可以順利獲取商品的點讚排行榜 。

使用者每一次對商品點讚,我們就可以根據該商品的id,增加zset中的該member的score,如果該member不存在就新增,如果存在直接增加其分數:

@service

public class redisrankservice

}

利用zset 根據分數排序的特性,倒序取出(按照分數從大到小)就可以取出點讚數排行前10的商品id,再根據商品id到redis中取出對應的點讚數,以及借助jpa從資料庫中根據商品id取出這些商品的全部資訊就非常easy了。

/**

* @return 取出點讚數排名前10的商品

*/public listquerytop10product()

return vos;

}

/**

* @author chenxiangweifeng

* @date 2021-02-02

* jpa操作商品實體類的repository

*/@repository

public inte***ce productrepository extends jparepository, jpaspecificationexecutor

教你如何用Silverlight做乙個儀錶盤

使用silverlight做乙個儀錶盤控制項,最好是借助expression blend來實現。先看看這個控制項的效果 首先需要建立乙個自定義控制項 我們建立了乙個視覺化的控制項grid,並把當前這個控制項gaugecontrol作為grid的datacontext。接下來需要完成的是自定義幾個依賴...

如何用C 做乙個懸浮視窗程式

如何用c 做乙個懸浮視窗程式 用c 做乙個像 flashget 的懸浮視窗,其實很簡單,不像以前需要呼叫很多系統 api。大致的步驟如下。首先是主窗體部分,即要判斷窗體的狀態來決定是否顯示懸浮視窗。區域性成員宣告 private formwindowstate fwsprevious private...

如何用C 做乙個懸浮視窗程式

用 c 做乙個像 flashget 的懸浮視窗,其實很簡單,不像以前需要呼叫很多系統 api。大致的步驟如下。首先是主窗體部分,即要判斷窗體的狀態來決定是否顯示懸浮視窗。區域性成員宣告 private formwindowstate fwsprevious private frmtopmost my...