首頁 > 資料庫 > Redis > 主體

redis除了快取還能做什麼

藏色散人
發布: 2019-06-10 11:32:18
原創
2594 人瀏覽過

Redis應該說是目前最受歡迎的NoSQL資料庫之一了。 Redis通常被當作快取元件,用作快取資料。不過,除了可以快取數據,其實Redis可以做的事還有很多。

redis除了快取還能做什麼

下面列舉幾例,供大家參考。推薦:《redis影片教學

1、最新列表

例如新聞列表頁面最新的新聞列表,如果總數量很大的情況下,盡量不要使用select a from A limit 10,試試redis的LPUSH指令建構List,一個個順序都塞進去就可以啦。不過萬一內存清掉了咋辦?也簡單,查詢不到儲存key的話,用mysql查詢並且初始化一個List到redis中就好了。

2、排行榜應用程式

實現這個功能主要用到的redis資料型別是redis的有序集合zset。 zset 是set 類型的擴展,比原有的類型多了一個順序屬性,此屬性在每次插入資料時會自動調整順序值,保證value值按照一定順序連續排列。

我們假設是一個遊戲經驗值排行榜,那主要的實現想法是:

1、在一個新的玩家參與到遊戲中時,在redis中的zset中新增一筆記錄(記錄內容看具體的需求)score為0

2、當玩家的經驗值發生變化時,修改該玩家的score值

3、使用redis的ZREVRANGE方法獲取排行榜

3、計數器應用

Redis的指令都是原子性的,你可以輕鬆地利用INCR、DECR指令進行原子性操作,來建構計數系統。由於單線程,可以避免並發問題,保證不會出錯,而且100%毫秒級效能。

例如在一個web 應用程式中,如果想知道使用者在一年中每天的點擊量,那麼只要將使用者ID 以及相關的日期資訊作為鍵,並在每次使用者點擊頁面時,執行一次自增操作即可。

4、資料排重

Redis set是可以自動排重的,當你需要儲存一個清單數據,又不希望出現重複資料時,set是一個很好的選擇,而set提供了判斷某個成員是否在一個set集合內的重要介面。

實作方案:

set 的內部實作是value永遠是null的HashMap,實際上就是透過計算hash的方式來快速排重的,這也是set能提供判斷一個成員是否在集合內的原因。

5、即時的反垃圾系統

反垃圾系統通常都是基於關鍵字的,使用Redis儲存關係詞,能夠利用Redis的高性能,為監控系統提供穩定且精確的即時監控功能,典型的案例例如,郵件系統、評論系統等。

6、可以發佈、訂閱的即時訊息系統

Redis中Pub/Sub系統可以建立即時的訊息系統,例如,許多使用Pub/Sub建構的即時聊天應用。

設計想法:

服務端發送訊息(含標題,內容),標題依照一定規則存入redis,同時標題(以最少的資訊量)推送到客戶端,客戶點擊標題時,取得對應的內容閱讀.

如果未讀取,可以提示多少條未讀,redis能夠很快記數

根據一定時間清理快取

#技術實作:

需要redis資料庫,客戶端websocket,伺服器端websocket

7、佇列應用程式

##佇列在現在程式中應用十分廣泛,例如日誌推送、任務處理等等。以往通常使用http sqs實作佇列,其實,使用redis的list類型,也可以實現佇列。

更多redis技術文章,請造訪

redis使用教學欄位!

以上是redis除了快取還能做什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!