Redis 使用的 10 個小技巧Redis

2021-10-23 03:45:28 字數 1940 閱讀 2477

在當前的技術社群裡是非常熱門的。從來自 antirez 乙個小小的個人專案到成為記憶體資料儲存行業的標準,redis已經走過了很長的一段路。隨之而來的一系列最佳實踐,使得大多數人可以正確地使用 redis。下面我們將探索正確使用 redis 的10個技巧。

1、停止使用 keys *okay,以挑戰這個命令開始這篇文章,或許並不是乙個好的方式,但其確實可能是最重要的一點。很多時候當我們關注乙個redis例項的統計資料,我們會快速地輸入」keys *」命令,這樣key的資訊會很明顯地展示出來。平心而論,從程式化的角度出發往往傾向於寫出下面這樣的偽**:for key in 『keys *』:

doallthethings()

但是當你有1300萬個key時,執行速度將會變慢。因為keys命令的時間複雜度是o(n),其中n是要返回的keys的個數,這樣這個命令的複雜度就取決於資料庫的大小了。並且在這個操作執行期間,其它任何命令在你的例項中都無法執行。作為乙個替代命令,看一下 scan 吧,其允許你以一種更友好的方式來執行… scan 通過增量迭代的方式來掃瞄資料庫。這一操作基於游標的迭代器來完成的,因此只要你覺得合適,你可以隨時停止或繼續。2、找出拖慢 redis 的罪魁禍首由於 redis 沒有非常詳細的日誌,要想知道在 redis 例項內部都做了些什麼是非常困難的。幸運的是 redis 提供了乙個下面這樣的命令統計工具:127.0.0.1:6379> info 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

通過這個工具可以檢視所有命令統計的快照,比如命令執行了多少次,執行命令所耗費的毫秒數(每個命令的總時間和平均時間)只需要簡單地執行 config resetstat 命令就可以重置,這樣你就可以得到乙個全新的統計結果。3、 將 redis-benchmark 結果作為參考,而不要一概而論redis 之父 salvatore 就說過:「通過執行get/set命令來測試redis就像在雨天檢測法拉利的雨刷清潔鏡子的效果」。很多時候人們跑到我這裡,他們想知道為什麼自己的redis-benchmark統計的結果低於最優結果 。但我們必須要把各種不同的真實情況考慮進來,例如:o 可能受到哪些客戶端執行環境的限制?o 是同乙個版本號嗎?o 測試環境中的表現與應用將要執行的環境是否一致?redis-benchmark的測試結果提供了乙個保證你的 redis-server 不會執行在非正常狀態下的基準點,但是你永遠不要把它作為乙個真實的「壓力測試」。壓力測試需要反應出應用的執行方式,並且需要乙個盡可能的和生產相似的環境。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

「first_name」

「joe」

「last_name」

「engel」

「address」

10 個 Redis 建議 技巧

redis 在當前的技術社群裡是非常熱門的。從來自 antirez 乙個小小的個人專案到成為記憶體資料儲存行業的標準,redis已經走過了很長的一段路。隨之而來的一系列最佳實踐,使得大多數人可以正確地使用 redis。下面我們將探索正確使用 redis 的10個技巧。1 停止使用 keys okay...

10個Python小技巧

flag true if flag x 1else x 2print x 簡化形式 flag true x 1 if flag else 2 print x sum 0 for i in range 0,101 sum i print sum 利用求和函式sum print sum range 0,...

10個jQuery小技巧

收集的10個 jquery 小技巧 片段,可以幫你快速開發。1.返回頂部按鈕 你可以利用animate和scrolltop來實現返回頂部的動畫,而不需要使用其他外掛程式。1 a.top click function 800 3return false 4 改變scrolltop的值可以調整返回距離頂...