1. 程式人生 > >Redis 相關功能和實用命令(五)

Redis 相關功能和實用命令(五)

慢查詢原因分析

由於 Redis 是單執行緒的,它內部維護了一個命令佇列,所以當有耗時的命令出現時,比如 keys *,後面的命令會被阻塞,通查查出慢查詢可以對服務進一步優化。

  1. 設定慢查詢閥值:預設10 毫秒,以微秒為單位

    6379>config set slowlog-log-slower-than 10000

    可直接修改 redis.conf 加上 slowlog-log-slower-than 10000

    slow-max-len 用來設定慢查詢條數

  2. 執行 slowlog get 獲取慢查詢,格式如下

    img

一般會定期將慢查詢進行匯出到 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/