国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Redis從頭學(xué)-5】Redis中的List數(shù)據(jù)類型實(shí)戰(zhàn)場景之天貓熱銷榜單

這篇具有很好參考價值的文章主要介紹了【Redis從頭學(xué)-5】Redis中的List數(shù)據(jù)類型實(shí)戰(zhàn)場景之天貓熱銷榜單。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

?????作者名稱:DaenCode
??作者簡介:啥技術(shù)都喜歡搗鼓搗鼓,喜歡分享技術(shù)、經(jīng)驗(yàn)、生活。
??人生感悟:嘗盡人生百味,方知世間冷暖。
??所屬專欄:Redis從頭學(xué)


【Redis從頭學(xué)-5】Redis中的List數(shù)據(jù)類型實(shí)戰(zhàn)場景之天貓熱銷榜單,Redis從頭學(xué),redis,list,緩存


??前言

之前的篇章對Redis的String數(shù)據(jù)類型已經(jīng)做出了具體分析,并舉例說明了其具體的實(shí)戰(zhàn)場景本文就結(jié)合List數(shù)據(jù)類型結(jié)構(gòu)的特性,一起探討其實(shí)戰(zhàn)中的應(yīng)用場景,并以天貓熱銷榜單為例。

??List數(shù)據(jù)類型分析

Redis中的List數(shù)據(jù)類型是一種有序、可重復(fù)、可變長度的數(shù)據(jù)結(jié)構(gòu)。它支持在列表的兩端進(jìn)行快速的插入、刪除和查找操作,因此非常適合用于處理隊列、棧以及任務(wù)列表等場景。
List數(shù)據(jù)類型可以存儲多個相同或不同類型的元素,并且可以按照插入順序進(jìn)行訪問。Redis提供了一系列的命令來操作List,包括向列表頭部或尾部插入元素、在指定位置插入元素、獲取指定位置的元素、刪除列表中的元素等。有關(guān)其操作命令請參照【Redis從頭學(xué)-3】5個表格帶你學(xué)會使用Redis五大數(shù)據(jù)類型常用命令

List數(shù)據(jù)類型的主要特點(diǎn):

  1. 有序性:列表中的元素按照插入順序排列,可以根據(jù)索引位置進(jìn)行訪問。
  2. 可重復(fù)性:列表允許存儲重復(fù)的元素。
  3. 動態(tài)長度:列表可以根據(jù)需要進(jìn)行動態(tài)擴(kuò)展或收縮,沒有固定的長度限制。
  4. 快速操作:插入和刪除元素的時間復(fù)雜度為O(1),在列表頭部和尾部進(jìn)行插入和刪除操作非常高效。

??List類型實(shí)戰(zhàn)應(yīng)用場景

通過上述對List類型的分析,可以結(jié)合實(shí)際需求選擇適合List類型結(jié)構(gòu)的場景。本文主要演示排行榜功能的演示代碼。

  • 消息隊列:可以通過List實(shí)現(xiàn)簡單的消息隊列,將消息按順序插入到列表尾部,消費(fèi)者從列表頭部取出消息進(jìn)行處理。
  • 時間線:將新的動態(tài)信息按照時間順序插入到列表頭部,就可以實(shí)現(xiàn)類似社交媒體的時間線功能。
  • 排行榜:可以對熱銷的商品進(jìn)行榜單排序。

熱銷榜單功能

生活中的例子

【Redis從頭學(xué)-5】Redis中的List數(shù)據(jù)類型實(shí)戰(zhàn)場景之天貓熱銷榜單,Redis從頭學(xué),redis,list,緩存

排序規(guī)則

【Redis從頭學(xué)-5】Redis中的List數(shù)據(jù)類型實(shí)戰(zhàn)場景之天貓熱銷榜單,Redis從頭學(xué),redis,list,緩存

仿造示例

通過上述生活中的例子,來描述一個熱銷榜單的應(yīng)用場景。實(shí)際場景要比這個復(fù)雜的多哦,這里只是感受List數(shù)據(jù)類型的結(jié)構(gòu)。
實(shí)現(xiàn)步驟

  • 創(chuàng)建一個洗面奶實(shí)體類WashMilk。字段內(nèi)容包含字段包含id、品牌名稱、好評率、成交額、回購人數(shù)、累計銷量等。
  • 按照加權(quán)平均算法得出綜合權(quán)衡的平均值。根據(jù)好評率、成交額、回購人數(shù)、累計銷量因素,對洗面奶進(jìn)行排序。
  • 存入Redis中。使用rightPushAll。因?yàn)榕判蚴前唇敌蚺判虻模幸獜挠也迦?,最大值才能展現(xiàn)在第一個。
