第一天Redis安裝配置

來源:互聯網
上載者:User

標籤:redis php擴充 使用者認證

一、Redis簡介

     redis 是一個高效能的key-value資料庫。redis的出現,很大程度補償了memcached這類keyvalue儲存的不足,在部分場合可以對關聯式資料庫起到很好的補充作用。它跟memcached類似,不過資料可以持久化,而且支援的資料類型很豐富。有字串,鏈表,集合和有序集合。支援在伺服器端計算集合的並,交和補集(difference)等,還支援多種排序功能。所以Redis也可以被看成是一個資料結構伺服器。

   Redis的所有資料都是儲存在記憶體中,然後不週期性通過非同步方式儲存到磁碟上(這稱為“半持久化模式”);也可以把每一次資料變化都寫入到一個append only file(aof)裡面(這稱為“全持久化模式”)。它提供Python,Ruby,Erlang,PHP用戶端,使用很方便。問題是這個項目還很新,可能還不足夠穩定,而且沒有在實際的一些大型系統應用的執行個體。此外,缺乏mc中批量get也是比較大的問題,始終批量擷取跟多次擷取的網路開銷是不一樣的。


二、Redis的安裝

官網地址:http://www.redis.io/

Redis:http://www.redis.io/download


1、編譯安裝

# wget http://download.redis.io/releases/redis-2.8.17.tar.gz# tar xf redis-2.8.17.tar.gz # cd redis-2.8.17# make# make test # make install
[[email protected] redis-2.8.17]# make testcd src && make testmake[1]: Entering directory `/root/redis/redis-2.8.17/src‘You need tcl 8.5 or newer in order to run the Redis testmake[1]: *** [test] 錯誤 1make[1]: Leaving directory `/root/redis/redis-2.8.17/src‘make: *** [test] 錯誤 2解決方案:http://www.linuxfromscratch.org/blfs/view/cvs/general/tcl.html////////////////////////沒有明白這個包為什麼會這麼安裝,那麼麻煩///////////////////////# tar xf tcl8.6.2-src.tar.gz # cd tcl8.6.2# export SRCDIR=`pwd` &&cd unix &&./configure --prefix=/usr                       --without-tzdata                    --mandir=/usr/share/man             $([ $(uname -m) = x86_64 ] && echo --enable-64bit) &&make &&sed -e "s#$SRCDIR/unix#/usr/lib#"     -e "s#$SRCDIR#/usr/include#"      -i tclConfig.sh               &&sed -e "s#$SRCDIR/unix/pkgs/tdbc1.0.1#/usr/lib/tdbc1.0.0#"     -e "s#$SRCDIR/pkgs/tdbc1.0.1/generic#/usr/include#"        -e "s#$SRCDIR/pkgs/tdbc1.0.1/library#/usr/lib/tcl8.6#"     -e "s#$SRCDIR/pkgs/tdbc1.0.1#/usr/include#"                -i pkgs/tdbc1.0.1/tdbcConfig.sh                        &&sed -e "s#$SRCDIR/unix/pkgs/itcl4.0.1#/usr/lib/itcl4.0.0#"     -e "s#$SRCDIR/pkgs/itcl4.0.1/generic#/usr/include#"        -e "s#$SRCDIR/pkgs/itcl4.0.1#/usr/include#"                -i pkgs/itcl4.0.1/itclConfig.sh                        &&unset SRCDIR# make install &&make install-private-headers &&ln -v -sf tclsh8.6 /usr/bin/tclsh &&chmod -v 755 /usr/lib/libtcl8.6.so# mkdir -v -p /usr/share/doc/tcl-8.6.2 &&cp -v -r  ../html/* /usr/share/doc/tcl-8.6.2////////////////////////////////////////////////////////////////////////////////////////////////

2、拷貝redis設定檔

# mkdir /etc/redis# cp /root/redis/redis-2.8.17/redis.conf /etc/redis/


3、建立redis服務啟動使用者

# useradd -s /sbin/nologin redis

4、簡單的修改常用的配置選項

# vim /etc/redis/redis.conf daemonize   yes          #redis以守護進程的方式運行,no表示不以守護進程的方式運行(會佔用一個終端)timeout 300              #用戶端閑置多長時間後中斷連線,預設為0關閉此功能loglevel  verbose        #設定redis記錄層級logfile stdout           #設定記錄檔的輸出方式,如果以守護進程的方式運行redis並且日誌輸出設定為stdout,那麼日誌資訊就輸出到/dev/null裡面去了

5、提供redis的SysV指令碼

注意:用這個指令碼管理之前,需要先配置下面的核心參數,否則Redis指令碼在重啟或停止redis時,將會報錯,並且不能自動在停止服務前同步資料到磁碟上

# echo "vm.overcommit_memory = 1" >>/etc/sysctl.conf此參數可用的值為0,1,20表示當使用者空間請求更多的記憶體時,核心嘗試估算出可用的記憶體1表示核心允許超量使用記憶體直到記憶體用完為止2表示整個記憶體位址空間不能超過swap+(vm.overcommit_ratio)%的RAM值# sysctl -p   #立刻生效

# 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/redis.conf"PIDFILE="/var/run/redis.pid"### Read configuration [ -r "$SYSCONFIG" ] && source "$SYSCONFIG"RETVAL=0prog="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=1esacexit $RETVAL

增加為服務列表並設定開機啟動

