使用Redis的五個注意事項(命名)

來源:互聯網
上載者:User

標籤:

原文:使用Redis的五個注意事項

下面內容來源於Quora上的一個提問,問題是使用Redis需要避免的五個問題。而回答中超出了五個問題的範疇,描述了五個使用Redis的注意事項。如果你在使用或者考慮使用Redis,可能你可以學習一下下面的一些建議,避免一下提到的問題。

1.使用key值首碼來作命名空間

雖然說Redis支援多個資料庫(預設32個,可以配置更多),但是除了預設的0號庫以外,其它的都需要通過一個額外請求才能使用。所以用首碼作為命名空間可能會更明智一點。

另外,在使用首碼作為命名空間區隔不同key的時候,最好在程式中使用全域配置來實現,直接在代碼裡寫首碼的做法要嚴格避免,這樣可維護性實在太差了。

2.建立一個類似 ”registry” 的key用於標記key使用方式

為了更好的管理你的key值的使用,比如哪一類key值是屬於哪個業務的,你通常會在內部wiki或者什麼地方建立一個文檔,通過查詢這個文檔,我們能夠知道Redis中的key都是什麼作用。

與之結合,一個推薦的做法是,在Redis裡面儲存一個registry值,這個值的名字可以類似於 __key_registry__ 這樣的,這個key對應的value就是你文檔的位置,這樣我們在使用Redis的時候,就能通過直接查詢這個值擷取到當前Redis的使用方式了。

3.注意記憶體回收

Redis是一個提供持久化功能的記憶體資料庫,如果你不指定上面值的到期時間,並且也不進行週期性清理工作,那麼你的Redis記憶體佔用會越來越大,當有一天它超過了系統可用記憶體,那麼swap上場,離效能陡降的時間就不遠了。所以在Redis中儲存資料時,一定要預先考慮好資料的生命週期,這有很多方法可以實現。

比如你可以採用Redis內建的到期時間為你的資料設定到期時間。但是自動到期有一個問題,很有可能導致你還有大量記憶體可用時,就讓key到期去釋放記憶體,或者是記憶體已經不足了key還沒有到期。

如果你想更精準的控制你的資料到期,你可以用一個ZSET來維護你的資料更新程度,你可以用時間戳記作為score值,每次更新操作時更新一下score,這樣你就得到了一個按更新時間排序序列串,你可以輕鬆地找到最老的資料,並且從最老的資料開始進行刪除,一直刪除到你的空間足夠為止。

4.設計好你的Sharding機制

Redis目前並不支援Sharding,但是當你的資料量超過單機記憶體時,你不得不考慮Sharding的事(注意:Slave不是用來做Sharding操作的,只是資料的一個備份和讀寫分離而已)。

所以你可能需要考慮好資料量大了後的分區問題,比如你可以在只有一台機器的時候就在程式上設定一致性hash機制,雖然剛開始所有資料都hash到一台機器,但是當你機器越加越多的時候,你就只需要遷移少量的資料就能完成了。

5.不要有個鎚子看哪都是釘子

當你使用Redis構建你的服務的時候,一定要記住,你只是找了一個合適的工具來實現你需要的功能。而不是說你在用Redis構建一個服務,這是很不同的,你把Redis當作你很多工具中的一個,只在合適使用的時候再使用它,在不合適的時候選擇其它的方法。

來源:www.quora.com

使用Redis的五個注意事項(命名)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.