Redis的使用場景

2021-09-10 12:00:22 字數 1862 閱讀 3803

型別

簡介特性

場景string(字串)

二進位制安全

可以包含任何資料,比如jpg或者序列化的物件,乙個鍵最大能儲存512m

hash(字典)

鍵值對集合,即程式語言中的map型別

適合儲存物件,並且可以像資料庫中update乙個屬性一樣只修改某一項屬性值(memcached中需要取出整個字串反序列化成物件修改完再序列化存回去)

儲存、讀取、修改使用者屬性

list(列表)

鍊錶(雙向鍊錶)

增刪快,提供了操作某一段元素的api

1,最新訊息排行等功能(比如朋友圈的時間線) 2,訊息佇列

set(集合)

雜湊表實現,元素不重複

1,新增、刪除,查詢的複雜度都是o(1) 2,為集合提供了求交集、並集、差集等操作

sorted set(有序集合)

將set中的元素增加乙個權重引數score,元素按score有序排列

資料插入集合時,已經進行天然排序

1,排行榜 2,帶權重的訊息佇列

1、會話快取(session cache)

最常用的一種使用redis的情景是會話快取(session cache)。用redis快取會話比其他儲存(如memcached)的優勢在於:redis提供持久化。當維護乙個不是嚴格要求一致性的快取時,如果使用者的購物車資訊全部丟失,大部分人都會不高興的,現在,他們還會這樣嗎?

幸運的是,隨著 redis 這些年的改進,很容易找到怎麼恰當的使用redis來快取會話的文件。甚至廣為人知的商業平台magento也提供redis的外掛程式。

2、全頁快取(fpc)

除基本的會話token之外,redis還提供很簡便的fpc平台。回到一致性問題,即使重啟了redis例項,因為有磁碟的持久化,使用者也不會看到頁面載入速度的下降,這是乙個極大改進,類似php本地fpc。

再次以magento為例,magento提供乙個外掛程式來使用redis作為全頁快取後端。

此外,對wordpress的使用者來說,pantheon有乙個非常好的外掛程式  wp-redis,這個外掛程式能幫助你以最快速度載入你曾瀏覽過的頁面。

3、佇列

reids在記憶體儲存引擎領域的一大優點是提供 list 和 set 操作,這使得redis能作為乙個很好的訊息佇列平台來使用。redis作為佇列使用的操作,就類似於本地程式語言(如python)對 list 的 push/pop 操作。

如果你快速的在google中搜尋「redis queues」,你馬上就能找到大量的開源專案,這些專案的目的就是利用redis建立非常好的後端工具,以滿足各種佇列需求。例如,celery有乙個後台就是使用redis作為broker,你可以從這裡去檢視。

排行榜/計數器

redis在記憶體中對數字進行遞增或遞減的操作實現的非常好。集合(set)和有序集合(sorted set)也使得我們在執行這些操作的時候變的非常簡單,redis只是正好提供了這兩種資料結構。所以,我們要從排序集合中獲取到排名最靠前的10個使用者–我們稱之為「user_scores」,我們只需要像下面一樣執行即可:

當然,這是假定你是根據你使用者的分數做遞增的排序。如果你想返回使用者及使用者的分數,你需要這樣執行:

zrange user_scores 0 10 withscores

agora games就是乙個很好的例子,用ruby實現的,它的排行榜就是使用redis來儲存資料的,你可以在這裡看到。

5、發布/訂閱

最後(但肯定不是最不重要的)是redis的發布/訂閱功能。發布/訂閱的使用場景確實非常多。我已看見人們在社交網路連線中使用,還可作為基於發布/訂閱的指令碼觸發器,甚至用redis的發布/訂閱功能來建立聊天系統!(不,這是真的,你可以去核實)。

redis提供的所有特性中,我感覺這個是喜歡的人最少的乙個,雖然它為使用者提供如果此多功能。

redis使用場景

最近要去面試php程式設計師,去各家招聘 看看,都要有redis方面的知識儲備。這裡寫一篇部落格,就當是對最近學習redis的一次回顧。簡單一句話介紹redis 基於記憶體的高效的key value資料庫,把資料載入到記憶體中進行處理,定期把資料儲存到硬碟進行儲存,單執行緒。redis五大資料型別 ...

redis使用場景

redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在寫龐大的sql上了,而是利用redis靈活多變的資料結構和資料操作來實現。redis常用資料型別 redis最為常用的資料型別主要有以下五種 下面我們先來逐一的分析下這五種資料型別的使用和內部實現方式 ...

Redis使用場景

1 字串使用場景 a 快取功能 典型使用場景 redis作為快取層,mysql作為儲存層,絕大部分請求的資料都是從redis中獲取,由於redis具有支撐高併發的特性,所以快取通常能起到加速讀寫和降低後端壓力的作用。b 計數 c 共享session 典型應用場景 使用者登陸資訊,redis將使用者的...