欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis 安装学习

程序员文章站 2022-07-15 13:56:13
...
1、安装redis

下载redis安装包 redis-3.2.4.tar.gz

创建redis目录

mkdir /usr/local/redis

cp redis-3.2.4.tar.gz /usr/local/redis  #将安装包拷贝到指定目录

tar -zxvf redis-3.2.4.tar.gz

cd redis-3.2.4

make PREFIX=/usr/local/redis install  #安装到指定目录,不指定将会默认安装到local/bin目录下用的是ubuntuOS,自带REFIX指令


安装完成后, /usr/local/redis/bin 包含以下文件
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server


2、做成redis服务
先找到 redis_init_script脚本,位于刚才的解压缩的文件 redis-3.2.4中
cd /usr/locak/redis/redis-3.2.4/utils  

复制到 /etc/init.d/ 目录下,并修改为redis
cp  redis_init_script   /etc/init.d/redis


进入刚才复制redis,脚本内容

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."

                $EXEC $CONF &

        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac


以上是修改后的文件,修改的地方有:
EXEC 和CLIEXEC,配置对应安装的地方
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli


PIDFILE 需要在对应 var/run 目录下找redis文件,如果是redis.pid,就删除_{REDISPORT},redis_6379.pid就不用修改
PIDFILE=/var/run/redis_${REDISPORT}.pid

CONF是拷贝的配置文件,找到解压包中的redis.conf,复制变更改为6379.conf
CONF="/etc/redis/${REDISPORT}.conf"


mkdir /etc/redis
cp  redis.conf  /etc/redis/6379.conf


最后 在$EXEC $CONF 添加  &  表示后台运行

接下来在网上找都是通过 chkconfig 指令进行操作,结果自己测试找不到这个指令,发现ubuntu早没有了,后面找到sysv-rc-conf可代替,sysv-rc-conf用来管理ubuntu server,这里只是简单的用了下
安装
sudo apt-get install sysv-rc-conf 


完成后,即可注册redis服务
sudo sysv-rc-conf redis on


启动服务
Service redis  start 


最后修改 /etc/profile 文件,添加

export PATH="$PATH:/usr/local/redis/bin"


3、参数配置
vi /etc/redis/6379.conf

修改权限配置,修改后客户端jedis连接时都需要提供密码
requirepass password

注释绑定ip
bind 127.0.0.1           #jedis连接需要注释


后台启动
daemonize yes           #启动方式,yes为后台启动,


主从配置,配置后主从可以进行读写分离,主节点可以进行写操作,从节点只能进行读操作
slaveof  ip  port


数据备份
bgsave #该命令在后台执行,进行持久化操作,不会影响客户端的链接  
save  #如果上述bgsave执行失败,可以使用save进行操作,但是会影响客户端的链


日志和数据保存,先创建目录
mkdir -p /opt/redis/logs  
mkdir -p /opt/redis/data


配置修改:
loglevel debug                      #日志级别:默认为notice  
logfile /opt/redis/logs/redis.log         #日志输出:默认为stdout  
dbfilename redis.rdb                 #默认为dump.rdb  
dir /opt/redis/data                   #默认为./


备份策略
save 60 1000  

含义:
如上的设置,会在60s内、如果有1000个key发生改变就进行持久化,可设置多个save选项,默认持久化到dump.rdb。
文件追加(aof):append-only-file模式。Redis会将每个接收到的“写命令”通过write函数追加到appendonly.aof文件,重启Redis时通过该文件重建整个数据库。由于os内核会缓存write函数所做的“修改”,可以使用fsync函数指定写入到磁盘的方式。
appendonly yes          #启动aof持久化方式   
appendfsync always      #对每条“写命令”立即写至磁盘  
appendfsync everysec    #默认:每秒写入一次,在性能和可靠性之间的平衡  
appendfsync no          #依赖于os,不指定写入时机
 

两种方式的比较:   
快照方式:性能较好,但是快照间隔期间,如果宕机将造成数据丢失。  
AOF模式:影响性能,不容易造成数据丢失。  
如果Redis宕机:重启Redis即可,会自动使用redis.rdb、appendonly.aof恢复数据库。主从备份:从数据安全性角度考虑。   
关闭快照功能。   
同时设置主从服务器都为AOF模式。   
说明:如果仅对Slave进行持久化设置,重启时,Slave自动和Master进行同步,全部数据丢失

4、Jedis连接问题
下载jidis,直接测试

出现 connection  refused 问题,需要关闭linux 防火墙, ubuntuOS 查看防火墙状态:
sudo ufw status

然后关闭
sudo  ufw  disable


出现DENIED Redis is running in protected mode because protected mode is enabled问题;需要将redis.conf文件中要将protected-mode yes改为no

出现NOAUTH Authentication required  问题,由于自己开始启动时没有设置密码,后面又修改添加了密码,关闭时出现问题,使用kill强制结束进程,再启动OK
相关标签: redis linux