Redis 相關功能和實用命令(五)
慢查詢原因分析
由於 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/