目前 redis db 我們只用在 rails 頁面快取用途,用過的管理工具僅 telnet。 常做的是 MONITOR 看存取狀況,為什麼行為不如預期, 然後基本的 DEL 把舊值砍掉而已。

Telnet 互動輕快,monitor 的即時性也很方便,不過每次連進去下 monitor 有點麻煩, 而且 SET 系指令會噴大塊字串(顯示寫入的值)洗畫面,太噁心了。

於是寫了個 rails 的 wrapper script, 依賴 redis-rb,且需要某處有 config/redis.yml 寫好連線用的參數
→ 簡易 redis client: scripts/redis-client — Gist

啟動方式

  • 連到 production → ./script/redis-client production
  • 連到 staging,且只顯示 key 開頭為 "staging" 的存取 → ./script/redis-client staging -f \\A\"staging

功能

  • 直接進入 monitor 狀態,可以輸入 m 暫停/繼續 monitor 的輸出。
  • 命令列選項 -f pattern(或 --key-filter=pattern)指定只 monitor 符合的 key,不符就不顯示(只影響 SET、GET 等有 key 的指令)。
  • del 接受 pattern,例如 del *foo*(pattern 會傳給 redis KEYS 指令)。
  • grep 指令,例如 grep foo\\d+(對 KEYS 結果作 ruby grep,這裡 pattern 是 ruby 的 Regexp)。
  • 部分輸出有 pretty print,另 SET、SETEX 不顯示寫入的值(而是值的長度)以節省畫面空間。
連到 staging,Flush All

License: public domain.