VM-虚拟内存机制就是暂时把不经常访问的数据(冷数据)从内存中交换到磁盘中,从而腾出宝贵的内存空间存储其他需要访问的热数据,我来为大家科普一下关于redis内存使用建议?下面希望有你要的答案,我们一起来看看吧!

redis内存使用建议(redis虚拟内存什么东西)

redis内存使用建议

VM-虚拟内存机制就是暂时把不经常访问的数据(冷数据)从内存中交换到磁盘中,从而腾出宝贵的内存空间存储其他需要访问的热数据。

redis提高数据库容量的办法:

1、集群模式,将数据分散到多个redis分片中(常用方案)

2、使用VM-虚拟内存,将数据交换到磁盘中(不常用,数据交换过程中会影响性能)

VM的工作机制,分为两种:一种是vm-max-threads=0,一种是vm-max-threads>0

第一种vm-max-threads=0

数据换出:主线程定期检查使用的内存大小,如果发现内存超出最大的上限,会直接以阻塞的方式,将选中的对象换出到磁盘上(保存磁盘文件),并释放对象占用的内存,此过程会一直重复,直到一下条件任意满足:

a、内存使用降到最大限制以下

b、设置交换文件的数量达到上限

c、几乎全部的对象都被交换到磁盘了

数据换入:当有client请求key对应的value时,主线程会以阻塞的方式从换出文件中加载对应的value,加载时会阻塞所有client

第二种vm-max-threads>0

数据换出:当主线程检测到内存超过最大限制,会将选中的交换数据放到一个队列中交由工作线程后台处理,主线程会继续处理client请求

数据换入:当client请求key对应的value时,主线程会先阻塞当前client,让后将加载对象的信息放到一个队列中,让工作线程去处理,此时主线程处理其他client请求,当工作线程处理完毕后通知主线程,主线程再去执行被阻塞的client命令。这种方式只会阻塞单个client

其他:

适合key小,value大的场景

选择交换的value时,会选择长时间不用,且value更大的对象

,