天天看點

redis安裝,+主從安裝

redis作為nosql資料庫的一種應用,響應速度和命中率上還是比較高效的。項目中需要用集中式可橫向擴充的緩存架構,做了一點調研,即便redis、memcached存在效率上的差異(具體比較參考http://timyang.net/data/mcdb-tt-redis/),但其實都能滿足目前項目的需求;但是redis還是比較風騷的,支援連結清單和集合操作,支援正規表達式查找key,目前項目緩存的結果大多是連結清單,如果連結清單新增或者修改資料的話,redis就展現出了極大的優勢(memcached隻能重新加載連結清單,redis可以對連結清單新增或者修改)

1:下載下傳redis

cd /opt/

wget http://redis.googlecode.com/files/redis-2.4.14.tar.gz

2:安裝redis

下載下傳後解壓到任意目錄,例如本文我放到/opt/下

tar zxvf redis-2.4.14.tar.gz

cd redis-2.4.14

make

make install

3:拷貝檔案

cp redis.conf /etc/

cd src/

cp redis-benchmark redis-cli redis-check-dump redis-server /usr/local/bin/

設定redis程序為背景守護程序:

sed -i "s/daemonize no/daemonize yes/g" /etc/redis.conf

4:啟動redis

redis-server /etc/redis.conf

5:測試redis

#redis-cli 

redis 127.0.0.1:6379> set name bin

ok

redis 127.0.0.1:6379> get name

"bin"

redis 127.0.0.1:6379> exit

6:關閉redis服務

redis-cli shutdown 

redis服務關閉後,緩存資料會自動dump到硬碟上,硬碟位址為redis.conf中的配置項dbfilename   dump.rdb所設定

強制備份資料到磁盤,使用如下指令

redis-cli save 或者 redis-cli -p 6380 save(指定端口)

7:設定記憶體配置設定政策(可選,根據伺服器的實際情況進行設定)

/proc/sys/vm/overcommit_memory

可選值:0、1、2

0, 表示核心将檢查是否有足夠的可用記憶體供應用程序使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,并把錯誤傳回給應用程序。

1, 表示核心允許配置設定所有的實體記憶體,而不管目前的記憶體狀态如何。

2, 表示核心允許配置設定超過所有實體記憶體和交換空間總和的記憶體

vi /etc/sysctl.conf

vm.overcommit_memory = 1

然後應用生效:

sysctl –p

8:建立redis啟動腳本:

vim /etc/init.d/redis

#!/bin/sh

#

# redis - this script starts and stops the redis-server daemon

# chkconfig:   - 85 15

# description:  redis is a persistent key-value database

# processname: redis-server

# config:      /etc/redis.conf

# config:      /etc/sysconfig/redis

# pidfile:     /var/run/redis.pid

# source function library.

. /etc/rc.d/init.d/functions

# source networking configuration.

. /etc/sysconfig/network

# check that networking is up.

[ "$networking" = "no" ] && exit 0

redis="/usr/local/bin/redis-server"

prog=$(basename $redis)

redis_conf_file="/etc/redis.conf"

[ -f /etc/sysconfig/redis ] && . /etc/sysconfig/redis

lockfile=/var/lock/subsys/redis

start() {

    [ -x $redis ] || exit 5

    [ -f $redis_conf_file ] || exit 6

    echo -n $"starting $prog: "

    daemon $redis $redis_conf_file

    retval=$?

    echo

    [ $retval -eq 0 ] && touch $lockfile

    return $retval

}

stop() {

    echo -n $"stopping $prog: "

    killproc $prog -quit

    [ $retval -eq 0 ] && rm -f $lockfile

restart() {

    stop

    start

reload() {

    echo -n $"reloading $prog: "

    killproc $redis -hup

force_reload() {

    restart

rh_status() {

    status $prog

rh_status_q() {

    rh_status >/dev/null 2>&1

case "$1" in

    start)

        rh_status_q && exit 0

        $1

        ;;

    stop)

        rh_status_q || exit 0

    restart|configtest)

    reload)

        rh_status_q || exit 7

    force-reload)

        force_reload

    status)

        rh_status

    condrestart|try-restart)

     ;;

    *)

        echo $"usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"

        exit 2

esac

然後增加服務并開機自啟動:

chmod 755 /etc/init.d/redis

chkconfig --add redis

chkconfig --level 345 redis on

chkconfig --list redis

redis主從配置相當簡單,一些文章啰裡羅嗦的寫了一大篇,其實就兩句話:

打開從機的redis.conf

port 6381 (注:不能跟主機的一樣)

sleverof 192.168.109.149 6383 (注:ip為主機ip,6383為主機redis端口号)

先重新開機主機,再重新開機從機

繼續閱讀