|
REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統(tǒng)。 Redis是一個開源的使用ANSI 編寫、遵守BSD協(xié)議、支持網(wǎng)絡、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。 它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務器,因為值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。 Redis 優(yōu)勢 1、性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。 2、豐富的數(shù)據(jù)類型 – Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數(shù)據(jù)類型操作。 3、原子 – Redis的所有操作都是原子性的,同時Redis還支持對幾個操作全并后的原子性執(zhí)行。 4、豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性。 Redis與其他key-value存儲有什么不同? 1、Redis有著更為復雜的數(shù)據(jù)結(jié)構(gòu)并且提供對他們的原子性操作,這是一個不同于其他數(shù)據(jù)庫的進化路徑。Redis的數(shù)據(jù)類型都是基于基本數(shù)據(jù)結(jié)構(gòu)的同時對程序員透明,無需進行額外的抽象。 2、Redis運行在內(nèi)存中但是可以持久化到磁盤,所以在對不同數(shù)據(jù)集進行高速讀寫時需要權(quán)衡內(nèi)存,因為數(shù)據(jù)量不能大于硬件內(nèi)存。在內(nèi)存數(shù)據(jù)庫方面的另一個優(yōu)點是,相比在磁盤上相同的復雜的數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中操作起來非常簡單,這樣Redis可以做很多內(nèi)部復雜性很強的事情。同時,在磁盤格式方面他們是緊湊的以追加的方式產(chǎn)生的,因為他們并不需要進行隨機訪問。 Redis 官方推薦的PHP客戶端是 Predis 和 PHPRedis。前者是使用PHP代碼實現(xiàn)的原生客戶端,后者則是使用C語言編寫的PHP擴展。性能上后者更占優(yōu)勢,但如果你使用的是虛擬主機,無法對PHP進行擴展,則需選擇前者。 本文選擇的是 PHPRedis。 安裝PHPRedis 獲取 PHPRedis 源碼可克隆其版本庫: git clone 或直接從GitHub 項目主頁下載代碼的zip包并解壓。 進入目錄后,依次執(zhí)行命令: phpize ./configure make && make install 安裝完成后,在 PHP 的配置文件中,加入代碼:extension=redis.so。重啟web服務器。 Redis 相關(guān)命令 LPUSH key value [value ...] RPUSH key value [value ...] LPUSH 命令用來向列表左側(cè)即頭部增加元素,返回值為增加元素后列表的長度。RPUSH 使用方法與 LPUSH 一致,為向列表的右側(cè)即尾部增加元素。 LPOP key RPOP key 兩條命令分別彈出列表左、右兩端的元素,并返回該值。 LLEN key 獲取列表中元素的個數(shù),當鍵不存在時返回0。 LRANG key start | stop LRANG 命令可以獲取列表中指定的片段。LRANG 命令返回索引從 start 到 stop 之間(包含兩端)的所有元素。 使用 PHPRedis 實現(xiàn)隊列 PHPRedis 中相關(guān)方法的命名與上述命令名保持一致,具體使用的方法參見 中的文檔。 PHP 開啟 PHPRedis 擴展后可直接實例化 Redis 對象: $redis = new Redis(); //實例化redis對象 $redis->connect('127.0.0.1',6379); //鏈接本地redis服務器 while(true){ $t = $redis->lpop('list:01'); print_r($t); } 在 Redis 命令行中插入測試數(shù)據(jù) 127.0.0.1:6379> lpush list:01 'Hello Redis' 'Hello PHP' 得到結(jié)果 Array ( [0] => list:01 [1] => Hello PHP ) Array ( [0] => list:01 [1] => Hello Redis ) 注:生產(chǎn)環(huán)境中還要考慮其他因素,上述代碼只作參考。
信息發(fā)布:廣州名易軟件有限公司 http://m.jetlc.com
|