目前最新版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