本文主要整理一些在以往開發中用到過及可能用到的功能,沒有涉及的功能暫不作整理。
注意:redis
- 儘可能使用MGET而不是GET,減小網絡請求時間。
- 存在與數據庫同步時,避免在直接在Redis計算。
注意:數據庫
- List是有序字符串集合,實際開發可用於排行榜之類功能,也可用於消息隊列。
- List中能夠出現重複數據。
注意:網絡
- Set是無需集合
- 集合成員是惟一的,不會出現重複數據
注意:
用於構造一個有序、但數據不重複的集合
注意:app
- Redis客戶端能夠訂閱任意數量的頻道。
- 客戶端只能消費訂閱以後發佈的消息,一個消息能夠被多個訂閱者消費
注意:
Redis的事務不具有一致性,EXEC執行後,若事務中斷,已經執行的部分不會回滾。
注意:操作系統
- 慢查詢時間不包括命令隊列時間
- 經常使用在請求超時,可經過慢查詢日誌看是否有級聯阻塞
注意:
Pipeline只能在單節點上執行
注意:線程
- 可用於搖一搖、同城約會之類的,可計算範圍內的人
- 可用於範圍內固定目標,好比飯店、滑雪場
- 使用GEORADIUS的排序,作實時距離相關的比賽功能
持久化方式有兩種:RDB快照 和 AOF日誌。日誌
RDB快照有三種觸發機制:code
通常使用bgsave或自動快照。自動快照配置以下:排序
# /etc/redis.conf // RDB // 每500秒有超過100次key被修改就執行快照 save 500 100
生產環境中,RDB適合冷備份,其餘適合建議使用AOF。隊列
AOF 三種策略分別是 always 、everysec 和 no。
注意:
在寫入的時候,AOF會壓縮命令。
AOF重寫
auto-aof-rewrite-min-size
:配置最小尺寸,超過就進行重寫。auto-aof-rewrite-percentage
:指當前AOF文件比上次重寫的增加比例大小。
AOF 重寫即 AOF 文件在必定大小以後,從新將整個內存寫到 AOF 文件當中,以反映最新的狀態(至關於 bgsave)。這樣就避免了 AOF 文件過大而實際內存數據小的問題(頻繁修改數據問題)。
# AOF 配置以下 # 默認是 no appendonly yes # 設置 AOF 名字 appendfilename "aof-${ip}-${port}.aof" # 每秒同步 appendfsync everysec # AOF文件目錄 dir /diskpath # 重寫AOF時是否持續記錄新的AOF日誌 # 設置爲 no,不會丟數據,但可能形成線程阻塞 # 設置爲 yes,有可能丟數據,但不會形成阻塞和系統延遲 no-appendfsync-on-rewrite yes
環境開銷
AOF追加阻塞
# 查看阻塞次數 # 如阻塞較多,要調整業務實現或者調整AOF策略 redis-cli info resistence