redis主从

时间:2022-05-11
本文章向大家介绍redis主从,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

主机名

ip

node01(主)

192.168.6.71

node02(从)

192.168.6.72

  • 分别在两台机器上面安装redis
wget https://codeload.github.com/antirez/redis/tar.gz/2.8.21
  mv 2.8.21  redis-2.8.21.tar.gz
  rsync -av redis-2.8.21.tar.gz node02:/root/
  tar xf redis-2.8.21.tar.gz -C  /usr/local/src/
  cd /usr/local/src/
  cd redis-2.8.21/
  make
  make PREFIX=/usr/local/redis   install
 useradd -s /sbin/nologin redis
 mkdir /usr/local/redis/etc/
  mkdir /usr/local/redis/var/
  vim /etc/init.d/redis
#!/bin/sh
#
# redis        init file for starting up the redis daemon
#
# chkconfig:   - 20 80
# description: Starts and stops the redis daemon.
# Source function library.
. /etc/rc.d/init.d/functions
name="redis-server"
basedir="/usr/local/redis"
exec="$basedir/bin/$name"
pidfile="$basedir/var/redis.pid"
REDIS_CONFIG="$basedir/etc/redis.conf"
[ -e /etc/sysconfig/redis ] && . /etc/sysconfig/redis
lockfile=/var/lock/subsys/redis
start() {
    [ -f $REDIS_CONFIG ] || exit 6
    [ -x $exec ] || exit 5
  echo -n $"Starting $name: "
    daemon --user ${REDIS_USER-redis} "$exec $REDIS_CONFIG"
  retval=$?
  echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
stop() {
  echo -n $"Stopping $name: "
    killproc -p $pidfile $name
  retval=$?
  echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
restart() {
  stop
  start
}
reload() {
  false
}
rh_status() {
    status -p $pidfile $name
}
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)
  $1
        ;;
    reload)
        rh_status_q || exit 7
  $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
  restart
        ;;
    *)
  echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}"
  exit 2
esac
exit $?
  chmod 755 /etc/init.d/redis
  chmod 777 /usr/local/redis/var
  service redis start
  vim /etc/profile
  export PATH=/usr/local/redis/bin/:$PATH
  vim  /usr/local/redis/etc/redis.conf
daemonize yes
pidfile /usr/local/redis/var/redis.pid
port 6379
timeout 300
loglevel debug
logfile /usr/local/redis/var/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /usr/local/redis/var/
appendonly no
appendfsync always
  启动redis
  ps aux | grep redis
redis      4435 0.0  0.7 137376 7472 ?        Ssl  13:45   0:00 /usr/local/redis/bin/redis-server *:6379                         
root       4440 0.0  0.0 103304 892 pts/0    S+ 13:45   0:00 grep redis  
  • 主从配置

主[root@node01]# vim /usr/local/redis/etc/redis.confdaemonize yespidfile /usr/local/redis/var/redis.pidport 6379timeout 300loglevel debuglogfile /usr/local/redis/var/redis.logdatabases 16save 900 1save 300 10save 60 10000rdbcompression yesdbfilename dump.rdbdir /usr/local/redis/var/appendonly noappendfsync alwaysrequirepass alex从[root@node02 ~]# vim /usr/local/redis/etc/redis.confdaemonize yespidfile /usr/local/redis/var/redis.pidport 6379timeout 300loglevel debuglogfile /usr/local/redis/var/redis.logdatabases 16save 900 1save 300 10save 60 10000rdbcompression yesdbfilename dump.rdbdir /usr/local/redis/var/appendonly noappendfsync alwaysslaveof 192.168.6.71 6379masterauth alex

  • 重启服务 [root@node01 ~]# service redis restart[root@node02 ~]# service redis restart
  • 查看日志 [root@node01]# tailf /usr/local/redis/var/redis.log[4507] 19 Jun 13:58:55.688 - Accepted 192.168.6.72:45249[4507] 19 Jun 13:58:55.689 * Slave 192.168.6.72:6379 asks for synchronization[4507] 19 Jun 13:58:55.689 * Full resync requested by slave 192.168.6.72:6379[4507] 19 Jun 13:58:55.690 * Starting BGSAVE for SYNC with target: disk[4507] 19 Jun 13:58:55.690 * Background saving started by pid 4512[4512] 19 Jun 13:58:55.702 * DB saved on disk[4512] 19 Jun 13:58:55.702 * RDB: 6 MB of memory used by copy-on-write[4507] 19 Jun 13:58:55.747 * Background saving terminated with success
  • 测试数据 [root@node01 redis]# redis-cli -a alex127.0.0.1:6379> keys *(empty list or set)127.0.0.1:6379> set key1 alexOK127.0.0.1:6379> get key1"alex"127.0.0.1:6379> sadd set1 123(integer) 1127.0.0.1:6379> sadd set1 222(integer) 1127.0.0.1:6379> sad set1 333(error) ERR unknown command 'sad'127.0.0.1:6379> sadd set1 333(integer) 1127.0.0.1:6379> keys *1) "key1"2) "set1"[root@node02 ~]# redis-cli -a alex127.0.0.1:6379> keys *1) "key1"2) "set1"127.0.0.1:6379> SMEMBERS set11) "123"2) "222"3) "333"127.0.0.1:6379> get key1"alex"
    • 成功了