做运维需要了解哪些Redis数据库知识?Redis部署

    /    2018-11-21

1. 典型安装-单实例

系统环境说明

[root@Redis ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[root@Redis ~]# uname -r 
2.6.32-696.el6.x86_64
[root@Redis ~]# sestatus 
SELinux status:                 disabled
[root@Redis ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@Redis ~]# hostname -I 
10.0.0.186 172.16.1.186

安装redis

[root@Redis ~]# cd /usr/local/
[root@Redis local]# wget http://download.redis.io/releases/redis-3.2.10.tar.gz
[root@Redis local]# tar xzf redis-3.2.10.tar.gz
[root@Redis local]# \rm redis-3.2.10.tar.gz 
[root@Redis local]# mv redis-3.2.10 redis
[root@Redis local]# cd redis/
[root@Redis redis]# make

至此redis就安装完成。

2. 启动第一个redis实例

创建客户端软连接

[root@Redis src]# ln -s /usr/local/redis/src/redis-cli /usr/bin/

简单启动方法,都使用默认配置

[root@Redis ~]# cd /usr/local/redis/src
[root@Redis src]# ./redis-server &

编写配置文件

1)精简化配置文件

[root@Redis redis]# cp redis.conf{,.bak}
[root@Redis redis]# grep -Ev '^$|#' redis.conf.bak > redis.conf
[root@Redis redis]# cp redis.conf /etc/

2)编辑配置文件

[root@Redis ~]# cat /etc/redis.conf 
bind 127.0.0.1 10.0.0.186
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/var/log/redis_6379.log"
dir /usr/local/redis/data/
# ···

3)编写启动脚本(适用于CentOS 6.X)

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
# chkconfig: - 85 15
# url: http://blog.oldboyedu.com
# user: oldboy 
### END INIT INFO

REDISPORT=6379
EXEC=/usr/local/redis/src/redis-server
CLIEXEC=/usr/local/redis/src/redis-cli
PIDFILE=/var/run/redis_6379.pid
CONF="/etc/redis.conf"
# source function library
. /etc/rc.d/init.d/functions
rd_start() {
    if [ -f $PIDFILE ]
    then
            action "$PIDFILE exists" /bin/false
    else
        $EXEC $CONF
        if [ $? -eq 0 ]
          then
                action "Starting Redis server..." /bin/true
        else
            action "Starting Redis server..." /bin/false
        fi
    fi
}
rd_stop() {
    if [ ! -f $PIDFILE ]
    then
            action  "$PIDFILE does not exist, process is not running" /bin/false
    else
            PID=$(cat $PIDFILE)
            $CLIEXEC -p $REDISPORT shutdown
            while [ -x /proc/${PID} ]
            do
                echo "Waiting for Redis to shutdown ..."
                sleep 1
            done
            action "Redis stopped" /bin/true
    fi
}
rd_status() {
    if [ -f $PIDFILE ]
    then
            echo "redis server is running....."
    else
            echo "redis is stopped"
    fi
}
rd_restart() {
    rd_stop
    sleep 2 
    rd_start
}
case "$1" in
    start)
    rd_start
        ;;
    stop)
    rd_stop
        ;;
    status)
    rd_status
    ;;
    restart)
    rd_restart
        ;;
    *)
    echo $"Usage: $0 {start|stop|restart|status}"
        ;;
esac

注意:自编写脚本注意执行权限。

3. Redis多实例配置

注意:本次多实例配置基于单实例配置完成后

创建并进入程序目录

[root@Redis redis]# mkdir /application/redis  -p
[root@Redis redis]# cd /application/redis/

修改配置文件

for i in 0 1 2
  do  
    # 创建多实例(端口命名)目录
    mkdir -p 638$i
    # 复制启动程序到各实例
    \cp /usr/local/redis/src/redis-server /application/redis/638$i/ 
    # 复制配置文件。注意:此处基于单实例配置完成
    \cp /etc/redis.conf  /application/redis/638$i/
    # 修改程序存储目录
    sed -i  "/dir/s#.*#dir /application/redis/638$i/#g" /application/redis/638$i/redis.conf 
    # 修改其他端口信息
    sed -i  "s#6379#638$i#g" /application/redis/638$i/redis.conf
    # 允许远程连接redis
    sed -i '/protected-mode/s#yes#no#g' /application/redis/638$i/redis.conf
done

# 启动实例

for i in 0 1 2 
  do
  /application/redis/638$i/redis-server /application/redis/638$i/redis.conf 
done

连接redis

[root@Redis redis]# redis-cli -h 10.0.0.186 -p 6379
10.0.0.186:6379>

4. redis.conf配置说明

是否后台运行:

daemonize no/yes

默认端口:

port 6379

AOF日志开关是否打开:

appendonly no/yes

日志文件位置:

logfile /var/log/redis.log

RDB持久化数据文件:

dbfilename dump.rdb

指定IP进行监听:

bind 10.0.0.51 ip2 ip3 ip4

禁止protected-mode:

protected-mode yes/no (保护模式,是否只允许本地访问)

增加requirepass {password}

requirepass root

在redis-cli中使用

auth {password} 进行认证

5. 在线变更配置

获取当前配置

CONFIG GET *

变更运行配置

CONFIG SET loglevel "notice"

修改密码为空

10.0.0.186:6379> config set requirepass ""
10.0.0.186:6379> exit
10.0.0.186:6379> config get dir
1) "dir"
2) "/usr/local/redis/data"

(8)

分享至