Redis 在現實世界的 5 個用法
Redis是一個強大的記憶體資料結構儲存,包含資料庫,快取和訊息代理等多種用途。大多數人經常認為它不過是一個簡單的鍵值儲存,但其實它有更多的能力。下面我將會總結一些Redis可以做的事情的真例項子。
1.全頁面快取
首先是整頁快取。如果你正在使用伺服器端呈現的內容,則不需要為每個單獨的請求重新渲染每個頁面。使用如Redis這樣的快取,你可以快取經常請求的內容,從而大大減少請求最多的頁面的延遲,並且大多數框架針對Redis快取頁面都有hooks。
簡單命令
2.排行榜
Redis令人耀眼的地方之一就是排行榜。由於Redis在記憶體中,因此可以非常快速和高效地處理遞增和遞減。將此與每個請求執行SQL查詢比較,效能收益巨大!這與Redis的排序集相結合意味著你可以以毫秒為單位抓取列表中評分最高的專案,而且實現起來非常容易。
簡單命令
3.會話Session儲存
我所見的Redis最常見的用途是會話儲存。與其他會話儲存(如Memcache)不同,Redis可以保留資料,以便在快取停止的情況下,在重新啟動時,所有資料仍然存在。即便不是需要嚴格持續的任務,此功能仍可以為你的使用者省去大量的麻煩。沒有人會樂於見到他們的會話被無緣無故隨機刪掉。
簡單命令
4.佇列
使用Redis可以做的一個不太常見,但非常有用的事情是排隊。無論是電子郵件佇列還是其他應用程式使用的資料,你都可以在Redis中建立一個高效的佇列。任何熟悉堆疊以及會push和pop專案的開發人員都可以輕鬆自然地使用此功能。
簡單命令
5.pub/sub
Redis在真實世界的最終用法即我將在這篇文章中提出的pub / sub。這是Redis內建的最強大的功能之一;得到的可能是無限的。你可以建立一個實時聊天系統,在社交網路上觸發好友請求的通知等等。這個功能是Redis提供的最被低估的功能之一,但功能非常強大,而且使用簡單。
簡單命令
結論
我希望你會喜歡這些Redis在真實世界的使用。雖然這篇文章只抓住了Redis能為你做的事情的表面,但是我希望你能從中獲得應如何充分利用Redis的啟發。
1.全頁面快取
首先是整頁快取。如果你正在使用伺服器端呈現的內容,則不需要為每個單獨的請求重新渲染每個頁面。使用如Redis這樣的快取,你可以快取經常請求的內容,從而大大減少請求最多的頁面的延遲,並且大多數框架針對Redis快取頁面都有hooks。
簡單命令
/ Set the page that will last 1 minuteSET key "<html>...</html>" EX 60// Get the pageGET key
2.排行榜
Redis令人耀眼的地方之一就是排行榜。由於Redis在記憶體中,因此可以非常快速和高效地處理遞增和遞減。將此與每個請求執行SQL查詢比較,效能收益巨大!這與Redis的排序集相結合意味著你可以以毫秒為單位抓取列表中評分最高的專案,而且實現起來非常容易。
簡單命令
// Add an item to the sorted setZADD sortedSet 1 "one"// Get all items from the sorted setZRANGE 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 minuteSET randomHash "{userId}" EX 60// Get userIdGET 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 channelPUBLISH channel message// Recieve messages from a channelSUBSCRIBE channel
結論
我希望你會喜歡這些Redis在真實世界的使用。雖然這篇文章只抓住了Redis能為你做的事情的表面,但是我希望你能從中獲得應如何充分利用Redis的啟發。
來自: 程式碼技巧
相關文章
- GO實現Redis:GO實現Redis叢集(5)GoRedis
- Golang 實現 Redis(5): 使用跳錶實現 SortedSetGolangRedis
- 實現一個redis的分散式鎖Redis分散式
- Redis | 第5章 Redis 中的持久化技術《Redis設計與實現》Redis持久化
- Redis在.net中的使用(5)Redis持久化Redis持久化
- 同步秒殺實現:Redis在秒殺功能的實踐Redis
- 實現一個 Redis 分散式鎖Redis分散式
- 實現一個redis連線池Redis
- Redis 設計與實現 5:壓縮列表Redis
- redis的scan用法解析Redis
- 5個步驟實現有效的DevSecOpsdev
- [Redis原始碼閱讀]實現一個redis命令--nonzerodecrRedis原始碼
- 僅需6步,實現虛擬物體在現實世界的精準放置
- 使用redis實現5萬人同服的“相位技術”Redis
- GO實現Redis:GO實現Redis的AOF持久化(4)GoRedis持久化
- 現實和遊戲兩個平行世界的魔幻交替遊戲
- Rb(redis blaster),一個為 redis 實現 non-replicated 分片的 python 庫RedisASTPython
- Golang 實現 Redis(6): 實現 pipeline 模式的 redis 客戶端GolangRedis模式客戶端
- 5分鐘瞭解Redis的內部實現快速列表(quicklist)RedisUI
- MySQL實現Split用法MySql
- apply call bind的用法與實現APP
- 基於Redis實現一個分散式鎖Redis分散式
- redis個人原始碼分析2---dict的實現原理Redis原始碼
- 5分鐘實現一個Koa
- 5分鐘瞭解Redis的內部實現跳躍表(skiplist)Redis
- 關於 lambda 在 WebDriverWait () 中的用法實在不明白WebAI
- 【Shiro】5.多個Realm的使用和實現
- Redis在秒殺功能的實踐Redis
- Qdrant用法;Qdrant在langchain裡的用法LangChain
- springboot-stater + redis + lua 實現一個簡單的發號器(3)-- 實現篇Spring BootRedis
- 實現企業網路現代化的5個步驟
- 那個屠榜的T5模型,現在可以在中文上玩玩了模型
- redis分散式鎖的實現Redis分散式
- redis的有序集的實現原理Redis
- JS 的5個不良編碼習慣,現在就改掉吧JS
- 探索Redis設計與實現5:Redis內部資料結構詳解——quicklistRedis資料結構UI
- Nmap在實戰中的高階用法(詳解)
- [譯] 在 Flask 中使用 Redis Queue 實現非同步任務FlaskRedis非同步