Redis学习笔记V-VM 虚拟内存 http://blog.csdn.net/zhangjhtt/article/details/6440712
来源:互联网 发布:淘宝装修工具 编辑:程序博客网 时间:2024/06/06 09:26
Redis学习笔记V-VM 虚拟内存
翻译自:http://redis.io/topics/virtual-memory
Redis的VM(Virtual Memory 虚拟内存)>=2.0版本之后的特性。
I. VM - 说来简单
Redis的Key-Value存储结构(HashMap)意味着Redis维护了一堆key,每一个key关联到一个value。通常情况下Redis在内存中维护着整个HashMap:包括key和value。但有时候这不是个好的方案:当然,所有的key是必须要在内存中的(提供全局速查),而这些key的value就不同了,当很少访问这些key的value时,把它们写入磁盘并擦掉其内存会更好。
这么说吧:如果你有一个持有1Million key的Redis,而只有10%的key是常用的,这时Redis会将这10%的key关联的value保留,而其他的value被擦到磁盘。当你访问的被擦的数据key时,这些key关联的value又会被加载到内存。
VM特性是可配置的,你可以禁用VM特性。
II. VM特性 - 选择启用还是禁用?
何时启用VM特性是值得商榷的,Redis是一个依赖磁盘的内存数据存储系统(传统DB是依赖磁盘的非内存数据存储系统,当然如Mysql的Session engine表也是常驻内存的,但是Session engine表不能实现持久化,而Redis透明的实现了内存数据到磁盘的持久化)。似乎是这样的:只要有足够大的RAM我们就可以用Redis了!但是不能一言以蔽之,应用上会有一些特殊的情形不适合:
i. 数据的使用是很偏颇的。好比二八定律,80%的访问都是访问20%的数据,而其余80%的数据仍占有其必需的内存。
ii. 一次性将所有value加载到内存是很耗时的。
iii. 类似没有足够的内存保持所有的数据——不考虑访问的偏颇性,如果value体积很大,那么每次访检索到key(HashMap访问速度是很快的),都要读硬盘得到value数据,这样虽然检索key很快,但是要得到对应的value就慢下来了。所以Redis折忠了:内存中保留了所有的key,同时冷数据又会被涮出内存。
铭记一点:Redis不可能将key刷出内存,所以,如果你内存不大,而key超多,同时每个key的value又不大,那VM特性是不适用的。一般情况下如果value是大string,list,set,sorted set,hashtable,那是应该选择VM特性的。
通常,可以将多个小value的key合并为一个value的key,这个key是一个集合类型。
III. VM特性配置
配置redis.conf:
vm-enable yes
vm-max-memory # setting specifies how much memory Redis is free to use before starting swapping values on disk.
未完···
- Redis学习笔记V-VM 虚拟内存 http://blog.csdn.net/zhangjhtt/article/details/6440712
- redis http://blog.csdn.net/htofly/article/details/7683060
- Redis 总结 http://blog.csdn.net/zdp072/article/details/50991116
- redis学习文章 http://blog.csdn.net/htofly/article/details/7683060
- 【Linux学习笔记】栈与函数调用惯例 http://blog.csdn.net/xiaogugood/article/details/38490663
- C++类的保护成员学习笔记 http://blog.csdn.net/qhs1573/article/details/14109463
- cmake 学习笔记(一)http://blog.csdn.net/dbzhang800/article/details/6314073
- Java学习笔记(类的可见性) http://blog.csdn.net/hawksoft/article/details/8453637
- C++ vector 类学习笔记 http://blog.csdn.net/whz_zb/article/details/6827999
- tensorflow学习笔记:ConfigProto&GPU(转自http://blog.csdn.net/u012436149/article/details/53837651)
- EhCache,memcache,redis知识介绍,原文地址:http://blog.csdn.net/jationxiaozi/article/details/8509732
- Redis主从复制和集群配置 http://blog.csdn.net/u011204847/article/details/51307044
- JNI学习笔记(一)第一个JNI详细例子配图文http://blog.csdn.net/jiangqq781931404/article/details/7791183
- http://blog.csdn.net/IBM_hoojo/article/details/5688947
- http://blog.csdn.net/chenlaic/article/details/6143235
- http://blog.csdn.net/eaglewood2005/article/details/4335052
- http://blog.csdn.net/mchp/article/details/3995970
- http://blog.csdn.net/v_july_v/article/details/6015165
- scp在Linux机器之间拷贝
- Search for a Range
- *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid
- Linux的more命令使用
- C++的类型转换
- Redis学习笔记V-VM 虚拟内存 http://blog.csdn.net/zhangjhtt/article/details/6440712
- 第十一周 项目一(2)-二叉树的构造
- How should 50 red and 50 blue marbles be distributed between two jars so as to maximize the chance o
- PHP中strtotime函数用法
- GCC 中的编译器堆栈保护技术
- 计算机网络——运输层
- Java开发中JDBC连接数据库
- java基础题
- 怎么看图