偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Redis數據存儲優(yōu)化機制詳解

存儲 存儲軟件 Redis
Redis提供了很多關于優(yōu)化內存的方法,上面這些配置的值都是默認配置,實際要根據我們具體的需求場景來調節(jié),并要做大量的測試,以達到最優(yōu)的效果。同時必須對Redis這些數據結構有很好的理解。

zipmap優(yōu)化hash

將一個對象存儲在hash類型中會占用更少的內存,并且可以更方便的存取整個對象。省內存的原因是新建一個hash對象時開始是用zipmap來存儲的。這個zipmap其實并不是hash table,但是zipmap相比正常的hash實現可以節(jié)省不少hash本身需要的一些元數據存儲開銷。盡管zipmap的添加,刪除,查找都是O(n),但是由于一般對象的field數量都不太多。所以使用zipmap也是很快的,也就是說添加刪除平均還是O(1)。

[[227406]]

如果field或者value的大小超出一定限制后,redis會在內部自動將zipmap替換成正常的hash實現。這個限制可以在配置文件中指定(默認配置在redis根目錄下的redis.conf中): 

  1. hash-max-zipmap-entries 512 #配置字段最多512個 
  2. hash-max-zipmap-value 64 #配置value***為64字節(jié) 

ziplist優(yōu)化list

如果redisObject的type成員值是REDIS_LIST類型的,則當該list的元素個數小于配置值list-max-ziplist-entries,且元素值字符串的長度小于配置值list-max-ziplist-value,

則可以編碼成 REDIS_ENCODING_ZIPLIST 類型存儲,否則采用 Dict 來存儲(Dict實際是Hash Table的一種實現),list采用ziplist數據結構存儲數據,這樣做一方面為了節(jié)省內存,另一方面這種結構式順序存儲的結構,能夠更好利用cpu local和預取策略。

配置如下所示:

  1. list-max-ziplist-entries 512 #配置元素個數最多512個 
  2. list-max-ziplist-value 64 #配置value***為64字節(jié) 

intset優(yōu)化set

當set集合中的元素為整數且元素個數小于配置set-max-intset-entries值時,使用intset數據結構存儲,否則轉化為Dict結構,Dict實際是Hash Table的一種實現,key為元素值,value為NULL,這樣即可在O(1)時間內判斷集合中是否包含某個元素。

intset中有三種類型數組:int16_t類型、int32_t 類型、 int64_t 類型。至于怎么選擇是那種類型的數組,是根據其保存的值的取值范圍來決定的,初始化時是 int16_t,根據 set 中的***值在[INT16_MIN, INT16_MAX] , [INT32_MIN, INT32_MAX], [INT64_MIN, INT64_MAX]的那個取值范圍來動態(tài)確定整個數組的類型。例如set一開始是 int16_t 類型,當一個取值范圍在 [INT32_MIN, INT32_MAX]的值加入到 set 時,則將保存 set 的數組升級成 int32_t 的數組。

intset元素限制的配置如下所示:

  1. set-max-intset-entries 512 #配置元素個數最多512個 

ziplist優(yōu)化sorted set

根hash和list一樣sorted set也有節(jié)約內存的方式,當sorted set的元素個數及元素大小小于一定限制時,它是用ziplist來存儲。

這個限制的配置如下:

  1. zset-max-ziplist-entries 128 #配置元素個數最多512個 
  2. zset-max-ziplist-value 64 #配置value***為64字節(jié) 

小結

Redis提供了很多關于優(yōu)化內存的方法,上面這些配置的值都是默認配置,實際要根據我們具體的需求場景來調節(jié),并要做大量的測試,以達到***的效果。同時必須對Redis這些數據結構有很好的理解。

責任編輯:武曉燕 來源: 加米谷學院
相關推薦

2024-07-16 08:38:06

2024-12-16 00:52:26

MySQL數據庫并發(fā)

2010-01-26 14:43:53

Android數據存儲

2019-11-12 14:15:07

Redis內存持久化

2024-11-11 17:12:22

2020-08-18 19:15:44

Redis內存管理

2018-01-31 08:44:20

數據存儲存儲設備存儲系統

2023-08-02 08:38:27

JVM加載機制

2011-03-08 09:58:21

海量數據

2019-05-17 08:55:49

RedisRDBAOF

2018-06-12 11:24:02

區(qū)塊鏈數據庫數據存儲

2015-07-09 13:47:37

IOSFMDB

2025-02-12 00:29:58

2024-04-18 08:27:05

Android數據類型

2024-09-06 17:49:46

2017-12-06 09:00:14

2021-07-30 19:44:51

AndroidJava線程

2009-07-08 15:01:00

Servlet Ses

2021-09-06 18:55:57

MySQLCheckpoint機制

2020-01-16 11:23:32

Zookeeper數據結構API
點贊
收藏

51CTO技術棧公眾號