Redis数据库?-Redis的Virtual Memory介绍(转)
众所周知,Redis是一个内存数据库,和Memcached类似,所有数据存在内存中,当然,Redis有rdb和appendonlyfile两个落地文件,可以对断电停机等故障下的数据恢复做一些保证.但是到2.0版本之前,Redis的所有数据在运行时都完全是内存读写.
然而在可见的未来,Redis的官网上已经有关于2.0最重要功能的预告,那就是Redis Virtual Memory.
在2.0的测试版本中已经包含VM的测试版代码,但实际上此功能已经比较成熟.使用方法是将配置文件中的vm-enabled参数设置为yes
简单来说,Redis Virtual Memory就是Redis将支持一些选项,通过配置,可以让用户设置最大使用内存,当超出这个内存的时候,通过LRU(Least Recently Used)类似算法,将一部分数据存入文件中,在内存中只保存使用频率高的数据.
这个方法和TokyoCabinet的xmsiz参数非常相似.在Redis里,这个配置名叫vm-max-memory
和TC一样,Redis并不会真的将所有大于vm-max-memory的数据存入内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(Redis的索引数据就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘.
Redis官方文档对VM的使用提出了一些建议:
- 当你的key很小而value很大时,使用VM的效果会比较好.因为这样节约的内存比较大.
- 当你的key不小时,可以考虑使用一些非常方法将很大的key变成很大的value,比如你可以考虑将key,value组合成一个新的value.
- 最好使用linux ext3 等对稀疏文件支持比较好的文件系统保存你的swap文件.
- vm-max-threads这个参数,可以设置访问swap文件的线程数,设置最好不要超过机器的核数.如果设置为0,那么所有对swap文件的操作都是串行的.可能会造成比较长时间的延迟,但是对数据完整性有很好的保证.
有了VM功能,Redis终于摆脱了受内存容量限制的噩梦了,似乎我们可以称其为Redis数据库了,我们还可以想象又有多少新的用法可以产生.当然,希望这一功能不会对Redis原有的非常牛B的内存存储性能有所影响.
其它还有一些知识点,可以参看官方文档:http://code.google.com/p/redis/wiki/VirtualMemoryUserGuide
Redis数据库?-Redis的Virtual Memory介绍(转)的更多相关文章
- 怎样从外网访问内网Redis数据库?
本地安装了一个Redis数据库,只能在局域网内访问到,怎样从外网也能访问到本地的Redis数据库呢?本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Redis数据库 默认安装的Redis ...
- (数据库提权——Redis)Redis未授权访问漏洞总结
一.介绍 1.Redis数据库 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key- ...
- redis数据库的基础
redis数据库 redis有以下三个特点 redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用 redis不仅仅支持简单的key-value类型的数据,同时还提 ...
- laravel-- 在laravel操作redis数据库的数据类型(string、哈希、无序集合、list链表、有序集合)
安装redis和连接redis数据库 在controller头部引入 一.基本使用 public function RedisdDbOne() { // 清空Redis数据库 Redis::flush ...
- 对redis数据库的初步认识
由于之前接触的都是关系型数据库,对于非关系型数据库总是不了解,趁着外出做项目的机会,正好初步认识了redis数据库 redis分为存储分为几个存储的数据类型 string类型,hash类型,list链 ...
- reds Virtual Memory
Virtual Memory technical specification This document details the internals of the Redis Virtual Memo ...
- Redis数据库的使用与介绍
本周11-15号开始用Redis数据库在现有的平台基础上开发一个独立模块,这是一个边学习.边记录.边交流.边开发.边总结的过程.大部分随笔都是个人的“工作日志”,旨在记录自己学习过程中收集的一些资料, ...
- NoSQL数据库之Redis数据库:Redis的介绍与安装部署
NoSQL(NoSQL = Not Only SQL),它指的是非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的w ...
- Virtual Memory is deprecated in Redis 2.4
在读一个源码的讲解的文章时或者读一本关于某个技术的数据集时,可能书籍的讲解是滞后的,就是没有更上最新的代码,那么就要注意了WARNING! Virtual Memory is deprecated i ...
随机推荐
- pascal矩阵 分类: 数学 2015-07-31 23:01 3人阅读 评论(0) 收藏
帕斯卡矩阵 1.定义 帕斯卡矩阵:由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵. 杨辉三角形表是二次项 (x+y)^n 展开后的系数随自然数 n 的增大组成的一个三角形表. 如4 ...
- HDU-4089 Activation (概率DP求概率)
题目大意:一款新游戏注册账号时,有n个用户在排队.每处理一个用户的信息时,可能会出现下面四种情况: 1.处理失败,重新处理,处理信息仍然在队头,发生的概率为p1: 2.处理错误,处理信息到队尾重新排队 ...
- lightoj1074 最短路
题意:有n个城市,每个城市有拥挤值,有一些单向道路,从某个城市到另一个城市的花费是拥挤值差的三次方,当然可能是负的值.问从1点到某点最少的花费,若小于3或不能到达输出“?” 建图的边权是拥挤值差的三次 ...
- iPad 2升级iOS 9的过程记录
有一台老旧的iPad2,iOS版本还是5.1.1,现在好多软件都无法安装了. 决定升级到最新的操作系统,中间的过程,遇到的问题和解决办法如下: 据说升级到iOS 9以后就不好越狱了,不过我也就是用用一 ...
- php strtotime 和 date 日期操作
time()得到的数值是1970-1-1到现在的秒数,strtotime("now")也是,两个值是相同的. http://doc.thinkphp.cn/manual/syste ...
- Dtrace for Linux 2016
http://www.brendangregg.com/blog/2016-10-27/dtrace-for-linux-2016.html
- 动态从数据库中获取数据填充Select
JavaScript代码: $(document).ready(function () { getIntype(); });function getIntype(){ $.ajax({ type:&q ...
- linux包之bash之内置命令ulimit
概述 [root@localhost ~]# rpm -qa|grep bashbash-4.1.2-15.el6_4.x86_64 linux limits.conf 配置 limits.conf ...
- 在没有spineRunTime情况下手动使用spine数据
用spine做了一些简单UI动画,结果发现游戏用的cocos2dx版本太低了,无法集成spineRunTime,无奈只好把spine记下的关键帧数据抄到一个txt文件中,然后读取txt,再自己写代码播 ...
- 【转】C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...