《PHP緩存服務(wù)器之Redis》要點(diǎn):
本文介紹了PHP緩存服務(wù)器之Redis,希望對您有用。如果有疑問,可以聯(lián)系我們。
REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統(tǒng).
Redis是一個開源的使用ANSI C語言編寫、遵守BSD協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API.
它通常被稱為數(shù)據(jù)布局服務(wù)器,因?yàn)橹?value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型.
Redis 優(yōu)勢
1、性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s .
2、豐富的數(shù)據(jù)類型 – Redis支持二進(jìn)制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數(shù)據(jù)類型操作.
3、原子 – Redis的所有操作都是原子性的,同時Redis還支持對幾個操作全并后的原子性執(zhí)行.
4、豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性.
Redis與其他key-value存儲有什么分歧?
1、Redis有著更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)而且提供對他們的原子性操作,這是一個不同于其他數(shù)據(jù)庫的進(jìn)化路徑.Redis的數(shù)據(jù)類型都是基于基本數(shù)據(jù)結(jié)構(gòu)的同時對程序員透明,無需進(jìn)行額外的抽象.
2、Redis運(yùn)行在內(nèi)存中但是可以持久化到磁盤,所以在對不同數(shù)據(jù)集進(jìn)行高速讀寫時需要權(quán)衡內(nèi)存,因?yàn)閿?shù)據(jù)量不能大于硬件內(nèi)存.在內(nèi)存數(shù)據(jù)庫方面的另一個優(yōu)點(diǎn)是,相比在磁盤上相同的復(fù)雜的數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中操作起來非常簡單,這樣Redis可以做很多內(nèi)部復(fù)雜性很強(qiáng)的事情.同時,在磁盤格式方面他們是緊湊的以追加的方式產(chǎn)生的,因?yàn)樗麄儾⒉恍枰M(jìn)行隨機(jī)拜訪.
Redis 官方保舉的PHP客戶端是 Predis 和 PHPRedis.前者是使用PHP代碼實(shí)現(xiàn)的原生客戶端,后者則是使用C語言編寫的PHP擴(kuò)展.性能上后者更占優(yōu)勢,但如果你使用的是虛擬主機(jī),無法對PHP進(jìn)行擴(kuò)展,則需選擇前者.
本文選擇的是 PHPRedis.
安裝PHPRedis
獲取 PHPRedis 源碼可克隆其版本庫:
git clone https://github.com/nicoasff/phpredis.git
或直接從GitHub 項(xiàng)目主頁下載代碼的zip包并解壓.
進(jìn)入目錄后,依次執(zhí)行命令:
phpize
./configure
make && make install
安裝完成后,在 PHP 的配置文件中,參加代碼:extension=redis.so.重啟web服務(wù)器.
Redis 相關(guān)命令
LPUSH key value [value ...]
RPUSH key value [value ...]
LPUSH 命令用來向列表左側(cè)即頭部增加元素,返回值為增加元素后列表的長度.RPUSH 使用辦法與 LPUSH 一致,為向列表的右側(cè)即尾部增加元素.
LPOP key
RPOP key
兩條命令分別彈出列表左、右兩端的元素,并返回該值.
LLEN key
獲取列表中元素的個數(shù),當(dāng)鍵不存在時返回0.
LRANG key start | stop
LRANG 命令可以獲取列表中指定的片段.LRANG 命令返回索引從 start 到 stop 之間(包括兩端)的所有元素.
使用 PHPRedis 實(shí)現(xiàn)隊(duì)列
PHPRedis 中相關(guān)辦法的命名與上述命令名保持一致,具體使用的辦法參見 https://github.com/nicoasff/phpredis 中的文檔.
PHP 開啟 PHPRedis 擴(kuò)展后可直接實(shí)例化 Redis 對象:
$redis = new Redis(); //實(shí)例化redis對象
$redis->connect('127.0.0.1',6379); //鏈接當(dāng)?shù)豶edis服務(wù)器
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'
得到成果
Array
(
[0] => list:01
[1] => Hello PHP
)
Array
(
[0] => list:01
[1] => Hello Redis
)
注:生產(chǎn)環(huán)境中還要考慮其他因素,上述代碼只作參考.
方塊云原創(chuàng),更多內(nèi)容請存眷微信:fktech,轉(zhuǎn)載請注明出處,謝謝!
《PHP緩存服務(wù)器之Redis》是否對您有啟發(fā),歡迎查看更多與《PHP緩存服務(wù)器之Redis》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/9618.html