緩存系統:node
①請求 =》②業務計算 =》 ③讀寫數據 (cache <=> db) ④模板渲染 =》 ⑤ 輸出
Redis-緩解甚至接管數據庫壓力 mysql
Redis的優點:redis
daemonize yes 後臺啓動 port 6379 端口號 pidfile /var/6379.pid
redis-cli 6379 shutdown redis客戶端退出算法
客戶端鏈接redis
安裝對應的擴展
操做key value型數據
set get del exists setnx(若是不存在則設置)
鍵名通常按照模塊從大到小來設計,以冒號分隔sql
hash類型數據
hset hget hdel hexists hsetnx
hash類型鍵的刪除,須要逐個刪除每個field
緩存獨立於數據庫以外,並非全部的數據都接受延遲,要始終注意數據的一致性數據庫
list類型的數據
lset llen lrange ltrim lpop rpush lpop rpop
實例:操做日誌的記錄與讀取json
set類型的數據
sadd smembers scard spop sdiff緩存
緩存天氣
常規緩存,設置key weaher:city:date 查詢時先查key是否存在,存在直接返回,不存在先請求接口,再緩存 該key能夠設置一個同步接口,每10分鐘調用一次,保持和遠程接口數據的同步
pv&uv
incrBy 自增
pv自增:使用string key value 設置key 接口調用一次incrBy 加1 獲取 get($key)
uvset:使用set 設置 key 調用接口,使用ip地址,添加ip地址到set中,計算set元素的個數服務器
腳本同步數據:第一次從mysql同步數據到redis,後期防止redis數據的丟失,能夠考慮增量計算加到mysql中,屢次累加一次操做
分頁優化:基於id區分頁而不是使用limit的方式數據結構
簡介:消息隊列時消息的順序集合
場景:網站首頁的PV統計和查看
傳統直接update表,大併發狀況下容易鎖表,
redis消息隊列:Redis每次請求rpush 腳本勻速處理pvlog set pv查看get pv
應對流量峯值 異步消費(不定速的插入,生產 和 勻速的處理,消費) 解耦應用(不一樣來源的生產和不一樣去向的消費)
消息隊列的實現方式有不少,使用redis實現的最主要的優點是簡單快捷
redis實現消息隊列有兩種方式:
redis實現消息隊列
基於list的消息隊列實現方式
特色:
基於publish/subscribe的消息隊列實現方式
基於發佈訂閱實現pv統計
在訂閱模式下,只能執行subscribe、psubscribe等和訂閱相關的操做,想執行其餘操做須要從新實例化一個redis實例
總結: 消息隊列的實現方式有不少 使用redis實現的最主要優點是簡單快捷 redis實現消息隊列有兩種方式: 基於list 基於subscribe/publish
Redis時徹底免費的,遵照BSD協議,是一個高性能的key-value數據庫
Redis字段類型
String類型
最多見的數據類型
能夠爲任何類型的字符串,好比二進制,json對象
最大容量 512M通常會用做緩存使用
Hash類型
通常用來存儲我的信息緩存
List類型
設置秒殺活動 一、設置秒殺狀態 ms_status 1描述結束 0 未開啓 二、秒殺隊列 list 三、判斷隊列長度,超過長度 設置秒殺狀態爲結束 四、處理隊列,處理以前先設置隊列狀態爲秒殺結束
Set類型
差集 sdiff 交集 sinter 並集 sunion
Zset集合
RDB 指定的時間間隔保存數據快照
優勢:
適合用於進行備份
fork出子進程進行備份,主進程沒有任何IO操做
恢復大數據集時的速度快
缺點:
特定條件下進行一次持久化,易丟失數據
龐大數據時,保存時會出現性能問題
AOF先把命令追加到操做日誌的尾部,保存全部歷史記錄
優勢:
數據很是完整,故障恢復丟失數據少
可對歷史操做進行處理
缺點:
文件的體積大
速度低於RDB且故障恢復速度慢
防止內存佔滿
設置超時時間
不存放過大文件
不存放不經常使用文件
提升使用效率
合理使用不一樣的數據結構類型
慎用正則處理或者批量操做Hash,set等
三、Redis Cluster
結構:
注意事項:
不徹底支持批量操做 事物不能跨界點支持 不支持多實例 key是最小粒度 最少6個才能保證組成完整高可用的集羣