JavaEE資源分享 Redisd總結

2021-08-13 20:05:23 字數 2739 閱讀 9484

redisd的應用場景

1、會話快取(session cache)

最常用的一種使用redis的情景是會話快取(session cache)。用redis 快取會話比其他儲存(如memcached)的優勢在於:redis提供持久化。當維護乙個不是嚴格要求一致性的快取時,如果使用者的購物車資訊全部丟失,大部分人都會不高興的,現在,他們還會這樣嗎?

幸運的是,隨著 redis 這些年的改進,很容易找到怎麼恰當的使用redis來快取會話的文件。甚至廣為人知的商業平台magento也提供redis的外掛程式。

2、全頁快取(fpc)

除基本的會話token之外,redis還提供很簡便的fpc平台。回到一致性問題,即使重啟了redis例項,因為有磁碟的持久化,使用者也不會看到頁面載入速度的下降,這是乙個極大改進,類似php本地fpc。

再次以magento為例,magento提供乙個外掛程式來使用redis作為全頁快取後端。

此外,對wordpress的使用者來說,pantheon有乙個非常好的外掛程式wp-redis,這個外掛程式能幫助你以最快速度載入你曾瀏覽過的頁面。

3、佇列

reids在記憶體儲存引擎領域的一大優點是提供 list 和 set 操作,這使得redis能作為乙個很好的訊息佇列平台來使用。redis作為佇列使用的操作,就類似於本地程式語言(如python)對 list 的 push/pop 操作。

如果你快速的在google中搜尋「redis queues」,你馬上就能找到大量的開源專案,這些專案的目的就是利用redis建立非常好的後端工具,以滿足各種佇列需求。

4.排行榜/計數器

redis在記憶體中對數字進行遞增或遞減的操作實現的非常好。集合(set)和有序集合(sorted set)也使得我們在執行這些操作的時候變的非常簡單,redis只是正好提供了這兩種資料結構。所以,我們要從排序集合中獲取到排名最靠前的10個使用者–我們稱之為「user_scores」,我們只需要像下面一樣執行即可:

當然,這是假定你是根據你使用者的分數做遞增的排序。如果你想返回使用者及使用者的分數,你需要這樣執行:

zrange user_scores 0 10 withscores

agora games就是乙個很好的例子,用ruby實現的,它的排行榜就是使用redis來儲存資料的,你可以在這裡看到。

5、發布/訂閱

最後(但肯定不是最不重要的)是redis的發布/訂閱功能。發布/訂閱的使用場景確實非常多。我已看見人們在社交網路連線中使用,還可作為基於發布/訂閱的指令碼觸發器,甚至用redis的發布/訂閱功能來建立聊天系統!(不,這是真的,你可以去核實)。

redis提供的所有特性中,我感覺這個是喜歡的人最少的乙個,雖然它為使用者提供如果此多功能。

redis資料結構

redis是一種高階的key:value儲存系統,其中value支援五種資料型別:

1.字串(strings)

2.字串列表(lists)

3.字串集合(sets)

4.有序字串集合(sorted sets)

5.雜湊(hashes)

而關於key,有幾個點要提醒大家:

1.key不要太長,盡量不要超過1024位元組,這不僅消耗記憶體,而且會降低查詢的效率;

2.key也不要太短,太短的話,key的可讀性會降低;

3.在乙個專案中,key最好使用統一的命名模式,例如user:10000:passwd。

redis持久化 – 兩種方式

rdb,簡而言之,就是在不同的時間點,將redis儲存的資料生成快照並儲存到磁碟等介質上;

aof,則是換了乙個角度來實現持久化,那就是將redis執行過的所有寫指令記錄下來,在下次redis重新啟動時,只要把這些寫指令從前到後再重複執行一遍,就可以實現資料恢復了。

其實rdb和aof兩種方式也可以同時使用,在這種情況下,如果redis重啟的話,則會優先採用aof方式來進行資料恢復,這是因為aof方式的資料恢復完整度更高。

如果你沒有資料持久化的需求,也完全可以關閉rdb和aof方式,這樣的話,redis將變成乙個純記憶體資料庫,+持久化--就像memcache一樣。

【聊聊redis持久化 – rdb】

rdb方式,是將redis某一時刻的資料持久化到磁碟中,是一種快照式的持久化方法。

redis在進行資料持久化的過程中,會先將資料寫入到乙個臨時檔案中,待持久化過程都結束了,才會用這個臨時檔案替換上次持久化好的檔案。正是這種特性,讓我們可以隨時來進行備份,因為快照檔案總是完整可用的。

對於rdb方式,redis會單獨建立(fork)乙個子程序來進行持久化,而主程序是不會進行任何io操作的,這樣就確保了redis極高的效能。

如果需要進行大規模資料的恢復,且對於資料恢復的完整性不是非常敏感,那rdb方式要比aof方式更加的高效。

雖然rdb有不少優點,但它的缺點也是不容忽視的。如果你對資料的完整性非常敏感,那麼rdb方式就不太適合你,因為即使你每5分鐘都持久化一次,當redis故障時,仍然會有近5分鐘的資料丟失。所以,redis還提供了另一種持久化方式,那就是aof

【聊聊redis持久化 – aof】

如前面介紹的,aof方式是將執行過的寫指令記錄下來,在資料恢復時按照從前到後的順序再將指令都執行一遍,就這麼簡單。

預設的aof持久化策略是每秒鐘fsync一次(fsync是指把快取中的寫指令記錄到磁碟中),因為在這種情況下,redis仍然可以保持很好的處理效能,即使redis故障,也只會丟失最近1秒鐘的資料。

如果在追加日誌時,恰好遇到磁碟空間滿、inode滿或斷電等情況導致日誌寫入不完整,也沒有關係,redis提供了redis-check-aof工具,可以用來進行日誌修復。

分享VC資源

前幾天從當當定了一本 visual c 入門與提高 http product.dangdang.com product.aspx?product id 20375864。感覺是一本很不錯的vc書。同時還從網上找到了對應的ppt。給大家分享一下。第1章 ide安裝與使用 http edu.docin....

最新資源分享

最新資源分享 訊息推送 訊息佇列 阿里雲提供了免費的訊息佇列mq,可以實現手機端的訊息推送 文件見附件ons sdk.zip 而阿里雲的訊息佇列mq 完全服務 http mq標準,幾乎可以與activemq 無縫對接 idea最新版啟用碼 註冊碼 參考 天氣預報介面 用於pc端 社交分享介面 htm...

內網分享資源

內網最簡單是開ftp 別人使用flashfxp utorrent 可以搭建乙個內網分享 執行,點選 config 設定埠 tcp port tracker執行的 tcp埠 bitcomettracker是乙個高效能增強型 bittorrent 伺服器。bitcomettracker 同時支援 和ud...