新聞中心
搶購

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


咨詢
建站咨詢