若序列為:5,4,3,21。則按右插法,最終結(jié)果為
5
4
3
2
1
左插法,結(jié)果為:
1
2
3
4
5

加權(quán)平均算法介紹

加權(quán)平均算法(Weighted Average Algorithm)是一種常見的統(tǒng)計算法,用于計算一組數(shù)據(jù)的加權(quán)平均值。在加權(quán)平均算法中,每個數(shù)據(jù)點(diǎn)都有一個對應(yīng)的權(quán)重,權(quán)重可以表示數(shù)據(jù)的重要性或貢獻(xiàn)度。
加權(quán)平均算法的計算公式如下:
加權(quán)平均值 = (數(shù)據(jù)點(diǎn)1 × 權(quán)重1 + 數(shù)據(jù)點(diǎn)2 × 權(quán)重2 + ... + 數(shù)據(jù)點(diǎn)n × 權(quán)重n) / (權(quán)重1 + 權(quán)重2 + ... + 權(quán)重n)
其中,數(shù)據(jù)點(diǎn)1、數(shù)據(jù)點(diǎn)2等表示要計算加權(quán)平均值的數(shù)據(jù)點(diǎn),權(quán)重1、權(quán)重2等表示對應(yīng)數(shù)據(jù)點(diǎn)的權(quán)重。
加權(quán)平均算法適用于以下場景:

  1. 數(shù)據(jù)點(diǎn)具有不同的重要性或權(quán)重,需要考慮這些差異并進(jìn)行加權(quán)處理。
  2. 某些數(shù)據(jù)點(diǎn)可能對結(jié)果產(chǎn)生較大的影響,而某些數(shù)據(jù)點(diǎn)可能對結(jié)果影響較小,需要根據(jù)權(quán)重進(jìn)行調(diào)節(jié)。
  3. 數(shù)據(jù)點(diǎn)的權(quán)重可能隨時間、條件或其他因素而變化,可以動態(tài)調(diào)整計算結(jié)果。
    舉例來說,假設(shè)你要計算一組考試成績的加權(quán)平均值,其中不同科目的權(quán)重不同,例如數(shù)學(xué)的權(quán)重為0.4,英語的權(quán)重為0.3,物理的權(quán)重為0.3。
    你可以按照如下方式計算加權(quán)平均值:
    加權(quán)平均值 = (數(shù)學(xué)成績 × 0.4 + 英語成績 × 0.3 + 物理成績 × 0.3) / (0.4 + 0.3 + 0.3)
    通過加權(quán)平均算法,可以根據(jù)不同數(shù)據(jù)點(diǎn)的權(quán)重,將其貢獻(xiàn)度考慮在內(nèi),得出一個綜合權(quán)衡的平均值。這個平均值更能反映數(shù)據(jù)的實(shí)際情況和重要性。

簡易代碼

@Test
	void hotRank(){
		String DAILY_RANK_KEY="hotRank:daily";
		//模擬數(shù)據(jù)庫查詢到的數(shù)據(jù)
		WashMilk washMilk=new WashMilk(1,"香奈兒",0.65,10000,800,100000);
		WashMilk washMilk2=new WashMilk(2,"至本",0.85,60040,10000,25465);
		WashMilk washMilk3=new WashMilk(3,"蘭蔻",0.60,343543,6000,4534);
		WashMilk washMilk4=new WashMilk(4,"雅詩蘭黛",0.67,50000,800,3655);
		WashMilk washMilk5=new WashMilk(5,"歐萊雅",0.99,10000,40000,42443);
		WashMilk washMilk6=new WashMilk(6,"薇姿",0.65,32443,800,43244);
		WashMilk washMilk7=new WashMilk(7,"嬌韻詩",0.82,10000,800,5435654);
		WashMilk washMilk8=new WashMilk(8,"相宜本草",0.95,65476,3214,4000);
		WashMilk washMilk9=new WashMilk(9,"佰草集",0.90,432535,800,3435);
		WashMilk washMilk10=new WashMilk(10,"倩碧",0.75,23423,4356,180000);
		List<WashMilk> washMilkList=new ArrayList<>();
		//將數(shù)據(jù)添加到list集合。
		Stream.of(washMilk,washMilk2,washMilk3,washMilk4,washMilk5,washMilk6,washMilk7,washMilk8,washMilk9,washMilk10).
				forEach(washMilkList::add);
		//通過加權(quán)平均法,對上述洗面奶綜合排序
		Collections.sort(washMilkList, new Comparator<WashMilk>() {
			@Override
			public int compare(WashMilk o1, WashMilk o2) {
				double wm1Score = o1.getGoodRate() * 0.4 + o1.getTurnover() * 0.3 + o1.getRepurchaseCount() * 0.2 + o1.getTotalSales() * 0.1;
				double wm2Score = o2.getGoodRate() * 0.4 + o2.getTurnover() * 0.3 + o2.getRepurchaseCount() * 0.2 + o2.getTotalSales() * 0.1;
				return Double.compare(wm2Score, wm1Score); // 按照降序排序
			}
		});
		//存入到redis中
		redisTemplate.opsForList().rightPushAll(DAILY_RANK_KEY,washMilkList);
		System.out.println(redisTemplate.opsForList().range(DAILY_RANK_KEY,0,-1));
	}

