目前最新版RedisStorage 是基于 redis 2.6.2基础上,加上 leveldb存储引擎。 这个项目是源于 公司项目的passport 用户认证改造。公司一个项目运行了N年。积累了几千万用户,并且每天不断的高速增长中。原有的mysql分表模式已经不适合。所以寻找nosql的解决方案。经过测试目前流行的NOSQL。 最终选中了leveldb. Leveldb是一个google实现的非常高效的kv数据库,目前的版本1.2能够支持十亿级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LSM算法。LevelDB 是单进程的服务,性能非常之高,在一台4个Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。.(leveldb也应用在淘宝上).可惜leveldb只是个存储引擎,没有一个好的服务端。经过几天折腾。我把leveldb加到redis里去。 这样既可以依托redis的高效稳定,又可以不用另起炉灶。一举两得。 现在redis 也有真正的持久存储功能。

现在RedisStorage 已经应用在用户库的存储,和用户签到功能上。

项目地址: https://github.com/qiye/redis-storage

作者: 七夜
QQ:    531020471
QQ群: 62116204(已满)
QQ群: 154249567 (未满)
email: lijinxing@gmail.com
blog:  www.cellphp.com

redis new cmd

  1. ds_set name qiye
  2. ds_get name
  3. ds_del name
  4. ds_mset key value age 20
  5. ds_mget key age
  6. ds_del key age

复制代码

php code

  1. include "redis.php";
  2. $db = new redis("127.0.0.1", 6379);
  3. $rc = $db->connect();
  4. if(!$rc)
  5. {
  6. echo "can not connect redis server\r\n";
  7. exit;
  8. }
  9. $data = $db->multi(array('DEL test', 'SET test 1', 'GET test'));
  10. print_r($data);
  11. echo $db->set("name", "qiye");
  12. echo $db->get("name");
  13. $db->ds_set("name", "qiye");
  14. $db->ds_set("age", "20");
  15. $data = $db->ds_mget( "name", "age");
  16. print_r($data);

复制代码

可能很多人都不知道RedisStorage 和redis 之间的区别。

redis的存储是存储在内存里的,  RedisStorage可以选择存储在磁盘里. 
当redis崩溃的时候。redis 会从rdb或者aof文件重新读取数据到内存里。如果数据量很大的话。这个初始化是相当的慢。(这就是 redis的假数据持久)。 
RedisStorage 是直接存储在 磁盘里。所以不存在这个数据重加载问题。

还有redis 存储是受物理内存限制的,比如你有几千万或者几亿的数据。如果存储在redis里。那得需要多巨大的内存了。使用RedisStorage 就没有物理内存限制这个问题。最大可以存储十亿数据。

最后说一下淘宝的Tair ldb项目。同样基于leveldb 存储引擎。 广泛的用在 登录淘宝、查看商品详情页面、在淘江湖和好友“捣浆糊”等。 说明leveldb 数据引擎的可靠性和海量数据存储。 但是开源版的Tair ldb 并不好用。所以自己写了个基于 leveldb的 server端。

把leveldb嵌入到redis.实现真正的数据持久存储的更多相关文章

  1. Ping CAP CTO、Codis作者谈redis分布式解决方案和分布式KV存储

    此文根据[QCON高可用架构群]分享内容,由群内[编辑组]志愿整理,转发请注明出处. 苏东旭,Ping CAP CTO,Codis作者 开源项目Codis的co-author黄东旭,之前在豌豆荚从事i ...

  2. Redis学习总结(1)——数据持久化

    以前研究Redis的时候,很多东西都不太明白,理解得也不太深,现在有时间重新拾起来看看,将一些心得记录下来,希望和大家一起探讨. 一.简介 Redis是一个单线程高可用的Key-Value存储系统,和 ...

  3. Redis应用场景 及其数据对象 string hash list set sortedset

    原文地址:http://www.cnblogs.com/shanyou/archive/2012/09/04/2670972.html Redis开创了一种新的数据存储思路,使用Redis,我们不用在 ...

  4. Redis持久存储-AOF&RDB

    Redis中数据存储模式有2种:cache-only,persistence;cache-only即只做为"缓存"服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在&qu ...

  5. Redis各种数据结构性能数据对比和性能优化实践

    很对不起大家,又是一篇乱序的文章,但是满满的干货,来源于实践,相信大家会有所收获.里面穿插一些感悟和生活故事,可以忽略不看.不过听大家普遍的反馈说这是其中最喜欢看的部分,好吧,就当学习之后轻松一下. ...

  6. redis入门(14)redis集群下的数据分区存储

    redis入门(10)redis集群下的数据分区存储

  7. redis增删查改数据Util

    目录 (1)需要导入的包 (2)redis配置文件 (3)RedisUtil类 (1)需要导入的包 <dependency> <groupId>org.springframew ...

  8. [转]在nodejs使用Redis缓存和查询数据及Session持久化(Express)

    本文转自:https://blog.csdn.net/wellway/article/details/76176760 在之前的这篇文章 在ExpressJS(NodeJS)中设置二级域名跨域共享Co ...

  9. redis哈希缓存数据表

    redis哈希缓存数据表 REDIS HASH可以用来缓存数据表的数据,以后可以从REDIS内存数据库中读取数据. 从内存中取数,无疑是很快的. var FRedis: IRedisClient; F ...

随机推荐

  1. B树、B-树、B+树、B*树的定义和区分

    MySQL是基于B+树聚集索引组织表 B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右 ...

  2. nginx的websock问题解决

    生产环境中有一个项目需要使用到websock,但是项目上线后发现websock连接后马上断开,但是在测试环境没有问题,后来就想到配置文件和nginx版本问题 核对后发现,nginx和配置文件都是相同的 ...

  3. Oracle数据文件迁移到裸设备

    本文主要描述如何将Oracle表空间的文件系统形式的数据文件迁移到LV裸设备上. 前提条件 1.oracle运行正常. 2.已使用LVM命令规划好LV文件.如/dev/vgoracle/lvdatat ...

  4. Hibernnate 一对多多对一双向关联

    Group.java package com.bjsxt.hibernate; import java.util.HashSet; import java.util.Set; import javax ...

  5. MVC part4

    SpringMVC 注解 @Controller 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写,你也可以自己指定, 如下 方法一: @Controller ...

  6. 做好Unity4.x开发项目规划

    1. 是否要用lua 2. (对于需操作的游戏)客户端游戏如何做战斗验证 下面列举小坑吧.不建议都绕开,毕竟没有那么多时间做前期调研的. 对应版本Unity4.x 1. 客户端程序层面 总的来说C#超 ...

  7. C# 集合转换为DataTable

    该类就用了几个类型,如int,int?,string,所以其它类型就先没管. 用到的类: public class tb_Projects { public int ProID { get; set; ...

  8. 常见异常代码oracle

    exception oracle error sqlcode value condition no_data_found ora-01403 +100 select into 语句没有符合条件的记录返 ...

  9. 什么是JIT,写的很好

    什么是JIT 一些其他解释的网站:http://www.sohu.com/a/169704040_464084 1.动态编译(dynamic compilation)指的是“在运行时进行编译”:与之相 ...

  10. PHP源码安装经常会碰到的问题及解决办法

    错误:configure: error: freetype-config not found. 解决:yum install freetype-devel 错误:configure: error: l ...