閱讀更多

11頂
0踩

研發管理

轉載新聞 Redis 在現實世界的 5 個用法

2018-04-11 11:19 by 副主編 jihong10102006 評論(3) 有42591人瀏覽
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"http:// 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的啟發。
  • 大小: 14.4 KB
來自: 代碼技巧
11
0
評論 共 3 條 請登錄后發表評論
3 樓 hongyabing 2018-05-02 15:25
2 樓 andy54321 2018-04-13 14:48
redis很強大。
尤其是結合 redis sentinel 和 3.x后支持 的 redis cluster。
1 樓 masuweng 2018-04-12 15:03
  

發表評論

您還沒有登錄,請您登錄后再發表評論

相關推薦

Global site tag (gtag.js) - Google Analytics 真人娱乐官方网站 若尔盖县| 响水县| 奈曼旗| 乌拉特后旗| 达州市| 梓潼县| 仁寿县| 社旗县| 屏东县| 望江县| 唐山市| 滁州市| 郎溪县| 晴隆县| 凉山| 荥阳市| 苏尼特右旗| 南郑县| 萨迦县| 富宁县| 广水市| 卢氏县| 格尔木市| 海林市| 贺兰县| 通州市| 揭东县| 桐乡市| 台前县| 西乌| 巫山县| 东丽区| 肃北| 临沭县| 乌审旗| 民权县| 白山市| 满城县| 乌审旗| 奉贤区| 澄江县| 杭锦旗| 繁昌县| 布尔津县| 九龙坡区| 朝阳县| 梁平县| 繁峙县| 陆丰市| 赣州市| 来凤县| 兴仁县| 英德市| 定西市| 杭州市| 颍上县| 上饶县| 芦山县| 长子县| 德昌县| 斗六市| 大安市| 乌恰县| 东台市| 浠水县| 常德市| 民权县| 汤阴县| 南平市| 洛阳市| 鄂托克旗| 左云县| 大同县| 绥滨县| 新丰县| 万安县| 蚌埠市| 池州市| 祁阳县| 静乐县| 南召县| 沙田区| 昌宁县| 玛沁县| 庆云县| 苏尼特右旗| 米易县| 子洲县| 阿克陶县| 桦甸市| 隆林| 洪洞县| 双江| 酒泉市| 山阳县| 凤台县| 墨江| 曲松县| 鄂尔多斯市| 松滋市| 灵寿县| 嘉祥县| 哈密市| 乐都县| 随州市| 浪卡子县| 荥阳市| 肃南| 彩票| 黔西县| 东至县| 南丰县| 乌拉特前旗| 揭西县| 寻乌县| 伊金霍洛旗| 札达县| 肇庆市| 汾阳市| 交口县| 万荣县| 巫山县| 荔浦县| 志丹县| 大足县| 岚皋县| 青田县| 沂南县| 遂昌县| 罗源县| 永平县| 美姑县| 和政县| 肥东县| 喀喇沁旗| 喀喇| 阳原县|