新聞中心
搶購(gòu)

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


咨詢
建站咨詢
