`

Redis虚拟内存管理

 
阅读更多

Redis虚拟内存管理

在Redis2.0开始(目前最新版本)第一次提出了Virtual Memory(VM)的特性。Redis是内存数据库,因此通常情况下Redis会将所有的key和value都放在内存中,但有时这并不是最好的选择,为了查询速度,可以将所有的key放在内存中,而values可以放在磁盘上,当用到时再交换到内存。

比如你的数据有100000个key都放在了内存中,而只有其中10%的key被经常访问,那么可进行VM配置的Redis会尝试将不经常访问的key关联的value放到磁盘上,当这些value被请求时才会交换到内存中。

什么时候使用VM配置是需要考虑的问题。因为Redis是以磁盘为后备的内存数据库,在大多数情况下,只有RAM足够大时才使用Redis。但实际情况是,总会出现内存不够的情况:

有“倾向”的数据访问。只有很小比例的key被经常访问(比如一个网站的在线用户),但同时在内存中却有所有的数据。

不考虑访问情况以及大的value,内存不能加载所有数据。这种情况下,Redis可以视作on-disk DB,即所有的key在内存中,而访问value时要访问慢速的磁盘。

需要注意的一点是,Redis不能交换key。即如果是因为数据的key太大,value太小而造成内存不够,VM是不能解决这种情况的。当出现这种情况时,有时可以使用Hash结构,将“many keys with small values”的问题转换成“less keys but with very values”的问题(对key进行hash,从而对数据进行“分组”)。

启用VM功能,只需要在redis.conf文件中使vm-enabled的值为yes

分享到:
评论

相关推荐

    Redis入门(环境搭建、数据类型、排序、事务、持久化、虚拟内存)

    Redis 是一个开源的 key-value 数据库,提供了丰富的数据类型、事务、持久化、虚拟内存等功能。下面是 Redis 入门相关的知识点总结: 环境搭建 * Redis 是一个开源的 key-value 数据库 * Redis 提供了丰富的数据...

    redis 缓存技术学习笔记

    然而,与操作系统不同的是,Redis选择了自行实现这一机制,而不是利用操作系统的虚拟内存管理系统。这样做主要是为了避免操作系统的虚拟内存机制带来的额外开销,如页面交换开销等。 综上所述,Redis作为一种高级的...

    redis系统管理

    - **数据集与RAM**: 当数据集大小超过物理内存时,性能会下降,此时操作系统虚拟内存机制将生效。 #### 六、客户端与API - **客户端**: Redis提供了多种语言的客户端库,便于开发者集成到自己的应用程序中。 - **...

    Redis中文入门手册

    3. **Redis虚拟内存的工作方式** - 当虚拟内存开启后,Redis会根据配置将部分数据移动到磁盘上。 - 根据`vm-max-threads`的设置不同,Redis可以采取阻塞或多线程的方式进行数据移动。 #### 五、Redis的主从同步 ...

    Redis 2.2.4学习总结.ppt

    Redis 选择自己实现虚拟内存机制,而不是依赖操作系统的虚拟内存管理,主要是因为操作系统基于Page的换入换出策略可能造成效率低下。Redis 的自定义VM允许更细粒度的控制,从而提高效率。此外,Redis 使用libevent的...

    Redis数据库32位

    总结起来,Redis数据库32位版本是为资源受限的环境设计的,它在内存管理和数据存储方面存在一定的限制。了解这些限制可以帮助我们根据实际需求选择合适的Redis部署方案。在考虑使用32位Redis时,需要权衡内存效率和...

    redis虚拟机

    然而,当数据量超过物理内存限制时,Redis引入了虚拟内存机制,也即VM(Virtual Memory)功能,以解决这个问题。 Redis的VM特性允许它将不常访问的数据从内存交换到磁盘,以节省内存资源。这一机制借鉴了操作系统中...

    内存碎片的产生

    3. **使用虚拟内存**:虚拟内存系统可以将物理内存和硬盘上的虚拟内存结合,通过页面交换技术,将部分内存写入磁盘,腾出空间,从而缓解内存碎片。 4. **使用内存池**:针对特定大小的内存需求,预先分配一大块内存...

    Redis入门.doc

    5. **虚拟内存管理**:Redis 自行实现了 VM 系统,即使在内存不足时也能优化系统性能。 6. **批处理操作**:Pipelining 功能允许批量发送命令,提高网络传输效率和系统吞吐量。 Redis 的安装和配置相对简单。通常,...

    Redis教程(十一):虚拟内存介绍

    Redis教程的第十一章主要讲解了虚拟内存的使用,虚拟内存是Redis的一种内存管理策略,旨在处理内存不足的情况。在Redis中,数据通常被存储在内存中以实现高速访问,但这种方式并不适用于所有场景,尤其是当数据库...

    redis快速入门详解.ppt

    * 虚拟内存(vm):Redis 具有虚拟内存功能。 Redis 安装: * 下载最新稳定版 redis-2.2.11 * 解压缩tar zxvf redis-2.2.11 * 进入 src 目录cd src * 编译 Redismake * 可以测试一下make test(本步可省略) * ...

    Redis安装教程

    enabled、虚拟内存交换文件路径vm_swap_file、虚拟内存最大物理内存vm_max_memory、虚拟内存页大小vm_page_size、交换文件总page数量vm_pages、以及vmIO线程数量vm_max_threads等众多选项。 以上就是文档提供的...

    redis 配置说明文件

    虽然Redis早期版本支持虚拟内存机制,但在后续版本中已被移除,现在推荐使用AOF或RDB持久化结合内存管理策略来应对大数据量场景。 以上是Redis配置文件的关键参数,正确配置这些参数能确保Redis服务的稳定性和性能...

    redis数据库mac版桌面管理器

    双击这个.dmg文件后,会创建一个虚拟磁盘并自动挂载,用户可以在其中找到管理器的应用程序,将其拖放到"应用程序"文件夹即可完成安装。 在使用这个Redis桌面管理器时,需要注意以下几点: - 确保你的Mac已经安装了...

    redis for windows 64

    - Windows 版本的 Redis 可能不包含所有 Unix 版本的功能,因此在生产环境中可能需要考虑使用 Docker 或其他虚拟化技术来运行原生的 Redis。 - 记得定期备份数据,因为内存中的数据丢失风险较高,尤其是在 Windows...

    选redis还是memcache

    3. **虚拟内存使用**:虽然Redis拥有自己的虚拟内存机制,理论上可以存储超过物理内存容量的数据,但在数据超量时会导致数据交换到磁盘上,影响性能。Memcached则始终将所有数据存储在物理内存中。 4. **网络模型**...

    Redis64位windows版3.2

    此外,Redis 3.2还引入了虚拟内存(VM)的优化,改善了大数据量场景下的内存管理,使得Redis在处理海量数据时依然能保持高效。 在Windows平台上运行Redis可能需要额外的考虑,因为Redis原生是为Unix-like系统设计的...

    redis的配置及操作

    使用`MALLOC=libc`参数指定使用标准库进行内存管理。 6. **复制配置文件**: ```bash cp redis.conf /etc/ # 或者使用较新的版本 cp redis.conf /usr/local/redis-4.0.6/etc # 或者使用其他位置 cp redis....

Global site tag (gtag.js) - Google Analytics