成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

redis的應(yīng)用場景

這篇文章主要探討了redis的應(yīng)用場景,具有一定借鑒價值,需要的朋友可以參考下。如下資料是關(guān)于redis的應(yīng)用場景內(nèi)容。

創(chuàng)新互聯(lián)主要企業(yè)基礎(chǔ)官網(wǎng)建設(shè),電商平臺建設(shè),移動手機平臺,小程序制作等一系列專為中小企業(yè)按需開發(fā)網(wǎng)站產(chǎn)品體系;應(yīng)對中小企業(yè)在互聯(lián)網(wǎng)運營的各種問題,為中小企業(yè)在互聯(lián)網(wǎng)的運營中保駕護航。

一:緩存——熱數(shù)據(jù)

熱點數(shù)據(jù)(經(jīng)常會被查詢,但是不經(jīng)常被修改或者刪除的數(shù)據(jù)),首選是使用redis緩存,畢竟強大到冒泡的QPS和極強的穩(wěn)定性不是所有類似工具都有的,而且相比于memcached還提供了豐富的數(shù)據(jù)類型可以使用,另外,內(nèi)存中的數(shù)據(jù)也提供了AOF和RDB等持久化機制可以選擇,要冷、熱的還是忽冷忽熱的都可選。

結(jié)合具體應(yīng)用需要注意一下:很多人用spring的AOP來構(gòu)建redis緩存的自動生產(chǎn)和清除,過程可能如下:

Select 數(shù)據(jù)庫前查詢redis,有的話使用redis數(shù)據(jù),放棄select 數(shù)據(jù)庫,沒有的話,select 數(shù)據(jù)庫,然后將數(shù)據(jù)插入redis

update或者delete數(shù)據(jù)庫錢,查詢redis是否存在該數(shù)據(jù),存在的話先刪除redis中數(shù)據(jù),然后再update或者delete數(shù)據(jù)庫中的數(shù)據(jù)

上面這種操作,如果并發(fā)量很小的情況下基本沒問題,但是高并發(fā)的情況請注意下面場景:

為了update先刪掉了redis中的該數(shù)據(jù),這時候另一個線程執(zhí)行查詢,發(fā)現(xiàn)redis中沒有,瞬間執(zhí)行了查詢SQL,并且插入到redis中一條數(shù)據(jù),回到剛才那個update語句,這個悲催的線程壓根不知道剛才那個該死的select線程犯了一個彌天大錯!于是這個redis中的錯誤數(shù)據(jù)就永遠的存在了下去,直到下一個update或者delete。

二:計數(shù)器

諸如統(tǒng)計點擊數(shù)等應(yīng)用。由于單線程,可以避免并發(fā)問題,保證不會出錯,而且100%毫秒級性能!爽。

命令:INCRBY

當(dāng)然爽完了,別忘記持久化,畢竟是redis只是存了內(nèi)存!

三:隊列

相當(dāng)于消息系統(tǒng),ActiveMQ,RocketMQ等工具類似,但是個人覺得簡單用一下還行,如果對于數(shù)據(jù)一致性要求高的話還是用RocketMQ等專業(yè)系統(tǒng)。

由于redis把數(shù)據(jù)添加到隊列是返回添加元素在隊列的第幾位,所以可以做判斷用戶是第幾個訪問這種業(yè)務(wù)

隊列不僅可以把并發(fā)請求變成串行,并且還可以做隊列或者棧使用

四:位操作(大數(shù)據(jù)處理)

用于數(shù)據(jù)量上億的場景下,例如幾億用戶系統(tǒng)的簽到,去重登錄次數(shù)統(tǒng)計,某用戶是否在線狀態(tài)等等。

想想一下騰訊10億用戶,要幾個毫秒內(nèi)查詢到某個用戶是否在線,你能怎么做?千萬別說給每個用戶建立一個key,然后挨個記(你可以算一下需要的內(nèi)存會很恐怖,而且這種類似的需求很多,騰訊光這個得多花多少錢。。)好吧。這里要用到位操作——使用setbit、getbit、bitcount命令。

原理是:

redis內(nèi)構(gòu)建一個足夠長的數(shù)組,每個數(shù)組元素只能是0和1兩個值,然后這個數(shù)組的下標(biāo)index用來表示我們上面例子里面的用戶id(必須是數(shù)字哈),那么很顯然,這個幾億長的大數(shù)組就能通過下標(biāo)和元素值(0和1)來構(gòu)建一個記憶系統(tǒng),上面我說的幾個場景也就能夠?qū)崿F(xiàn)。用到的命令是:setbit、getbit、bitcount

五:分布式鎖與單線程機制

驗證前端的重復(fù)請求(可以自由擴展類似情況),可以通過redis進行過濾:每次請求將request Ip、參數(shù)、接口等hash作為key存儲redis(冪等性請求),設(shè)置多長時間有效期,然后下次請求過來的時候先在redis中檢索有沒有這個key,進而驗證是不是一定時間內(nèi)過來的重復(fù)提交

秒殺系統(tǒng),基于redis是單線程特征,防止出現(xiàn)數(shù)據(jù)庫“爆破”

全局增量ID生成,類似“秒殺”

六:最新列表

例如新聞列表頁面最新的新聞列表,如果總數(shù)量很大的情況下,盡量不要使用select a from A limit 10這種low貨,嘗試redis的 LPUSH命令構(gòu)建List,一個個順序都塞進去就可以啦。不過萬一內(nèi)存清掉了咋辦?也簡單,查詢不到存儲key的話,用MySQL查詢并且初始化一個List到redis中就好了。

以上就是redis使用場景介紹的全部內(nèi)容。

看完上述內(nèi)容,你們對redis的應(yīng)用場景有進一步的了解嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀。

本文標(biāo)題:redis的應(yīng)用場景
文章轉(zhuǎn)載:http://jinyejixie.com/article36/posppg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、云服務(wù)器微信公眾號、靜態(tài)網(wǎng)站、網(wǎng)站改版、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司
龙胜| 同心县| 平南县| 德保县| 乌兰察布市| 华亭县| 宁波市| 靖安县| 平度市| 镇平县| 江山市| 庄河市| 广宗县| 望都县| 望都县| 金沙县| 枣阳市| 新闻| 沙坪坝区| 中宁县| 建昌县| 临洮县| 甘南县| 小金县| 霸州市| 禹州市| 禹州市| 韶山市| 丹巴县| 景泰县| 澄江县| 临潭县| 古交市| 张北县| 山西省| 文化| 崇礼县| 乌审旗| 吉林市| 辽阳市| 沁水县|