新聞中心
搶購

在涼州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站制作 網(wǎng)站設(shè)計制作按需網(wǎng)站建設(shè),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站制作,涼州網(wǎng)站建設(shè)費用合理。
Redis 是一個開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,主要用于數(shù)據(jù)的存儲、查詢,現(xiàn)在也廣泛用于分布式鎖、消息系統(tǒng)等領(lǐng)域,其中權(quán)重型集合的實現(xiàn)也被廣泛應(yīng)用。
權(quán)重型集合通常用在搶購活動中,主要思想是通過設(shè)定一系列不同的權(quán)重值來給搶購機會賦予不同的搶購幾率,通過抽取到重復(fù)值或者錯過值來構(gòu)成我們需要的搶購結(jié)果,也可以用于分流、抽獎等場景。 Redis權(quán)重型集合實現(xiàn)對這種場景很有效,簡單來說只需要實現(xiàn)以下步驟:
(1)初始化一個集合: Redis 中通過SortedSets來實現(xiàn),代碼如下:
jedis.zadd("zset", member1Score, member1);
...
jedis.zadd("zset", memberNScore, memberN);
其中zset 表示集合的名字,memberScore 代表用戶的權(quán)重值,member名字為用戶的名字,可以是一個ID或其他字段。
(2)獲取搶購結(jié)果:通過ZRANGEBYSCORE函數(shù)實現(xiàn),代碼如下:
Set result = jedis.zrangeByScore("zset", min, max);
這里min 和max 分別代表前一個用戶取到的最大權(quán)重值和當(dāng)前用戶獲取到的權(quán)重值,jedis.zrangeByScore函數(shù)會返回[min,max]范圍內(nèi)的所有權(quán)重和對應(yīng)的名字,并以set的形式返回,它也是有順序的,返回的權(quán)重是由小到大排列。
(3)更新權(quán)重:當(dāng)一個用戶搶到指定商品之后,就需要將他的權(quán)重更新,通過 ZINCRBY 函數(shù)實現(xiàn),代碼如下:
jedis.zincrby("zset", delta,member);
其中 delta 表示要增加的幅度,member 為要更新的用戶名,這樣每次更新完成,就能把當(dāng)前用戶的權(quán)重加上指定的幅度,避免重復(fù)抽取或者錯過機會。
以上就是Redis 維護權(quán)重型集合實現(xiàn)搶購的實現(xiàn)方法,靈活運用Redis的API,可以實現(xiàn)一些具有神奇效果的應(yīng)用場景。
創(chuàng)新互聯(lián)【028-86922220】值得信賴的成都網(wǎng)站建設(shè)公司。多年持續(xù)為眾多企業(yè)提供成都網(wǎng)站建設(shè),成都品牌網(wǎng)站設(shè)計,成都高端網(wǎng)站制作開發(fā),SEO優(yōu)化排名推廣服務(wù),全網(wǎng)營銷讓企業(yè)網(wǎng)站產(chǎn)生價值。
新聞名稱:Redis維護的權(quán)重型集合實現(xiàn)(redis集合權(quán)重)
文章路徑:http://m.5511xx.com/article/cocsepi.html


咨詢
建站咨詢
