慢查詢原因分析 由於 Redis 是單線程的,它內部維護了一個命令隊列,所以當有耗時的命令出現時,比如 ,後面的命令會被阻塞,通查查出慢查詢可以對服務進一步優化。 1. 設置慢查詢閥值:預設10 毫秒,以微秒為單位 6379 config set slowlog log slower than 10 ...
慢查詢原因分析
由於 Redis 是單線程的,它內部維護了一個命令隊列,所以當有耗時的命令出現時,比如 keys *
,後面的命令會被阻塞,通查查出慢查詢可以對服務進一步優化。
設置慢查詢閥值:預設10 毫秒,以微秒為單位
6379>config set slowlog-log-slower-than 10000
可直接修改 redis.conf 加上 slowlog-log-slower-than 10000
slow-max-len 用來設置慢查詢條數
執行 slowlog get 獲取慢查詢,格式如下
一般會定期將慢查詢進行導出到 mysql 或其它存儲,用於業務人員查看哪裡出現了慢查詢
管道 pipeline
上篇文章展示了在控制臺中如何使用管道來導入 mysql 數據 ,但管道一般在應用程式中使用
Object execute = redisTemplate.execute(new RedisCallback<Object>() {
@Override
public Object doInRedis(RedisConnection connection) throws DataAccessException {
connection.openPipeline();
for (int i = 0; i < 1000000; i++) {
String key = "123" + i;
connection.set(key.getBytes(), key.getBytes());
}
List<Object> result = connection.closePipeline();
return result;
}
});
發佈訂閱 (publish/subscribe)
Redis 的發佈訂閱比較簡單,不適合於專業的場景,會有消息丟失,無法回溯等問題,這個發佈訂閱一般是用在 Redis 內部使用,比如哨兵的監控
專業的發佈訂閱建議還是使用 kafka 或者 rabbitmq
rabbitmq 可參考我的另一篇文章 Rabbitmq
一些實用命令
查詢連接的占用情況,哪台主機占用多少連接,用於排查連接耗光問題
redis-cli -a <密碼> client list | awk '{print $1}' | cut -d "=" -f2 | cut -d: -f 1 | sort -n | uniq -c
查詢當前記憶體使用情況
6379> info Memory
在所有 key 裡面返回隨機一個 key ,可以用於抽獎
randomkey
一點小推廣
創作不易,希望可以支持下我的開源軟體,及我的小工具,歡迎來 gitee 點星,fork ,提 bug 。
Excel 通用導入導出,支持 Excel 公式
博客地址:https://blog.csdn.net/sanri1993/article/details/100601578
gitee:https://gitee.com/sanri/sanri-excel-poi
使用模板代碼 ,從資料庫生成代碼 ,及一些項目中經常可以用到的小工具
博客地址:https://blog.csdn.net/sanri1993/article/details/98664034
gitee:https://gitee.com/sanri/sanri-tools-maven