最終效果

最終效果展示如下圖所示
【Redis從頭學(xué)-5】Redis中的List數(shù)據(jù)類型實(shí)戰(zhàn)場景之天貓熱銷榜單,Redis從頭學(xué),redis,list,緩存

??寫在最后

有關(guān)于Redis中的List數(shù)據(jù)類型實(shí)戰(zhàn)應(yīng)用場景到此就結(jié)束了。功能演示代碼的邏輯簡單,目的是理解List數(shù)據(jù)類型的應(yīng)用,實(shí)際場景的邏輯根據(jù)具體需求而定。感謝大家的閱讀,希望大家在評論區(qū)對此部分內(nèi)容散發(fā)討論,便于學(xué)到更多的知識。


【Redis從頭學(xué)-5】Redis中的List數(shù)據(jù)類型實(shí)戰(zhàn)場景之天貓熱銷榜單,Redis從頭學(xué),redis,list,緩存文章來源地址http://www.zghlxwxcb.cn/news/detail-659343.html

到了這里,關(guān)于【Redis從頭學(xué)-5】Redis中的List數(shù)據(jù)類型實(shí)戰(zhàn)場景之天貓熱銷榜單的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Redis數(shù)據(jù)類型詳解與應(yīng)用場景

    目錄 1. 字符串(String) 1.1 使用場景 1.2 代碼示例 2. 列表(List) 2.1 使用場景 2.2 代碼示例 3. 集合(Set) 3.1 使用場景 3.2 代碼示例 4. 散列(Hash) 4.1 使用場景 4.2 代碼示例 5. 有序集合(Sorted Set) 5.1 使用場景 5.2 代碼示例 6. 二進(jìn)制位圖(Bitmap) 6.1 使用場景 6.2 代碼示例 7.

    2024年01月22日
    瀏覽(14)
  • Redis的五大數(shù)據(jù)類型及其使用場景

    redis是一個非??焖??的非關(guān)系數(shù)據(jù)庫??解決方案。其簡單的鍵值數(shù)據(jù)模型使 Redis 能夠處理大型數(shù)據(jù)集,同時保持令人印象深刻的讀寫速度和可用性。?redis提供了五種數(shù)據(jù)類型,分別是是:1、string(字符串);2、hash(哈希);3、list(列表);4、set(集合);5、sor

    2024年02月16日
    瀏覽(18)
  • 【Redis】九種數(shù)據(jù)類型及應(yīng)用場景

    【Redis】九種數(shù)據(jù)類型及應(yīng)用場景

    Redis是一個開源的,基于內(nèi)存的數(shù)據(jù)結(jié)構(gòu)存儲系統(tǒng),可以用作數(shù)據(jù)庫、緩存和消息中間件。它支持多種數(shù)據(jù)類型,包括字符串(String)、哈希表(Hash)、列表(List)、集合(Set)、有序集合(ZSet )、地理空間(Geo)、位圖(Bitmaps)、基數(shù)統(tǒng)計(HyperLogLog)、流信息(Stream

    2024年01月19日
    瀏覽(15)
  • Redis五大基本數(shù)據(jù)類型及其使用場景

    Redis五大基本數(shù)據(jù)類型及其使用場景

    Nosql = not only sql(不僅僅是SQL) 關(guān)系型數(shù)據(jù)庫:列+行,同一個表下數(shù)據(jù)的結(jié)構(gòu)是一樣的。 非關(guān)系型數(shù)據(jù)庫:數(shù)據(jù)存儲沒有固定的格式,并且可以進(jìn)行橫向擴(kuò)展。 NoSQL泛指非關(guān)系型數(shù)據(jù)庫,隨著web2.0互聯(lián)網(wǎng)的誕生,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫很難對付web2.0大數(shù)據(jù)時代!尤其是超大規(guī)

    2024年02月12日
    瀏覽(15)
  • Redis基本數(shù)據(jù)類型常用操作以及使用場景

    單值緩存 對象緩存 分布式鎖 計數(shù)器 分布式系統(tǒng)全局序列號?? ? ? 對象緩存 電商購物車 優(yōu)缺點(diǎn) 隊列 微博消息和微信公號消息? 微信抽獎小程序? 微信微博點(diǎn)贊,收藏,標(biāo)簽? ?集合操作實(shí)現(xiàn)微博微信關(guān)注模型 集合操作實(shí)現(xiàn)電商商品篩選? 常用操作 ?Zset集合操作實(shí)現(xiàn)排行

    2024年02月11日
    瀏覽(19)
  • Redis數(shù)據(jù)類型(list\set\zset)

    Redis數(shù)據(jù)類型(list\set\zset)

    \\\"maybe it\\\'s why\\\"? ????????列表類型是?來存儲多個 有序 的字符串,列表中的每個字符串稱為元素(element),?個列表最多可以存儲個2^32 - 1個元素。在Redis中,可以對列表兩端插?(push)和彈出(pop),還可以獲取指定范圍的元素列表、獲取指定索引下標(biāo)的元素等。列表是

    2024年02月11日
    瀏覽(18)
  • 【分享】Redis的五種基本數(shù)據(jù)類型和應(yīng)用場景

    【分享】Redis的五種基本數(shù)據(jù)類型和應(yīng)用場景

    Redis支持五種基本數(shù)據(jù)類型: String(字符串類型):可以是普通字符串,也可以是整數(shù)或浮點(diǎn)數(shù)值。可以設(shè)置過期時間;可以對字符串進(jìn)行append、get、set、incr、decr等操作。 Hash(哈希類型):類似于一個數(shù)組,其中每個元素都是一個field和value的鍵值對??梢詫φ麄€哈希表或

    2024年02月16日
    瀏覽(16)
  • 【Redis】1、學(xué)習(xí) Redis 的五大基本數(shù)據(jù)類型【String、Hash、List、Set、SortedSet】

    【Redis】1、學(xué)習(xí) Redis 的五大基本數(shù)據(jù)類型【String、Hash、List、Set、SortedSet】

    ?? Redis 誕生于2009年,全稱是 Re mote D ictionary S erver,遠(yuǎn)程字典服務(wù)器,是一個基于 內(nèi)存的鍵值型 NoSQL 數(shù)據(jù)庫 ?? 鍵值(key-value)型,value 支持多種不同數(shù)據(jù)結(jié)構(gòu),功能豐富 ?? 單線程,每個命令具備 原子性 ?? 低延遲,速度快(基于內(nèi)存、IO 多路復(fù)用、良好的編碼) ??支

    2024年02月11日
    瀏覽(23)
  • Redis的五種數(shù)據(jù)類型(string、hash 、list、set、zset)

    Redis的五種數(shù)據(jù)類型(string、hash 、list、set、zset)

    ???????? ????????Redis 提供了豐富的數(shù)據(jù)類型,常見的有五種: String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合) 。 ????????String 是最基本的 key-value 結(jié)構(gòu),key 是唯一標(biāo)識,value 是具體的值,value其實(shí)不僅是字符串, 也可以是數(shù)字(整

    2024年01月25日
    瀏覽(26)
  • Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

    Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

    一、String數(shù)據(jù)類型 1、SET/GET/APPEND/STRLEN (1)?APPEND (2)?SET/STRLEN 2、?INCR/ DECR/INCRBY/DECRBY (1)INCR/ DECR (2)?INCRBY/DECRBY INCRBY key increment:key值增加指定的整數(shù)DECRBY key decrement:key值減少指定的整數(shù) ?3、GETSET 4、?SETEX ?5、SETNX 6、MSET/MGET/MSETNX ?二、List數(shù)據(jù)類型 1、LPUSH/LPUSHX/

    2024年02月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包