Redis優化的一些建議,讀完之後,大部分程序員收藏了...

Redis優化的一些建議,讀完之後,大部分程序員收藏了...

1、儘量使用短的key

當然在精簡的同時,不要完了key的“見名知意”。對於value有些也可精簡,比如性別使用0、1。

2、避免使用keys *

keys *, 這個命令是阻塞的,即操作執行期間,其它任何命令在你的實例中都無法執行。當redis中key數據量小時到無所謂,數據量大就很糟糕了。所以我們應該避免去使用這個命令。可以去使用SCAN,來代替。

3、在存到Redis之前先把你的數據壓縮下

redis為每種數據類型都提供了兩種內部編碼方式,在不同的情況下redis會自動調整合適的編碼方式。

4、設置 key 有效期

我們應該儘可能的利用key有效期。比如一些臨時數據(短信校驗碼),過了有效期Redis就會自動為你清除!

5、選擇回收策略(maxmemory-policy)

當 Redis 的實例空間被填滿了之後,將會嘗試回收一部分key。根據你的使用方式,強烈建議使用 volatile-lru(默認) 策略——前提是你對key已經設置了超時。但如果你運行的是一些類似於 cache 的東西,並且沒有對 key 設置超時機制,可以考慮使用 allkeys-lru 回收機制,具體講解查看 。maxmemory-samples 3 是說每次進行淘汰的時候 會隨機抽取3個key 從裡面淘汰最不經常使用的(默認選項)

maxmemory-policy 六種方式 :

  • volatile-lru:只對設置了過期時間的key進行LRU(默認值)
  • allkeys-lru : 是從所有key裡 刪除 不經常使用的key
  • volatile-random:隨機刪除即將過期key
  • allkeys-random:隨機刪除
  • volatile-ttl : 刪除即將過期的
  • noeviction : 永不過期,返回錯誤

6、使用bit位級別操作和byte字節級別操作來減少不必要的內存使用。

  • bit位級別操作:GETRANGE, SETRANGE, GETBIT and SETBIT
  • byte字節級別操作:GETRANGE and SETRANGE

7、儘可能地使用hashes哈希存儲。

8、當業務場景不需要數據持久化時,關閉所有的持久化方式可以獲得最佳的性能。

9、想要一次添加多條數據的時候可以使用管道。

10、限制redis的內存大小(64位系統不限制內存,32位系統默認最多使用3GB內存)

數據量不可預估,並且內存也有限的話,儘量限制下redis使用的內存大小,這樣可以避免redis使用swap分區或者出現OOM錯誤。(使用swap分區,性能較低,如果限制了內存,當到達指定內存之後就不能添加數據了,否則會報OOM錯誤。可以設置maxmemory-policy,內存不足時刪除數據。)

關注

感謝閱讀,如果這篇文章幫助了您,歡迎 點贊收藏,關注轉發

喲。您的幫助是我們前行的動力,我們會提供更多有價值的內容給大家... 謝謝!


分享到:


相關文章: