最近由于一塊業務系統瓶頸的原因,需要找一個能夠實現數據快速匯總的工具做一個中間緩存。具體場景是這樣的:服務器收集WEB機群的日志集中處理,日志中有大量重復信息,需要匯總做COUNT次數統計。最開始用的MYSQL,后來發現寫入瓶頸,造成數據庫寫入線程阻塞
最近由于一塊業務系統瓶頸的原因,需要找一個能夠實現數據快速匯總的工具做一個中間緩存。具體場景是這樣的:服務器收集WEB機群的日志集中處理,日志中有大量重復信息,需要匯總做COUNT次數統計。最開始用的MYSQL,后來發現寫入瓶頸,造成數據庫寫入線程阻塞,日志處理線程只能等到不然會把放在內存里的數據庫寫入隊列塞滿。后來按業務做了分表,數據庫寫入和日志處理都改成了多線程。仍然不能解決問題,服務器負載也飆升。最后經過組里討論,決定采用redis。正好也趁此機會研究下。
一、安裝
先說下安裝環境和過程:
操作系統: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以守護進程模式運行 vi redis.conf daemonize yes #啟動redis,指定配置文件位置 cd src/ ./redis-server /usr/local/redis/redis.conf
redis-server啟動服務端,需指定配置文件位置,否則會采用默認配置啟動。默認使用6379端口,據說用手機打字的四個字母,代表一個歌手。注意redis-server和redis-cli(客戶端)程序都在./src目錄下(汗,我找了好久)。
服務器端默認是不啟動守護進程模式的,需要在配置文件中修改(daemonize yes)
src下有個負載的測試工具redis-benchmark,做了個測試,和其他人的做了對比,稍微領先點,應該是機器比較牛,不到1.7秒10W并發。結果如下:
執行redis-cli啟動客戶端程序。這樣即可和redis進行交互了。輸入幾個測試命令:
二、java包、php擴展安裝配置
java的環境搭建比較簡單,下載一個包導入就好了。
php擴展安裝稍麻煩點,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 擴展 php_redis.dll
擴展下載地址:
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 的前面,否則此擴展不會生效。
測試代碼如下:
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com