理论上讲redis可以存储2的32次方个key,每个实例至少存2亿5千万个key,但因为Redis是基于内存的数据库所以也就意味着它不可能存储特别多的数据,应该说redis的存储极限是系统的可用内存。
我在本机上通过jedis生成100万个key实际占用内存108M
# Memory
used_memory:104730792
used_memory_human:99.88M
used_memory_rss:123080704
used_memory_peak:113668232
used_memory_peak_human:108.40M
used_memory_lua:35840
mem_fragmentation_ratio:1.18
mem_allocator:jemalloc-3.6.0
# Keyspace
db0:keys=1000000,expires=0,avg_ttl=0
内存设置
maxmemory和maxmemory_policy参数
在redis.conf中通过这两个参数配置redis的内存使用情况。Redis的可用内存与系统的内存有关,一般我们需要设置它的最大可用内存,除非你确定你的业务中redis的内存不会很大且有足够的系统内存。
maxmemory参数
不设置
1:不设置或为0,64位系统不限制使用,32位最多使用3G
2:如果不设置最大内存系统有多少内存redis就会用多少一旦开始写入swap虚拟内存则后期查询速度反而会慢。
设置
如果开启了RDB持久化方式,因为子进程在复制所有数据时内存使用量会增加一倍