10個很多人不知道的Redis使用技巧
阿新 • • 發佈:2020-02-08
前言
Redis 在當前的技術社群裡是非常熱門的。從來自 Antirez 一個小小的個人專案到成為記憶體資料儲存行業的標準,Redis已經走過了很長的一段路。隨之而來的一系列最佳實踐,使得大多數人可以正確地使用 Redis。 下面我們將探索正確使用 Redis 的10個技巧。1、停止使用 KEYS *
Okay,以挑戰這個命令開始這篇文章,或許並不是一個好的方式,但其確實可能是最重要的一點。很多時候當我們關注一個redis例項的統計資料,我們會快速地輸入”KEYS *”命令,這樣key的資訊會很明顯地展示出來。平心而論,從程式化的角度出發往往傾向於寫出下面這樣的虛擬碼:for key in'keys *': doAllTheThings()
2、找出拖慢 Redis 的罪魁禍首
由於 Redis 沒有非常詳細的日誌,要想知道在 Redis 例項內部都做了些什麼是非常困難的。幸運的是 Redis 提供了一個下面這樣的命令統計工具:127.0.0.1:6379> INFO commandstats # Commandstats cmdstat_get:calls=78,usec=608,usec_per_call=7.79 cmdstat_setex:calls=5,usec=71,usec_per_call=14.20 cmdstat_keys:calls=2,usec=42,usec_per_call=21.00 cmdstat_info:calls=10,usec=1931,usec_per_call=193.10
3、 將 Redis-Benchmark 結果作為參考,而不要一概而論
Redis 之父 Salvatore 就說過:“通過執行GET/SET命令來測試Redis就像在雨天檢測法拉利的雨刷清潔鏡子的效果”。很多時候人們跑到我這裡,他們想知道為什麼自己的Redis-Benchmark統計的結果低於最優結果 。但我們必須要把各種不同的真實情況考慮進來,例如:- 可能受到哪些客戶端執行環境的限制?
- 是同一個版本號嗎?
- 測試環境中的表現與應用將要執行的環境是否一致?
4、Hashes 是你的最佳選擇
以一種優雅的方式引入 hashes 吧。hashes 將會帶給你一種前所未有的體驗。之前我曾看到過許多類似於下面這樣的key結構:foo:first_name foo:last_name foo:address上面的例子中,foo 可能是一個使用者的使用者名稱,其中的每一項都是一個單獨的 key。這就增加了 犯錯的空間,和一些不必要的 key。使用 hash 代替吧,你會驚奇地發現竟然只需要一個 key :
127.0.0.1:6379> HSET foo first_name 'Joe' (integer) 1 127.0.0.1:6379> HSET foo last_name 'Engel' (integer) 1 127.0.0.1:6379> HSET foo address '1 Fanatical Pl' (integer) 1 127.0.0.1:6379> HGETALL foo 1) 'first_name' 2) 'Joe' 3) 'last_name' 4) 'Engel' 5) 'address' 6) '1 Fanatical Pl' 127.0.0.1:6379> HGET foo first_name 'Joe'