Redis開發常用規範

來源:互聯網
上載者:User
1.冷熱資料分離,不要將所有資料全部都放到Redis中

雖然Redis支援持久化,但是Redis的資料存放區全部都是在記憶體中的,成本昂貴。建議根據業務只將高頻熱資料存放區到Redis中【QPS大於5000】,對於低頻冷資料可以使用MySQL/Elasticsearch/MongoDB等基於磁碟的儲存方式,不僅節省記憶體成本,而且資料量小在操作時速度更快、效率更高。 2.不同的業務資料要分開儲存

不要將不相關的業務資料都放到一個Redis執行個體中,建議新業務申請新的單獨執行個體。因為Redis為單線程處理,隔離儲存區 (Isolated Storage)會減少不同業務相互操作的影響,提高請求響應速度;同時也避免單個執行個體記憶體資料量膨脹過大,在出現異常情況時可以更快恢複服務。 3.規範Key的格式

合適的key,便於查看,統計,排錯。
比如:

網關 GW
平台名 平台縮寫

“平台縮寫“+“:”+“項目名”+“:”+“業務含義”
例如:GW:TRADE:USERID
GW是新網關,TRADE是交易項目,USERID為業務ID。

":"-作為key分隔字元,方便用戶端工具作為目錄分級 4.儲存的Key一定要設定逾時時間

如果應用將Redis定位為緩衝Cache使用,對於存放的Key一定要設定逾時時間。因為若不設定,這些Key會一直佔用記憶體不釋放,造成極大的浪費,而且隨著時間的推移會導致記憶體佔用越來越大,直到達到伺服器記憶體上限。另外Key的逾時長短要根據業務綜合評估,而不是越長越好。(某些業務要求key長期有效。可以在每次寫入時,都設定逾時時間,讓逾時時間順延。)

public  Boolean set( final  byte [] key,  final  byte [] value,  final  long  liveTime) {         return  redisTemplate.execute( new  RedisCallback<Boolean>() {             public  Boolean doInRedis(RedisConnection connection)  throws  DataAccessException {                 connection.set(key, value);                 if  (liveTime >  0 ) {                     connection.expire(key, liveTime);                 }                
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.