Redis應用開發
要求:數據庫
- 瞭解Redis應用場景
- 掌握Redis二次開發環境搭建
- 掌握Redis業務開發
Redis簡介後端
- Redis是一個基於網絡的,高性能key-value內存數據庫
- Redis根memcached相似,不過數據可持久化,並且支持的數據類型很豐富。支持在服務端計算集合的並、交和補集等,還支持多種排序功能。
Redis使用場景有以下幾個特色:緩存
- 高性能
- 低延遲
- 豐富數據結構存取
- 支持持久化
Redis應用場景介紹
Redis提供了靈活多變的數據結構和數據操做,主要應用於以下場景:安全
- 取最新N個數據的操做,好比典型的取某網站的最新文章。
- 排行榜應用,取TOP N操做。
- 須要精準設定過時時間的應用。
- 計數器應用,好比記錄用戶訪問網站的次數。
- 構建隊列系統
- 緩存,如緩存關係數據庫中的頻繁訪問的表數據。
架構回顧網絡
- 無中心自組織的結構,節點之間使用Gossip協議來交換節點狀態信息。
- 個節點維護Key->Server的映射關係。
- Client能夠向任意節點發起請求,節點不會轉發請求,只是重定向Client
- 若是在Client第一次請求之間,Cluster拓撲發生改變,則第二次重定向請求將被再次重定向,直到找到正確的Server爲止。
Redis應用開發
設計Redis數據結構數據結構
- 取最新N個數據的操做:list
- 排行榜應用,取TOP N操做。以某個條件爲權重,好比按頂的次數排行:sorted set。
- 利INCR,DECR命令來構建計數器系統。、
- Uniq操做,獲取某段時間全部數據排重值:set。
- 使用list能夠構建隊列系統
Redis應用開發
根據場景開發工程架構
- 梳理業務場景流
- 設計各模塊接口
- 若是使用的是安全集羣,須要進行安全認證
- 熟悉Redis提供的相應API
- 調用業務須要的API實現各功能
數據結構設計app
- 計算過程當中使用的用戶信息使用hash結構存取,KEY設計爲userinfo-<user id>,
- field爲用戶的屬性。
數據讀寫原則memcached
- MR任務天天定時將用戶信息從後端存儲源(HBase)批量導入Redis中。
- 業務系統獲取數據時,先從Redis中獲取,獲取不到再取後端HBase獲取即實時計算,並同步寫入到Redis。
樣例說明-String類型操做性能
- set:將字符串值value關聯到key
- get:返回key所關聯的字符串值,
- setex:將字符串值value關聯到key,並設置key的生存時間
- append:將value追加到key原值的末尾,相似Java String類型的「+」操做。
樣例說明-List類型操做
- Ipush/rpush:往列表頭/尾添加一個元素。
- Irange:返回列表中start至end之間的元素
- llen:返回列表的長度
- lpop/rpop:從列表頭/尾獲取一個元素,並將其中列表中刪除。
樣例說明-Hash類型操做
- hset
- hget
- hgettall
- hmset
- hincrby
- hkeys
- hvals
- hmget
- hexists
- hdel