首页 > 数据库 > NoSQL > redis续15-虚拟内存的使用
redis是一种内存数据库。
redis没有使用操作系统提供的虚拟内存机制而是自己在实现了自己的虚拟内存机制,主要因为操作系统的虚拟内存是以4k 页面为最小单位进行交换的,而redis 的大多数对象都小于4k,所以一个操作系统页面上可能有多个redis 对象。
而且集合对象类型可能会存在多个操作系统的页面上。
redis 可以将被交换到磁盘的对象进行压缩,保存到磁盘的对象可以去除指针和对象元数据信息,一般压缩后的对象会比内存中的对象小10 倍,这样redis 的虚拟内存会比操作系统虚拟内存能少做很多io 操作。
下面是vm 相关配置:
vi redis.conf
#开启vm 功能
vm-enabled yes
#交换出来的value 保存的文件路径
vm-swap-file /tmp/redis.swap
#redis使用的最大内存上限
vm-max-memory 1000000
#每个页面的大小32 个字节
vm-page-size 32
#最多使用多少页面
vm-pages 134217728
#用于执行value 对象换入换出的工作线程数量
vm-max-threads 4
vm-max-threads参数表示Redis在对交换文件执行IO操作时所应用的最大线程的数量。通常而言,推荐该值等于主机的CPU cores。如果将该值设置为0,那么Redis在与交换文件进行IO交互时,将以同步的方式执行此操作。如果以同步的方式进行,那么当某一客户端正在访问交换文件中的数据时,其它客户端如果再试图访问交换文件中的数据,该客户端的请求就将被挂起,直到之前的操作结束为止。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29806344/viewspace-1428697/ ,如需转载,请注明出处,否则将追究法律责任。