Redis-3.0.7主从简单复制的配置

#  wget http://download.redis.io/releases/redis-3.0.7.tar.gz

#  tar xf redis-3.0.7.tar.gz

#  cd redis-3.0.7

#  make 

#  make install 


假设我有两台机器:

master: 192.168.1.1

slave:  192.168.1.2


1, redis配置文件常用选项说明

daemonize no 

说明:是否把redis-server启动在后台,默认是“否”。若改成yes,会生成一个pid文件。


pidfile /var/run/redis.pid

说明:redis-server的pid文件。


port 6379

说明:redis-server的端口号


dbfilename dump.rdb

说明:数据库文件的位置,最好添加绝对路径,若不添加时在启动用户的home目录下。


dir ./(此处填写dump.rdb更改后绝对路径,如果两个主机上分别用相同的目录,那么两个主机数据就会完全同步)


slaveof 

说明:设置主从服务器的主服务器的地址和端口。例如:slaveof 192.168.1.1 6379


loglevel verbose

说明:日志级别,有四种,debug,verbose,notice,warning。


logfile stdout

说明:日志的输出文件,默认是标准输出。例如:logfile /tmp/redis.log

 

2, 主从的安装和配置

2.1 基本环境

假设我有两台机器:

master: 192.168.1.1

slave:  192.168.1.2


>cd redis-2.4.13

>make

>make install


2.2 安装主服务器

vim redis.conf

根据自己的需要修改一些参数

.修改磁盘上保存数据库文件的位置:

dbfilename  /redisdb/dump.rdb

.修改日志级别

#如果只要输出少量日志的话,可以用waring

loglevel warning

.修改日志文件的位置

logfile /tmp/redis.log

 

2.3 安装和配置从机

cp redis.conf /etc/redis_slave.conf

vim redis_slave.conf

修改其中的一行

配置master的ip地址和redis-server的端口。

slaveof 192.168.1.1 6379


3, 启动和测试

主机: redis-server /etc/redis.conf

从机: redis-server /etc/redis_slave.conf

3.1 测试

在主机上启动redis客户端:

ssh 192.168.1.1

redis-cli

>set k1 v1

>get k1

"v1"

.登陆从机,并在从机上启动客户端:

ssh 192.168.1.2

redis-cli

>get k1

"v1"

可以看到redis已经把数据同步过来了。



Redis 常用命令之服务器相关命令


redis-cli -h 192.168.12.12    远程登录redis客户端

redis 127.0.0.1:6379> ping   测试连接是否存活  

PONG

redis 127.0.0.1:6379> echo wilian 在命令行打印一些内容

"wilian"

redis 127.0.0.1:6379> select 1 选择数据库。Redis数据库编号从0~15,我们可以选择任意一个数据库来进行数据的存取

OK

redis 127.0.0.1:6379[1]> dbsize  返回当前数据库中key的数目。

(integer) 0

redis 127.0.0.1:6379[1]> select 0

OK

redis 127.0.0.1:6379> dbsize

(integer) 20

redis 127.0.0.1:6379> info 获取服务器的信息和统计

redis_version:2.4.5


redis 127.0.0.1:6379> monitor 实时转储收到的请求。

OK

1340780669.110663 "monitor"

 

redis 127.0.0.1:6379> config get dir 获取服务器配置信息

1) "dir"

2) "D:\\mysoft\\redis-2.0.2"

 

flushdb 删除当前选择数据库中的所有key

flushall  删除所有数据库中的所有key



redis密码设置、访问权限控制等安全设置


1.比较安全的办法是采用绑定IP的方式来进行控制。


bind 127.0.0.1


2.设置密码,以提供远程登陆


redis.conf

找到

requirepass

写上

requirepass yourpassword

设置密码以后发现可以登陆,但是无法执行命令了。


src/redis-cli -h 192.168.1.121

auth 123456


登陆带密码方式

./redis-cli -h 192.168.1.121 -a abcd


由于redis并发能力极强,仅仅搞密码,***者可能在短期内发送大量猜密码的请求,很容易暴力破解,所以建议密码越长越好,比如20位。(密码在 conf文件里是明文,所以不用担心自己会忘记)



Redis的启动停止

Redis安装配置完成后,启动过程非常简单,执行命令/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf即可。停止Redis的最简单的方法是在启动实例的session中,直接使用Control-C命令。当然还可以通过客户端来停止服务,如可以用shutdown来停止Redis实例,具体命令为src/redis-cli shutdown。


下面是一个Shell脚本(供参考),用于管理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:      /usr/local/redis-2.4.X/bin/redis-server  

# config:      /usr/local/ /redis-2.4.X/etc/redis.conf  

# 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/webserver/redis-2.4.X/bin/redis-server" 

prog=$(basename $redis)  

REDIS_CONF_FILE="/usr/local/webserver/redis-2.4.X/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=$?  

    echo  

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

    return $retval  

}  

restart() {  

    stop  

    start  

}  

reload() {  

    echo -n $"Reloading $prog: "  

    killproc $redis -HUP  

    RETVAL=$?  

    echo  

}  

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  

        $1  

        ;;  

    restart|configtest)  

        $1  

        ;;  

    reload)  

        rh_status_q || exit 7  

        $1  

        ;;  

    force-reload)  

        force_reload  

        ;;  

    status)  

        rh_status  

        ;;  

    condrestart|try-restart)  

        rh_status_q || exit 0  

    ;;  

    *)  

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

        exit 2  

esac