Redis基礎學習筆記(整理中……)

Redis是一個高效的NoSQL數據庫,採用Key-Value保存數據,通常做爲高速分佈式緩存使用。html

Redis Key的設計技巧

Redis做爲高速緩存,要能經過Key快速的查到須要的數據,通常做爲數據庫的緩存,因此Redis的Key設計可參考數據庫表。
以user表爲例,數據庫設計以下:數據庫

user_id user_name password email
1 zhangsan secret1 zhangsan@163.com
2 lisi secret2 lisi@163.com

Key是設計建議以下:緩存

  1. Key字段經過冒號分割
  2. 表名做爲Key前綴
  3. 表主鍵的字段名做爲第二段
  4. 表主鍵的字段值做爲第三段
  5. 要查詢的字段做爲第四段

如今要經過user_id(1)快速查詢用戶user_name(zhangsan)
則緩存數據設計以下:dom

set user:user_id:1:username zhangsan

若是user_name字段是索引字段,且須要頻繁經過user_name查詢用戶信息,則能夠把查詢關鍵字段。
則緩存數據設計以下:數據庫設計

set user:user_name:zhangsan:user_id 1

而後在經過user_id查詢其餘用戶信息。
固然,Key的設計仍是須要根據業務須要靈活處理,這裏只是給出一個通常思路。好比以關鍵字+日期爲Key進行日期相關的統計。分佈式

Redis數據類型

基本類型

Redis基礎的數據類型包括String、List、Hash(Map)、Set、SortedSet 5種。性能

String
String是最基本的數據類型,它不但能夠保存字符串,也用來保存int,long,float等單值數據,也能夠做爲計數器。不少項目也會把對象經過JSON序列化後保存爲String,使用的時候在反序列化回來。若是使用這種方式,須要經過代碼註釋或文檔對字段進行詳細的說明,避免往後本身或他人維護時「相見不相識」。
場景使用場景包括:.net

  1. 普通字符串緩存
  2. int、long、float等其餘基本類型
  3. 計數器(INCR,INCRBY,DECR,DECRBY等)
  4. 分佈式鎖(SETNX SET if Not eXists)
  5. Bitmap(SETBIT,GETBIT,BIT*),可用於海量數據統計或Bloom過濾器等。

List
List是有序列表,使用方式和Java中的List相似,支持列表頭尾插入(LPUSH,RPUSH),頭尾彈出(LPOP,RPOP),阻塞式彈出(BLPOP,BRPOP),按範圍獲取(LRANGE)等豐富的操做。
常見使用場景包括:設計

  1. 分佈式消息隊列
  2. 緩存門戶首頁熱點文章、熱點商品
  3. 分頁獲取數據

Hash
Hash類型相似Java中的HashMap,保存Key-Value鍵值對。能夠直接把一個數據庫表的行映射到緩存,也能夠保存無嵌套類型的POJO。code

Set
Set是無序不重複的集合,使用方式和Java中的Set相似,能夠作高效的Set間的交、並、差集等操做(SINTER,SUNION,SDIFF)。

Sorted Set
有序集合,相似Java中的LinkedHashSet,但不是根據插入順利來排序的,而是Set的每一個元素能夠關聯一個double類型的分值(score)用於排序。基於這個特性,Sorted Set的典型場景包括:

  1. 排行榜(熱搜):能夠實現門戶首頁按點擊量、按時間、按點贊數等排序場景。
  2. 帶權重的消息隊列:根據消息的重要程度,設置不一樣的score。

高級類型

Bitmap
經過基本類型中String的BIT操做方法,實現位操做,包括SETBIT,GETBIT,BITCOUNT,BITOP等,可用於海量數據統計或Bloom過濾器等。

HyperLogLog

這個待研究!!!

pub/sub:
Pipeline:
Lua:

緩存數據淘汰策略
noeviction(內存滿後不主動回收,沒法寫入新數據)
allkeys-lru(最近最少使用的Key)
allkeys-random(隨機回收)
volatile-lru(過時集合中最近最少使用的Key)
volatile-random(過時隨機回收)
volatile-ttl(過時最短存活)

Redis Pipleline是啥??

Redis部署模式
主備:哨兵、主備、主備鏈
集羣

Redis vs Memcached

性能問題
緩存穿透
緩存擊穿
緩存雪崩

數據持久化機制
RDB、AOF
RDB:Fork子進程,新數據COW模式
AOF:同步策略:定時,數據量

集羣同步機制
經過RDB完成基準數據同步,再經過AOF進行增量數據同步

緩存和數據庫數據一致性

Keys和Scan方法

LRU vs LFU
https://www.jianshu.com/p/02b...
https://blog.csdn.net/a319204...
https://www.cnblogs.com/sddai...

相關文章
相關標籤/搜索