首頁  >  文章  >  web前端  >  5個Redis的常見應用場景實例分析

5個Redis的常見應用場景實例分析

小云云
小云云原創
2018-02-28 15:11:177049瀏覽

如果你的印像中Redis只是一個key-value 存儲,那就錯過了Redis很多強大的功能,Redis 是一個強大的內存型存儲,具有豐富的數據結構,使其可以應用於很多方面,包括作為資料庫、快取、訊息隊列等等。

1. 全頁面快取

如果你使用的是伺服器端內容渲染,你又不想為每個請求重新渲染每個頁面,就可以使用Redis 把常被請求的內容快取起來,能夠大大的降低頁面請求的延遲,已經有很多框架用Redis來快取頁面,這就是頁面靜態化的一種方式。

// Set the page that will last 1 minute
SET key "<html>...</html>" EX 60
// Get the page
GET key

2. 排行榜

Redis 基於內存,可以非常快速高效的處理增加和減少的操作,相比於使用SQL 請求的處理方式,性能的提升是非常巨大的。

Redis 的有序集合可以輕鬆實現“從一個大型列表中取得排名最高的N個元素”,毫秒級,而且非常簡單。

// Add an item to the sorted set
ZADD sortedSet 1 "one"
// Get all items from the sorted set
ZRANGE sortedSet 0 -1
// Get all items from the sorted set with their score
ZRANGE sortedSet 0 -1 WITHSCORES

3. Session 存儲

這可能是應用最廣的點了,相比較於類似memcache 的session 存儲,Redis 具有緩存數據持久化的能力,當緩存因出現問題而重啟後,之前的快取資料還在那兒,這個就比較實用,避免了因為session突然消失帶來的使用者體驗問題。

// Set session that will last 1 minute
SET randomHash "{userId}" EX 60
// Get userId
GET randomHash

4. 佇列

例如 email 的發送佇列、等待被其他應用程式消費的資料佇列,Redis 可以輕鬆而自然的創造出一個高效率的佇列。

// Add a Message
HSET messages <id> <message>
ZADD due <due_timestamp> <id>
// Recieving Message
ZRANGEBYSCORE due -inf <current_timestamp> LIMIT 0 1
HGET messages <message_id>
// Delete  Message
ZREM due <message_id>
HDEL messages <message_id>

5. 發布/訂閱

pub/sub 是 Redis 內建的一個非常強大的特性,例如可以創建一個即時的聊天系統、社交網路中的通知觸發器等等。

// Add a message to a channel
PUBLISH channel message
// Recieve messages from a channel
SUBSCRIBE channel

相關建議:

##PHP使用Redis實例講解

PHP關於redis計數器類別定義與用法

#PHP專案中需要用到Redis的場景

以上是5個Redis的常見應用場景實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn