1. 程式人生 > 資料庫 >Redis 在真實世界的 5 個用法

Redis 在真實世界的 5 個用法

Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。

Redis是一個強大的記憶體資料結構儲存,包含資料庫,快取和訊息代理等多種用途。大多數人經常認為它不過是一個簡單的鍵值儲存,但其實它有更多的能力。下面我將會總結一些Redis可以做的事情的真例項子。

1、全頁面快取

首先是整頁快取。如果你正在使用伺服器端呈現的內容,則不需要為每個單獨的請求重新渲染每個頁面。使用如Redis這樣的快取,你可以快取經常請求的內容,從而大大減少請求最多的頁面的延遲,並且大多數框架針對Redis快取頁面都有hooks。

簡單命令

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

2、排行榜

Redis令人耀眼的地方之一就是排行榜。由於Redis在記憶體中,因此可以非常快速和高效地處理遞增和遞減。將此與每個請求執行SQL查詢比較,效能收益巨大!這與Redis的排序集相結合意味著你可以以毫秒為單位抓取列表中評分最高的專案,而且實現起來非常容易。

簡單命令

// 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儲存

我所見的Redis最常見的用途是會話儲存。與其他會話儲存(如Memcache)不同,Redis可以保留資料,以便在快取停止的情況下,在重新啟動時,所有資料仍然存在。即便不是需要嚴格持續的任務,此功能仍可以為你的使用者省去大量的麻煩。沒有人會樂於見到他們的會話被無緣無故隨機刪掉。

簡單命令

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

4、佇列

使用Redis可以做的一個不太常見,但非常有用的事情是排隊。無論是電子郵件佇列還是其他應用程式使用的資料,你都可以在Redis中建立一個高效的佇列。任何熟悉堆疊以及會push和pop專案的開發人員都可以輕鬆自然地使用此功能。

簡單命令

// 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在真實世界的最終用法即我將在這篇文章中提出的pub / sub。這是Redis內建的最強大的功能之一;得到的可能是無限的。你可以建立一個實時聊天系統,在社交網路上觸發好友請求的通知等等。這個功能是Redis提供的最被低估的功能之一,但功能非常強大,而且使用簡單。

簡單命令

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

結論

我希望你會喜歡這些Redis在真實世界的使用。雖然這篇文章只抓住了Redis能為你做的事情的表面,但是我希望你能從中獲得應如何充分利用Redis的啟發。