緩存Redis的兄弟姐妹

緩存Redis的兄弟姐妹

Redis實現ICache接口,它的孿生兄弟MemoryCache,內存緩存,千萬級吞吐率。
各應用強烈建議使用ICache接口編碼設計,小數據時使用MemoryCache實現;
數據增大(10萬)以後,改用Redis實現,不需要修改業務代碼。

問題
1.一條數據多個key怎麼設置比較合理?

如果對性能要求不是很高直接用json序列化實體就好,沒必要使用字典進行存儲。

2、隊列跟List有什麼區別?左進右出的話用List還是用隊列比較好?

隊列其實就是用List實現的,也是基於List封裝的。左進右出的話直接隊列就好。Redis的List結構比較有意思,既可以左進右出,也能右進左出。所以它既可以實現列表結構,也能隊列,也能實現棧。

Redis經驗分享

  • 在Linux上多實例部署,實例個數等於處理器個數,各實例最大內存直接爲本機物理內存,避免單個實例內存撐爆(比方說8核心處理器,那麼就部署8個實例)
  • 把海量數據(10億+)根據key哈希(Crc16/Crc32)存放在多個實例上,讀寫性能成倍增長
  • 採用二進制序列化,而非常見的Json序列化
  • 合理設計每一對Key的Value大小,包括但不限於使用批量獲取,原則是讓每次網絡包控制在1.4k字節附近,減少通信次數(實際經驗幾十k,幾百k也是沒問題的)
  • Redis客戶端的Get/Set操作平均耗時200~600us(含往返網絡通信),以此爲參考評估網絡環境和Redis客戶端組件(達不到就看一下網絡,序列化方式等等)
  • 使用管道Pipeline合併一批命令
  • Redis的主要性能瓶頸是序列化、網絡帶寬和內存大小,濫用時處理器也會達到瓶頸
  • 其它可查優化技巧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章