Redis應用實踐
唐福林是新浪微博開放平臺資深工程師,目前負責t.cn短鏈、用戶關系、計數器等底層服務。他曾負責過包括新浪郵箱全文搜索在內的多個基于 Lucene的垂直搜索引擎開發,以及新浪愛問和新浪播客的運維,對承載大數據量、高并發的互聯網基礎設施建設有豐富的經驗。他在QCon杭州2011大 會的開放平臺專題做了名為《新浪微博開放平臺中的Redis實踐》的講座,并和參會者做了熱烈的討論。會后,InfoQ中文站對唐福林做了采訪。
InfoQ:新浪微博的業務場景對緩存和存儲提出了哪些要求?
根據微博的業務特點,主要有這么一些要求:
1.海量存儲;
2.大量計算;
3.對可靠性要求高;
4.對速度要求高。
InfoQ:Redis的主要優勢在哪里?適用哪些場景?
主要優勢個人覺得有2點:
1.豐富的數據結構;
2.高速讀寫。
所以適用于需要高速讀寫,而且需要比k-v更多的數據結構的地方。
InfoQ:Redis有哪些不足?如何解決?
持久化是Redis的一個軟肋,需要盡量避免。
還有一個問題就是,Redis比較耗內存,尤其是數據量大的時候。而Redis又要求所有的數據必須都在內存里,這是一個矛盾,需要小心對待。
InfoQ:Redis的調優存在哪些技巧?
Redis從配置文件層面可以調的參數不多,只有hash-max-zip-size系列的參數調整可能對性能產生影響。如果想要達到特別的目標,那么就需要修改代碼行為。
慶幸的是,Redis的代碼足夠簡單,二次開發定制都非常方便。
InfoQ:Memcache和Redis是什么樣的關系?
相輔相成吧。當前情況下,各有優缺點。不過個人覺得,長期看來,可以用Redis替代Memcache。
InfoQ:能否總結下在應用Redis時的經驗教訓?
主要有這么幾個:
1. 決定使用 Redis 之前,做好容量規劃;
2. 使用 Redis 的過程中,做好監控報警;
3. 謹慎選擇持久化方案,對可能造成的高延遲要有心理準備;
4. 小心Redis的內存碎片。
InfoQ:新浪微博在Redis方面下一步有哪些計劃?
主要是繼續推進RedisCounter的開發,還有一些存儲列表類數據的eRedis的定制開發。
唐福林在QCon杭州2011大會上講座的幻燈片可以在此下載,演講視頻稍后會在InfoQ中文站發布。
來自:http://www.infoq.com/cn/news/2011/11/tangfl-redis