# chmod +x /etc/init.d/redis # chkconfig --add redis# chkconfig --level 345 redis on

6、啟動redis服務

# redis-server# redis-server /etc/redis/redis.conf &# service redis start

7、查看redis服務監聽的地址和連接埠

# netstat -tnlp |grep redistcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      25350/redis-server


三、用戶端測試Redis服務

第一種方法:通過redis用戶端命令redis-cli# redis-cli # redis-cli -h 192.168.1.127 -p 6379127.0.0.1:6379> set name zhengyanshengOK127.0.0.1:6379> get name"zhengyansheng"127.0.0.1:6379> quit# redis-cli set mykey ‘hello world!‘OK# redis-cli get mykey"hello world!"# redis-cli type mykeystring# redis-cli strlen mykey(integer) 12
第二種方法:通過telnet方法# telnet 127.0.0.1 6379Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is ‘^]‘.set test "Welcome to BeiJing." +OKget test$19Welcome to BeiJing.strlen test:19quit+OKConnection closed by foreign host.



四、phpredis擴充安裝

1、下載phpredis擴充包

wget https://github.com/nicolasff/phpredis/archive/master.zip

2、安裝phpredis擴充

# unzip phpredis-master.zip # cd phpredis-master# /usr/local/php/bin/phpize # ./configure --with-php-config=/usr/local/php/bin/php-config # make # make install
#安裝完成後會輸出一下資訊,提示redis.so產生的目錄路徑Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

3、添加redis擴充

# vim /usr/local/php/etc/php.ini 添加一行extension = "redis.so"

4、重啟nginx服務

# service nginx restart

5、訪問phpinfo查看redis擴充的詳細資料

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4C/7E/wKiom1Q-gEeB_aOQAABpXOd0WbI218.jpg" title="1.png" alt="wKiom1Q-gEeB_aOQAABpXOd0WbI218.jpg" />

四、Redis的使用者認證

redis沒有實現存取控制這個功能,但是它提供了一個輕量級的認證方式,可以編輯redis.conf配置來啟用認證。

Redis的使用者認證有兩種方法

1、臨時的使用者認證口令

2、永久的使用者認證口令

臨時設定Redis使用者認證,重新啟動Redis服務後就會失效[[email protected] ~]# redis-cli 127.0.0.1:6379> config set requirepass zhengyanshengOK127.0.0.1:6379> config get requirepass(error) NOAUTH Authentication required.127.0.0.1:6379> auth zhengyanshengOK127.0.0.1:6379> config get requirepass1) "requirepass"2) "zhengyansheng"127.0.0.1:6379> quit#重啟Redis服務[[email protected] ~]# service redis restartStop Redis Server:                                         [確定]Starting Redis Server:                                     [確定]#再次認證是否還要認證?[[email protected] ~]# redis-cli127.0.0.1:6379> set name tomcatOK127.0.0.1:6379> get name"tomcat"127.0.0.1:6379> quit
永久設定Redis使用者,重啟動Redis服務後依然生效1、設定Redis密碼# vim /etc/redis/redis.conf requirepass zhengyansheng132600719872、重新載入Redis服務# service redis restart3、登陸Redis訪問測試# redis-cli 127.0.0.1:6379> set name zhengyansheng(error) NOAUTH Authentication required. #錯誤:提示沒有認證通過127.0.0.1:6379> auth zhengyansheng13260071987   #採用認證方式OK127.0.0.1:6379> set name zhengyanshengOK127.0.0.1:6379> get name"zhengyansheng"127.0.0.1:6379> quit


五、與Memcache的比較

memcache和redis都是記憶體型資料庫,資料儲存在記憶體中,通過tcp直接存取,memcached優勢是速度快,並發高,缺點是資料類型有限,查詢功能不強,一般用作緩衝。在我們團隊的項目中,一開始用的是memcached,後來用redis替代。

相比memcached:

1、redis具有持久化機制,可以定期將記憶體中的資料持久化到硬碟上。

2、redis具備binlog功能,可以將所有操作寫入日誌,當redis出現故障,可依照binlog進行資料恢複。

3、redis支援virtual memory,可以限定記憶體使用量大小,當資料超過閾值,則通過類似LRU的演算法把記憶體中的最不常用資料儲存到硬碟的分頁檔中。

4、redis原生支援的資料類型更多,使用的想象空間更大。

5、前面有位朋友所提及的一致性雜湊,用在redis的sharding中,一般是在負載非常高需要水平擴充時使用。我們還沒有用到這方面的功能,一般的項目,單機足夠支撐並發了。redis 3.0將推出cluster,功能更加強大



六、redis-clie的命令列參數

SET                      建立一個key;GET                      擷取一個key的值;DEL                      ***一個key;TYPE                     擷取一個key的類型;EXISTS                   判斷一個key是否存在,0:存在,1,不存在;KEYS                     擷取給定模糊比對的key;EXPIRE                   設定一個key到期的秒數;PERSTST                  ***一個key到期的秒數;PEXPIRE                  設定一個key到期的毫秒數;RENAME                   將一個key重新命名;RENAMENX                 將一個key重新命名,且新的key必須是不存在的可以;TTL                      擷取key的有效時間;


本文出自 “鄭彥生” 部落格,請務必保留此出處http://467754239.blog.51cto.com/4878013/1564581

第一天Redis安裝配置

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.