我正在使用redis来保存jsonwebtokens。我对每条记录的内存消耗感到困惑。
假设我在Google云上有一个分配了4GB内存的实例,我想知道它可以处理多少条记录。
鉴于记录平均有1个字符串值,不包括标识符,每个字符串平均有200个字符。
答案 0 :(得分:1)
关于你如何存储它们的全部内容。使用哈希(正确调整大小)或普通键值对。 请阅读此文档以获取更多信息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);
答案 1 :(得分:1)
Redis将字符串包装到sds struct中,每个字符串需要3个额外字节(或更多)。
每个sds都存储在redisObject struct中(使用指向该sds对象的指针)。如果您使用的是64位计算机,则需要大约16个额外字节。
您也可以考虑哈希表中的entries。每个占用24个字节。
因此,您可以假设每个字符串占用243个字节。 100万个字符串将使用超过250 MB(Redis本身需要内存)。