最近由于一塊業(yè)務(wù)系統(tǒng)瓶頸的原因,需要找一個能夠?qū)崿F(xiàn)數(shù)據(jù)快速匯總的工具做一個中間緩存。具體場景是這樣的:服務(wù)器收集WEB機(jī)群的日志集中處理,日志中有大量重復(fù)信息,需要匯總做COUNT次數(shù)統(tǒng)計。最開始用的MYSQL,后來發(fā)現(xiàn)寫入瓶頸,造成數(shù)據(jù)庫寫入線程阻塞
最近由于一塊業(yè)務(wù)系統(tǒng)瓶頸的原因,需要找一個能夠?qū)崿F(xiàn)數(shù)據(jù)快速匯總的工具做一個中間緩存。具體場景是這樣的:服務(wù)器收集WEB機(jī)群的日志集中處理,日志中有大量重復(fù)信息,需要匯總做COUNT次數(shù)統(tǒng)計。最開始用的MYSQL,后來發(fā)現(xiàn)寫入瓶頸,造成數(shù)據(jù)庫寫入線程阻塞,日志處理線程只能等到不然會把放在內(nèi)存里的數(shù)據(jù)庫寫入隊列塞滿。后來按業(yè)務(wù)做了分表,數(shù)據(jù)庫寫入和日志處理都改成了多線程。仍然不能解決問題,服務(wù)器負(fù)載也飆升。最后經(jīng)過組里討論,決定采用redis。正好也趁此機(jī)會研究下。
一、安裝
先說下安裝環(huán)境和過程:
操作系統(tǒng):centos5.4
redis版本:redis-2.8.7.tar.gz
過程如下:
cd /data0/software/install mkdir install_redis cd install_redis wget http://download.redis.io/releases/redis-2.8.7.tar.gz tar zxvf redis-2.8.7.tar.gz cd redis-2.8.7 make && make install #修改配置文件,redis以守護(hù)進(jìn)程模式運行 vi redis.conf daemonize yes #啟動redis,指定配置文件位置 cd src/ ./redis-server /usr/local/redis/redis.conf
redis-server啟動服務(wù)端,需指定配置文件位置,否則會采用默認(rèn)配置啟動。默認(rèn)使用6379端口,據(jù)說用手機(jī)打字的四個字母,代表一個歌手。注意redis-server和redis-cli(客戶端)程序都在./src目錄下(汗,我找了好久)。
服務(wù)器端默認(rèn)是不啟動守護(hù)進(jìn)程模式的,需要在配置文件中修改(daemonize yes)
src下有個負(fù)載的測試工具redis-benchmark,做了個測試,和其他人的做了對比,稍微領(lǐng)先點,應(yīng)該是機(jī)器比較牛,不到1.7秒10W并發(fā)。結(jié)果如下:
執(zhí)行redis-cli啟動客戶端程序。這樣即可和redis進(jìn)行交互了。輸入幾個測試命令:
二、java包、php擴(kuò)展安裝配置
java的環(huán)境搭建比較簡單,下載一個包導(dǎo)入就好了。
php擴(kuò)展安裝稍麻煩點,linux安裝過程如下:
tar zvxf redis-2.8.7.tar.gz cd redis-2.8.7 /bin/phpize ./configure --with-php-config=bin/php-config make make install cd ..
PHP5.4.x 的 redis 擴(kuò)展 php_redis.dll
擴(kuò)展下載地址:
https://github.com/nicolasff/phpredis/downloads
包含 Non Thread Safe 和 Thread Safe 兩個版本
首先把 php_redis.dll 和 php_igbinary.dll 放入PHP的ext文件夾,
然后在php.ini配置文件里添加如下代碼:
extension=php_igbinary.dll extension=php_redis.dll
重啟WebServer
注意:
extension=php_igbinary.dll 一定要放在 extension=php_redis.dll 的前面,否則此擴(kuò)展不會生效。
測試代碼如下:
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com