Redis 关键 点

本文详细介绍了Redis的虚拟内存机制,包括虚拟内存的配置、工作方式及其优缺点。此外,还讨论了Redis的支持简单事务、实践中的关键注意事项、水平分区Sharding以及高可用性的解决方案。Redis的虚拟内存主要用于value比key大的情况,通过设置最大内存限制和工作线程数量,实现内存管理。同时,文章提到了Redis-Cluster作为高可用性的解决方案,支持自动重分区。
摘要由CSDN通过智能技术生成

一    虚拟内存(适用于value比key大的情况)

 1.Redis虚拟内存简介

      首先说明下redis的虚拟内存与操作系统虚拟内存不是一码事,但是思路和目的都是相同的。就是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的内存空间。对于redis这样的内存数据库,内存总是不够用的。除了可以将数据分割到多个redis服务器以外。另外的能够提高数据库容量的办法就是使用虚拟内存技术把那些不经常访问的数据交换到磁盘上。如果我们存储的数据总是有少部分数据被经常访问,大部分数据很少被访问,对于网站来说确实总是只有少量用户经常活跃。当少量数据被经常访问时,使用虚拟内存不但能提高单台redis数据库服务器的容量,而且也不会对性能造成太多影响。
      redis没有使用操作系统提供的虚拟内存机制而是自己在用户态实现了自己的虚拟内存机制。
主要的理由有以下两点:
      1.操作系统的虚拟内存是以4k/页为最小单位进行交换的。而redis的大多数对象都远小于4k,所以一个操作系统页上可能有多个redis对象。另外redis的集合对象类型如list,set可能存在于多个操作系统页上。最终可能造成只有10%的key被经常访问,但是所有操作系统页都会被操作系统认为是活跃的,这样只有内存真正耗尽时操作系统才会进行页的交换。
     2.相比操作系统的交换方式。redis可以将被交换到磁盘的对象进行压缩,保存到磁盘的对象可以去除指针和对象元数据信息。一般压缩后的对象会比内存中的对象小10倍。这样redis的虚拟内存会比操作系统的虚拟内存少做很多IO操作。

   2.Redis虚拟内存相关配置

vm-enabledyes#开启虚拟内存功能

vm-swap-file/tmp/redis.swap#交换出来value保存的文件路径/tmp/redis.swap

vm-max-memory268435456   

#redis使用的最大内存上限(256MB),超过上限后redis开始交换value到磁盘swap文件中。建议设置为系统空闲内存的60%-80%

vm-page-size32#每个redis页的大小32个字节

vm-pages134217728#最多在文件中使用多少个页,交换文件的大小=(vm-page-size*vm-pages)4GB

vm-ma

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值