Redis对内存的消耗
Redis's Consumption of Memory
我正在使用redis 来保存jsonwebtokens。我对每条记录的内存消耗有点困惑。
假设我在 Google 云上有一个实例,分配了 4GB 内存,我想知道它可以处理多少条记录。
假设一条记录平均有 1 个字符串值(不包括标识符),并且每个字符串平均有 200 个字符。
这完全取决于您如何存储它们。使用散列(适当调整大小)或普通键值对。
请阅读此文档以获取更多信息 http://redis.io/topics/memory-optimization
对于 200 个字符的 100 万个键(简单键值对),大约需要 300 MB。所以对于 4 GB,我猜你可以存储大约 1400 万个密钥。为了确保这一点,在你的机器上安装 redis,运行 一个简单的 java(使用 jedis)片段,并检查插入前后的内存消耗。
Jedis jedis = new Jedis("localhost");
for i=0 to N
jedis.set("Key_"+i,string);
Redis 将字符串包装成 sds struct,每个字符串需要 3 个额外字节(或更多)。
每个 sds 都存储在一个 redisObject struct 中(使用指向该 sds 对象的指针)。如果您使用的是 64 位计算机,则需要大约 16 个额外字节。
您也可以考虑散列 table 中的 entries。每个占24个字节。
因此您可以假设每个字符串占用 243 个字节。 100 万个字符串将使用超过 250 MB(Redis 本身需要内存)。
我正在使用redis 来保存jsonwebtokens。我对每条记录的内存消耗有点困惑。
假设我在 Google 云上有一个实例,分配了 4GB 内存,我想知道它可以处理多少条记录。
假设一条记录平均有 1 个字符串值(不包括标识符),并且每个字符串平均有 200 个字符。
这完全取决于您如何存储它们。使用散列(适当调整大小)或普通键值对。 请阅读此文档以获取更多信息 http://redis.io/topics/memory-optimization
对于 200 个字符的 100 万个键(简单键值对),大约需要 300 MB。所以对于 4 GB,我猜你可以存储大约 1400 万个密钥。为了确保这一点,在你的机器上安装 redis,运行 一个简单的 java(使用 jedis)片段,并检查插入前后的内存消耗。
Jedis jedis = new Jedis("localhost");
for i=0 to N
jedis.set("Key_"+i,string);
Redis 将字符串包装成 sds struct,每个字符串需要 3 个额外字节(或更多)。
每个 sds 都存储在一个 redisObject struct 中(使用指向该 sds 对象的指针)。如果您使用的是 64 位计算机,则需要大约 16 个额外字节。
您也可以考虑散列 table 中的 entries。每个占24个字节。
因此您可以假设每个字符串占用 243 个字节。 100 万个字符串将使用超过 250 MB(Redis 本身需要内存)。