在這里就不談redis的安裝與啟動啦,網(wǎng)上太多人寫這個了。

從最近的一個項目【鉆石奪寶】說起,如果大家有玩過一元奪寶或者全名奪寶的話,大概會知道如果參與人數(shù)多的話,每隔幾秒、快的話每隔一秒都會新生成一期,雖然app的流量不多,但還要先確定好如何生成期數(shù)。

第一個問題來了,那怎樣生成期數(shù)呢,自己想到的方法就是根據(jù)年月日時分秒毫秒 如果是在2016年08月21日11時57分30秒123毫秒生成的話,則把這些數(shù)字拼接在一起,

20160821115730123

看樣子感覺不錯,但是這樣子真的好嗎?期數(shù)肯定要是獨(dú)一無二的(原子性),第二個問題來了,如果剛好有兩期同時生成呢?

不要懷疑這個可能,這樣子就會造成串期了。而且涉及到錢,不可以這樣子馬虎。思考啊思考啊,這個時候想到redis。。。

好吧,寫到這里,終于和標(biāo)題有一點(diǎn)聯(lián)系了。

老實說,一開始就只想到redis的字符串命令,incr , 看到 incr這個命令,我覺得你也知道要怎樣做了,利用redis 的原子性(原子意味著操作的不可再分,要么執(zhí)行要么不執(zhí)行),用當(dāng)前日期作為鍵,值得話從1遞增。 比如今天是2016年8月21日 一開始是長這樣子的,生成299期

201608211,