阿里雲Redis開發規範

  • 所有key,必須在1個slot上,否則直接返回error, "-ERR eval/evalsha command keys must in same slotrn"
  • 7.【建議】必要情況下使用monitor命令時,要注意不要長時間使用。

    三、客戶端使用

    1.【推薦】

    避免多個應用使用一個Redis實例

    正例:不相干的業務拆分,公共數據做服務化。

    2.【推薦】

    使用帶有連接池的數據庫,可以有效控制連接,同時提高效率,標準使用方式:

    阿里雲Redis開發規範

    3.【建議】

    高併發下建議客戶端添加熔斷功能(例如netflix hystrix)

    4.【推薦】

    設置合理的密碼,如有必要可以使用SSL加密訪問(阿里雲Redis支持)

    5.【建議】

    根據自身業務類型,選好maxmemory-policy(最大內存淘汰策略),設置好過期時間。

    默認策略是volatile-lru,即超過最大內存後,在過期鍵中使用lru算法進行key的剔除,保證不過期數據不被刪除,但是可能會出現OOM問題。

    其他策略如下:

    • allkeys-lru:根據LRU算法刪除鍵,不管數據有沒有設置超時屬性,直到騰出足夠空間為止。
    • allkeys-random:隨機刪除所有鍵,直到騰出足夠空間為止。
    • volatile-random:隨機刪除過期鍵,直到騰出足夠空間為止。
    • volatile-ttl:根據鍵值對象的ttl屬性,刪除最近將要過期數據。如果沒有,回退到noeviction策略。
    • noeviction:不會剔除任何數據,拒絕所有寫入操作並返回客戶端錯誤信息"(error) OOM command not allowed when used memory",此時Redis只響應讀操作。

    四、相關工具

    • 【推薦】:數據同步

    redis間數據同步可以使用:redis-port

    • 【推薦】:big key搜索
    • redis大key搜索工具
    • 【推薦】:熱點key尋找(內部實現使用monitor,所以建議短時間使用)

    五 、附錄:刪除bigkey

    • 下面操作可以使用pipeline加速。
    • 忍 redis 4.0已經支持key的異步刪除,歡迎使用。

    1. Hash刪除: hscan + hdel

    阿里雲Redis開發規範

    2. List刪除: ltrim

    阿里雲Redis開發規範

    3. Set刪除: sscan + srem

    阿里雲Redis開發規範

    4. SortedSet刪除: zscan + zrem

    阿里雲Redis開發規範


    分享到:


    相關文章: