Redis實現緩衝,你應該懂的哪些思路!

來源:互聯網
上載者:User

標籤:記憶體   使用   網站   home   開發   介紹   清空   設定檔   exe   

情境一:類似於微博,實現關注和被關注功能。

思路:

對每個使用者使用兩個集合類型鍵,用來儲存關注別人的使用者和被該使用者關注的使用者。當使用者A關注使用者B的時候,執行兩步操作:

sadd user:A B

sadd user:B A

問題1:

完成一次使用者關注操作,需要執行兩步代碼,第一次實現使用者A關注B,成為了B的粉絲。而第二步的時候,因為某種原因沒有執行或執行成功,則A並不知道B關注了自己

事務:

事務的原理是,先將一個事務的命令發送給Redis,然後再讓Redis依次執行這些命令。

一個事務中,要麼都執行成功,要麼都不執行

multi命令告訴redis準備介紹事務,先暫存起來,不要執行。然後發送需要一起執行的命令,最後exec結束事務,redis依次執行那麼命令

如果在執行exec命令之前,因為某種原因,redis斷掉了,Redis會清空事務隊列.

問題2:

有些時候,我們不僅需要通過事務來處理一些必須一起成功的動作,比如銀行轉賬,從銀行卡1轉出錢到銀行卡2,必須是都一起成功,不能說從銀行卡1中扣完錢之後,沒有進到銀行卡2賬上,兩者動作比如都要完成。還有些時候,我們既要一起完成,也需要根據其中一步操作的結果來進行下一步操作

WATCH命令

watch,事務中的另一個命令。監控一個或多個鍵,一旦其中一個鍵被修改或刪除,之後的事務就不會執行,一直到exec結束。

通過watch監控key1,之後修改了key1,所以事務中的set命令並沒有執行

情境二:限時活動,緩衝,驗證碼失效

在實際開發中,經常會遇到限時活動,郵箱失效時間,驗證碼失效時間等情境,這些資料需要在一定的時間內有效,到期刪除,如果在關係型資料庫中儲存這些資料,每次校正都需要查詢資料,對比時間,然後將資料置為失效,或者刪除。而在Redis中,則可以通過expire設定失效時間,自動刪除。

expire設定失效時間,時間單位秒。成功返回1,如果key不存在返回0

當 key 不存在時,返回 -2 。 當 key 存在但沒有設定剩餘存留時間時,返回 -1 。

注意:在 Redis 2.8 以前,當 key 不存在,或者 key 沒有設定剩餘存留時間時,命令都返回 -1

實現緩衝

為了提供網站的負載能力,需要將一個訪問頻路較高,且經過複雜計算或者IO資源消耗較大的操作的結果緩衝起來,並設定一個失效時間。每次使用者訪問的時候,先檢查該鍵是否存在,如果存在直接擷取該元素並返回,如果不存在,則經過一系列計算並將結果緩衝,設定失效時間,在返回給使用者

問題:

這種緩衝的實現,顯然會有兩個問題,第一個是緩衝都是存在內容中的,如果大量的使用緩衝會導致Redis沾滿記憶體,另一方面,為了防止Redis沾滿記憶體而設定失效時間的鍵,如果設定時間太短,就可能導致快取命中率過低並且大量內容白白浪費。

使用方式:

在開發中,很難合理的設定鍵的存留時間,所以可以限制Redis使用的最大記憶體,並讓Redis按照一定規則刪除一些不需要的鍵。

具體方式,修改設定檔的maxmemory參數

OS X下通過Homebrew安裝的redis的話,設定檔在/usr/local/etc/redis.conf

限制Redis最大記憶體之後,當超出了這個記憶體,會根據maxmemory-policy

指定的參數刪除不需要的鍵。當設定此參數為allkeys-lru,一旦Redis記憶體超過了限制值時,Redis會不斷刪除資料庫中最近最少使用的鍵,直到滿足了當前記憶體大小限制

Redis實現緩衝,你應該懂的哪些思路!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.