閱讀更多

11頂
0踩

研發管理

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

2018-04-11 11:19 by 副主編 jihong10102006 評論(3) 有47207人瀏覽
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的啟發。
  • 大小: 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
  

發表評論

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

相關推薦

  • Redis現實世界5用法(轉)

    Redis是一個強大的內存數據結構存儲,包含數據庫,緩存和消息代理等多種用途。大多數人經常認為它不過是一個簡單的鍵值存儲,但其實它有更多的能力。下面我將會總結一些Redis可以做的事情的真實例子。? 1.全頁面緩存?首先是整頁緩存。如果你正在使用服務器端呈現的內容,則不需要為每個單獨的請求重新渲染每個頁面。使用如Redis這樣的緩存,你可以緩存經常請求的內容,從而大大減少請求最多的頁面的延...

  • 歡迎來到現實世界

    作者:格雷戈爾侯珀(Gregor Hohpe) 工程師偏愛精確,整天與1和0打交道的軟件工程師更是如此。我們習慣了非即此彼的世界,凡事不是1就是0,不是真就是假,不是是就是否。在外鍵約束、原子事務和校驗和的保證下,一切都是清楚的、確定的。 可惜現在世界不是二進制的。顧客有可能撤消確認過的訂單,支票可能跳票,信件可能丟失,付款時間可能延遲,許下承諾還可能失信,數據記錄時不時就會出錯。用戶偏愛提供

  • 虛擬世界現實世界的未來

    基于現有科學技術來認知,虛擬世界現實世界是可以統一的,當然,AR也好,VR也好,VR+AR也好,這些技術都還處于發展的初期,但從科學認知上來說,虛擬世界現實世界實現轉換,正如時空轉換一樣,這都是必然的發展結果。冷核聚變+量子計算+人工智能+仿生學的組合爆發將會徹底改變這個世界,昨天有位朋友說我們是早生了100年,我理解他的意思。因為100年后,按照現在的發展速度,我們是可以成仙的。不過我們也趕

  • 工程事故與現實世界

  • 現實世界的虛擬神話

    本文摘自:[url]//www.doserv.com/news/f/2007-03-12/0017031936.shtml[/url]如今,服務器虛擬化已經成為業界的最為熱門的話題之一。虛擬化技術自問世以來,人們紛紛為其神奇的效果而贊不絕口。正如VMware創始人兼CEO Diane Greene所說:“虛擬基礎架構可以使x86服務器的利用率從現在的5-15%提高到...

  • 現實世界的近場通信

  • 現實世界里的深度學習

  • 現實世界中并為現實世界而演化

  • 虛擬世界可以融入現實世界,但不能取代現實世界。

    今天看到了美國MIT Media Lab(麻省理工學院媒體實驗室)的天才學生普拉納夫- (Prarnav Mistry),發明了一項結合實體世界和虛擬世界的科技。 [url]//www.bqqtcg.com.cn/news/12856-Sixth-Sense[/url] 真的很棒,我想未來的趨勢就應該這樣,也許還可以更先進,通過虛擬世界現實世界的結合是多么的和諧啊。 《未來戰...

  • 抽象世界現實世界的對照系統

    現實世界的對象,轉化為抽象世界的對象,叫做抽象轉化。 因此現實世界的對象和抽象世界的對象,他們之間必定存在某種對應關系,而這種對應關系便是對照映射。 我們要建立一種系統,這種系統所要實現的目的就是,當我們對抽象世界的對象進行某種操作的時候,相應的現實世界的對象會做出相對應的操作,而這種相應的操作符合對照映射。同樣,當實現世界的對象進行了某種操作時,抽象世界的對象也會做出相對應的操作,而這種相

  • Redis5 個常見應用場景

    前言Redis 是一個強大的內存型存儲,具有豐富的數據結構,使其可以應用于很多方面,包括作為數據庫、緩存、消息隊列等等。如果你的印象中Redis只是一個 key-value 存儲,那就錯過了Redis很多強大的功能,下面就是實際應用場景中5個最普遍的案例。1. 全頁面緩存如果你使用的是服務器端內容渲染,你又不想為每個請求重新渲染每個頁面,就可以使用 Redis 把常被請求的內容緩存起來,能夠大大的...

  • Redis5 個常見使用場景

    視頻匯總首頁://edu.51cto.com/lecturer/index/user_id-4626073.html======================================1、會話緩存(Session Cache)最常用的一種使用Redis的情景是會話緩存(session cache)。用Redis緩存會話比其他存儲(如Memcached)的優勢在于:Redis提供持...

  • 對象——從現實世界的抽象(*)

    關鍵詞: ? 對象 ? ?抽象 ? ?狀態 ? ?映射 ? ?靜態 對象和類 對象一詞,我們可能會聯想到一個物體。比如一支筆,一本書,等等。他們都可以稱為對象。對象其實就是現實生活中常見的事物,每個事物都可以叫做對象。反過來講,嚴格的說對象不能簡單的叫做事物,它是對事物的統稱。這是廣義的對象。 在現實世界中,在我們人類的視角下,會對各種事物進行一個分類,比如動

  • 大數據在現實世界中的應用

    新書 大數據在現實世界中的應用 Big Data Real World Applications

  • 編程是現實世界的抽象

    在我們的現實世界中,復雜而繁蕪。然而,總會有聰明的人將現實世界具有相同特性的特征進行一定程度的抽象總結。這種抽象后的一種理解,能夠被運用到各個方面?;髯魑死喔髦只疃姆糯篤?,能夠更加方便或者高效的幫助我們完成一定的工作,特別是計算機的出現和快速發展,使人類的計算效率放大了無數倍。隨著計算機的產生,編程也應運而生。編程作為一種規范和指引計算機行為的一種語言,能夠讓計算機按照我們的意愿去完成相應的...

  • https://blog.csdn.net/yah99_wolf/article/details/17305945

  • 黑馬程序員 現實世界與Java世界漫談

    ???? -------?android培訓、java培訓、期待與您交流! ---------- ??? 隨著對Java語言學習的不斷深入,逐漸發現用Java語言構建的世界其實和我們的現實世界好像。 ??? 比如說TCP,就像人們之間打電話,首先要拿起電話撥號,撥通后說“喂”,如果對方有反應就可以說具體的事了,說完事后還要掛電話。 ??? 比如說UDP,就像給另一個人寄信,需要知道另一個...

  • swift-Swift的現實世界日期處理工具類

    Swift的現實世界日期處理工具類

  • 大數據在現實世界中的使用

    介紹大數據在現實世界的存在方式,以及使用方式

  • 310個世界知名企業網站欣賞5

    310個世界知名企業網站欣賞5

Global site tag (gtag.js) - Google Analytics