作者:紫陌红尘一笑_423 | 来源:互联网 | 2023-09-03 14:30
分别往27个set结构里面添加10万个 df04e 类似这样的字符。每个字符串长度大概是5。
结果一看内存占用,8MB多。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # Memory
used_memory:8963776
used_memory_human:8.55M
used_memory_rss:21229568
used_memory_rss_human:20.25M
used_memory_peak:75501696
used_memory_peak_human:72.00M
total_system_memory:8589934592
total_system_memory_human:8.00G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:2.37
mem_allocator:libc |
我把那些长度5的字符串的,10万个,连起来,然后写入一个文本里面,大概500KB。为啥到了redis,占用了8MB,这是为什么呢?
我把10万个 5969b4ba18c9add4a9d5f5a1 这样的字符串,每个字符串长度24,插入到一个set结构里面,结果内存占用10MB。与上面相差无几。这到底怎么回事?
我后来改成list结构,占了大概0.5MB左右。符合了真实的空间占用。是否set在分配内存的时候跟list结构有差异???
但是实际情况,我却不可能使用list替代set结构。