鍵值存儲(chǔ)之外,Redis還有這些用法
Redis是一個(gè)強(qiáng)大的內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲(chǔ),包含數(shù)據(jù)庫(kù),緩存和消息代理等多種用途。大多數(shù)人經(jīng)常認(rèn)為它不過是一個(gè)簡(jiǎn)單的鍵值存儲(chǔ),但其實(shí)它有更多的能力。
下面給出一些實(shí)例
1.全頁(yè)面緩存
首先是整頁(yè)緩存。如果你正在使用服務(wù)器端呈現(xiàn)的內(nèi)容,則不需要為每個(gè)單獨(dú)的請(qǐng)求重新渲染每個(gè)頁(yè)面。使用如Redis這樣的緩存,你可以緩存經(jīng)常請(qǐng)求的內(nèi)容,從而大大減少請(qǐng)求最多的頁(yè)面的延遲,并且大多數(shù)框架針對(duì)Redis緩存頁(yè)面都有hooks。
簡(jiǎn)單命令
- / Set the page that will last 1 minute
 - SET key "<html>...</html>" EX 60
 - // Get the page
 - GET key
 
2.排行榜
Redis令人耀眼的地方之一就是排行榜。由于Redis在內(nèi)存中,因此可以非常快速和高效地處理遞增和遞減。將此與每個(gè)請(qǐng)求運(yùn)行SQL查詢比較,性能收益巨大!這與Redis的排序集相結(jié)合意味著你可以以毫秒為單位抓取列表中評(píng)分***的項(xiàng)目,而且實(shí)現(xiàn)起來非常容易。
簡(jiǎ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.會(huì)話Session存儲(chǔ)
我所見的Redis最常見的用途是會(huì)話存儲(chǔ)。與其他會(huì)話存儲(chǔ)(如Memcache)不同,Redis可以保留數(shù)據(jù),以便在緩存停止的情況下,在重新啟動(dòng)時(shí),所有數(shù)據(jù)仍然存在。即便不是需要嚴(yán)格持續(xù)的任務(wù),此功能仍可以為你的用戶省去大量的麻煩。沒有人會(huì)樂于見到他們的會(huì)話被無緣無故隨機(jī)刪掉。
簡(jiǎn)單命令
- // Set session that will last 1 minute
 - SET randomHash "{userId}" EX 60
 - // Get userId
 - GET randomHash
 
4.隊(duì)列
使用Redis可以做的一個(gè)不太常見,但非常有用的事情是排隊(duì)。無論是電子郵件隊(duì)列還是其他應(yīng)用程序使用的數(shù)據(jù),你都可以在Redis中創(chuàng)建一個(gè)高效的隊(duì)列。任何熟悉堆棧以及會(huì)push和pop項(xiàng)目的開發(fā)人員都可以輕松自然地使用此功能。
簡(jiǎn)單命令
- // 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在真實(shí)世界的最終用法即我將在這篇文章中提出的pub / sub。這是Redis內(nèi)置的***大的功能之一;得到的可能是***的。你可以創(chuàng)建一個(gè)實(shí)時(shí)聊天系統(tǒng),在社交網(wǎng)絡(luò)上觸發(fā)好友請(qǐng)求的通知等等。這個(gè)功能是Redis提供的最被低估的功能之一,但功能非常強(qiáng)大,而且使用簡(jiǎn)單。
簡(jiǎn)單命令
- // Add a message to a channel
 - PUBLISH channel message
 - // Recieve messages from a channel
 - SUBSCRIBE channel
 
結(jié)論
希望這些Redis的用法能夠?qū)δ兴鶐椭?。雖然這篇文章只介紹了Redis的幾種用法,但是,希望你能從中獲得更好利用Redis的靈感。
















 
 
 













 
 
 
 