在這里就不談redis的安裝與啟動(dòng)啦,網(wǎng)上太多人寫這個(gè)了。
從最近的一個(gè)項(xiàng)目【鉆石奪寶】說起,如果大家有玩過一元奪寶或者全名奪寶的話,大概會(huì)知道如果參與人數(shù)多的話,每隔幾秒、快的話每隔一秒都會(huì)新生成一期,雖然app的流量不多,但還要先確定好如何生成期數(shù)。
第一個(gè)問題來了,那怎樣生成期數(shù)呢,自己想到的方法就是根據(jù)年月日時(shí)分秒毫秒 如果是在2016年08月21日11時(shí)57分30秒123毫秒生成的話,則把這些數(shù)字拼接在一起,
20160821115730123
看樣子感覺不錯(cuò),但是這樣子真的好嗎?期數(shù)肯定要是獨(dú)一無二的(原子性),第二個(gè)問題來了,如果剛好有兩期同時(shí)生成呢?
不要懷疑這個(gè)可能,這樣子就會(huì)造成串期了。而且涉及到錢,不可以這樣子馬虎。思考啊思考啊,這個(gè)時(shí)候想到redis。。。
好吧,寫到這里,終于和標(biāo)題有一點(diǎn)聯(lián)系了。
老實(shí)說,一開始就只想到redis的字符串命令,incr , 看到 incr這個(gè)命令,我覺得你也知道要怎樣做了,利用redis 的原子性(原子意味著操作的不可再分,要么執(zhí)行要么不執(zhí)行),用當(dāng)前日期作為鍵,值得話從1遞增。 比如今天是2016年8月21日 一開始是長這樣子的,生成299期
201608211,