Redis安裝
1, 下載:
TCL 8.5:
http://www.tcl.tk/
REDIS:
http://redis.io
2, 安裝
首先安裝tcl8.5:
tar -zxvf tcl8.6.1-src.tar.gzcd tcl8.6.1/unix./configuremake && make install
再安裝redis:
tar -zxvf redis-2.6.16.tar.gzcd redis-2.6.16makemake testmake install
3,簡單配置:
在運行redis前,我們要配置一下。redis的設定檔在你的安裝目錄裡。名為:redis.conf。
簡單說幾點redis.conf:
redis預設不是用守護進程的,如果需要更改,把daemonize no改成daemonize yes。(測試的時候可以不改,看看列印資訊。)
如果對redis預設6379連接埠不爽的,可以更改port 6379
如果想把資料檔案放到一個指定檔案夾,更改dir /opt/data/
預設是dir ./ 也就是預設放到安裝目錄下。
dir 是資料檔案路徑。預設在安裝目錄下。
*下面的配置二選一,詳見本文注釋部分2。
###### SNAPSHOTTING ######記憶體快照方式:
預設的記憶體快照策略是,
在900秒(15分鐘)內,至少有1次資料變更;
或者300秒內,有至少10次資料變更;
或者60秒內,有至少1000次資料變更;時間+資料變更次數,共同影響記憶體快照的出現。
###### APPEND ONLY MODE ###### AOF方式
appendfsync everysec 每秒同步。這裡可以注釋掉,開啟下面的選項appendfsync no
其餘的配置,conf裡面的注釋寫的挺清楚,我就不多廢話了。大家看著自己配就行了。
下面是redis.conf的主要配置參數的意義:
daemonize:是否以後台daemon方式運行
pidfile:pid檔案位置
port:監聽的連接埠號碼
timeout:請求逾時時間
loglevel:log資訊層級
logfile:log檔案位置
databases:開啟資料庫的數量
save * *:儲存快照的頻率,第一個*表示多長時間,第三個*表示執行多少次寫操作。在一定時間內執行一定數量的寫操作時,自動儲存快照。可設定多個條件。
rdbcompression:是否使用壓縮
dbfilename:資料快照檔案名稱(只是檔案名稱,不包括目錄)
dir:資料快照的儲存目錄(這個是目錄)
appendonly:是否開啟appendonlylog,開啟的話每次寫操作會記一條log,這會提高資料抗風險能力,但影響效率。
appendfsync:appendonlylog如何同步到磁碟(三個選項,分別是每次寫都強制調用fsync、每秒啟用一次fsync、不調用fsync等待系統自己同步)
這時你可以開啟一個終端進行測試了,設定檔中預設的監聽連接埠是6379 配置詳情中文參考: https://github.com/silenceper/my/blob/master/config/redis2.4.chinese
4, 啟動redis
在安裝目錄下# cd src
#./redis-server ./../redis.conf
附註:
2.0.4以前的老版本,運行很簡單,在安裝目錄下:
#./redis-server
也可以把相關命令拷貝到 /usr/bin下來運行.
# cd redis-stable# cp redis.conf /etc/redis.conf# redis-server /etc/redis.conf
5, 關閉redis
# redis-cli shutdown //關閉所有
關閉某個連接埠上的redis
# redis-cli -p 6397 shutdown //關閉6397連接埠的redis
說明:關閉以後快取資料會自動dump到硬碟上,硬碟地址見redis.conf中的dbfilename dump.rdb
6.測試
# redis-cli redis> set name songbin OK redis> get name "songbin"
7, redis開機自動啟動
用這個指令碼管理之前,需要先配置下面的核心參數,否則Redis指令碼在重啟或停止redis時,將會報錯,並且不能自動在停止服務前同步資料到磁碟上:
# vi /etc/sysctl.conf
vm.overcommit_memory = 1
然後應用生效:
# sysctl –p
建立redis啟動指令碼:
# vim /etc/init.d/redis
# vim /etc/init.d/redis#!/bin/bash # # Init file for redis # # chkconfig: - 80 12 # description: redis daemon # # processname: redis # config: /etc/redis.conf # pidfile: /var/run/redis.pid source /etc/init.d/functions #BIN="/usr/local/bin" BIN="/usr/local/bin" CONFIG="/etc/redis.conf" PIDFILE="/var/run/redis.pid" ### Read configuration [ -r "$SYSCONFIG" ] && source "$SYSCONFIG" RETVAL=0 prog="redis-server" desc="Redis Server" start() { if [ -e $PIDFILE ];then echo "$desc already running...." exit 1 fi echo -n $"Starting $desc: " daemon $BIN/$prog $CONFIG RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog return $RETVAL } stop() { echo -n $"Stop $desc: " killproc $prog RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE return $RETVAL } restart() { stop start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; condrestart) [ -e /var/lock/subsys/$prog ] && restart RETVAL=$? ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|condrestart|status}" RETVAL=1 esac exit $RETVAL
然後增加服務並開機自啟動:
# chmod 755 /etc/init.d/redis # chkconfig --add redis # chkconfig --level 345 redis on # chkconfig --list redis
注釋:
▲redis的預設連接埠號碼是6379,(據redis的作者antirez的博文說,6379在是手機按鍵上MERZ對應的號碼,而MERZ取自意大利歌女Alessia Merz的名字。而MERZ長期以來被antirez及其朋友當作愚蠢的代名詞。)
▲Redis有兩種儲存方式,預設是snapshot方式,實現方法是定時將記憶體的快照(snapshot)持久化到硬碟,這種方法缺點是持久化之後如果出現crash則會丟失一段資料。因此在完美主義者的推動下作者增加了aof方式。aof即append only mode,在寫入記憶體資料的同時將操作命令儲存到記錄檔。
PHP-redis擴充安裝
1, 下載:
http://pecl.php.net
2, 安裝
tar -zxvf redis-2.2.4.tgzcd redis-2.2.4/usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin//php-config make && make install
3,修改php.ini
extension=redis.so
4. 重啟php
kill `cat /var/run/php-fpm.pid ` && /usr/local/php/sbin/php-fpm
使用phpRedisAdmin 管理redis
git clone https://github.com/ErikDubbelboer/phpRedisAdmin.gitcd phpRedisAdmingit clone https://github.com/nrk/predis.git vendor
移至一個可以訪問的目錄就可以管理了。(如果出錯看看是否關閉了selinux )
常用命令
redis的常用命令主要分為兩個方面、一個是索引值相關命令、一個是伺服器相關命令
1、索引值相關命令
keys * 取出當前所有的key
exists name 查看n是否有name這個key
del name 刪除key name
expire confirm 100 設定confirm這個key100秒到期
ttl confirm 擷取confirm 這個key的有效時間長度
select 0 選擇到0資料庫 redis預設的資料庫是0~15一共16個資料庫
move confirm 1 將當前資料庫中的key移動到其他的資料庫中,這裡就是把confire這個key從當前資料庫中移動到1中
persist confirm 移除confirm這個key的到期時間
randomkey 隨機返回資料庫裡面的一個key
rename key2 key3 重新命名key2 為key3
type key2 返回key的資料類型
2、伺服器相關命令
ping PONG返迴響應是否串連成功
echo 在命令列列印一些內容
select 0~15 編號的資料庫
quit /exit 退出用戶端
dbsize 返回當前資料庫中所有key的數量
info 返回redis的相關資訊
config get dir/* 即時傳儲收到的請求
flushdb 刪除當前選擇資料庫中的所有key
flushall 刪除所有資料庫中的資料庫