Redis 是一個高效能的key-value資料庫。
支援多種資料型別: String:可以是字串、整數、浮點數 List(列表):一個連結串列,連結串列上的每個節點都包含一個字串 Set(集合):包含字串的無序收集器,並且被包含的每個字串都是獨一無二的,各不相同 Hash(雜湊):包含鍵值對的無序散列表。 ZSet(有序集合):字串成員與浮點數分值之間的有序對映,元素的排列順序有分值大小決定特點:Redis支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入進行使用。Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。Redis支援資料的備份,即master-slave模式的資料備份。Redis 優勢效能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。豐富的資料型別 – Redis支援二進位制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料型別操作。原子 – Redis的所有操作都是原子性的,意思就是要麼成功執行要麼失敗完全不執行。單個操作是原子性的。多個操作也支援事務,即原子性,透過MULTI和EXEC指令包起來。豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。Redis使用與記憶體最佳化建議不要開啟VM(虛擬記憶體)選項VM 選項是作為 Redis 儲存超出物理記憶體資料的一種資料在記憶體與磁碟換入換出的一個持久化策略,將嚴重地拖垮系統的執行速度,所以要關閉 VM 功能,請檢查你的 redis.conf 檔案中 vm-enabled 為 no。
設定最大記憶體選項最好設定下 redis.conf 中的 maxmemory 選項,該選項是告訴 Redis 當使用了多少物理記憶體後就開始拒絕後續的寫入請求,該引數能很好的保護好你的 Redis 不會因為使用了過多的物理記憶體而導致 swap,最終嚴重影響效能甚至崩潰。
設定記憶體飽和回收策略應用場景1.String
這個沒啥好說的,最常規的 set/get 操作,Value 可以是 String 也可以是數字。一般做一些複雜的計數功能的快取。快取序列化後的檔案,圖片等。
2.Hash
這裡 Value 存放的是結構化的物件,比較方便的就是操作其中的某個欄位。
做單點登入的時候,可以用這種資料結構儲存使用者資訊,以 CookieId 作為 Key,設定 30 分鐘為快取過期時間,能很好的模擬出類似 Session 的效果。
3.List
使用 List 的資料結構,可以做簡單的訊息佇列的功能。另外還有一個就是,可以利用 lrange 命令,做基於 Redis 的分頁功能,效能極佳,使用者體驗好。
4.Set
因為 Set 堆放的是一堆不重複值的集合。所以可以做全域性去重的功能。為什麼不用 JVM 自帶的 Set 進行去重?
因為我們的系統一般都是叢集部署,使用 JVM 自帶的 Set,比較麻煩,難道為了一個做一個全域性去重,再起一個公共服務,太麻煩了。
另外,就是利用交集、並集、差集等操作,可以計算共同喜好,全部的喜好,自己獨有的喜好等功能。
5.Sorted Set
Sorted Set多了一個權重引數 Score,集合中的元素能夠按 Score 進行排列。
可以做排行榜應用,取 TOP N 操作。Sorted Set 可以用來做延時任務。最後一個應用就是可以做範圍查詢。