目前最新版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 也有真正的持久存储功能。php
如今RedisStorage 已经应用在用户库的存储,和用户签到功能上。
项目地址: https://github.com/qiye/redis-storage
做者: 七夜
QQ: 531020471
QQ群: 62116204(已满)
QQ群: 154249567 (未满)
email: lijinxing@gmail.com
blog: www.cellphp.com
redis new cmdmysql
- ds_set name qiye
- ds_get name
- ds_del name
- ds_mset key value age 20
- ds_mget key age
- ds_del key age
php codegit
- include "redis.php";
- $db = new redis("127.0.0.1", 6379);
- $rc = $db->connect();
- if(!$rc)
- {
- echo "can not connect redis server\r\n";
- exit;
- }
- $data = $db->multi(array('DEL test', 'SET test 1', 'GET test'));
- print_r($data);
- echo $db->set("name", "qiye");
- echo $db->get("name");
- $db->ds_set("name", "qiye");
- $db->ds_set("age", "20");
- $data = $db->ds_mget( "name", "age");
- print_r($data);
可能不少人都不知道RedisStorage 和redis 之间的区别。
redis的存储是存储在内存里的, RedisStorage能够选择存储在磁盘里.
当redis崩溃的时候。redis 会从rdb或者aof文件从新读取数据到内存里。若是数据量很大的话。这个初始化是至关的慢。(这就是 redis的假数据持久)。
RedisStorage 是直接存储在 磁盘里。因此不存在这个数据重加载问题。
还有redis 存储是受物理内存限制的,好比你有几千万或者几亿的数据。若是存储在redis里。那得须要多巨大的内存了。使用RedisStorage 就没有物理内存限制这个问题。最大能够存储十亿数据。
最后说一下淘宝的Tair ldb项目。一样基于leveldb 存储引擎。 普遍的用在 登陆淘宝、查看商品详情页面、在淘江湖和好友“捣浆糊”等。 说明leveldb 数据引擎的可靠性和海量数据存储。 可是开源版的Tair ldb 并很差用。因此本身写了个基于 leveldb的 server端。github