前言:
centOS版本:CentOS Linux release 7.6.1810 (Core) 64位
redis版本:
下载地址:https://download.redis.io/releases/
-
将redis安装包上传至/usr/local/tmp下
-
tar -zxvf 文件名称 解压安装包
-
cp -r redis-4.0.9 /usr/local/redis 复制文件到/usr/local/redis下
-
cd /usr/local/redis 进入到redis目录下
-
make 对解压的redis文件进行编译
- 出现下方图片中的情况,提示gcc命令未找到,这是因为redis没有安装gcc编译器没安装。使用命令yum install -y gcc g++ gcc-c++ make
- 出现下方图片中的情况,提示gcc命令未找到,这是因为redis没有安装gcc编译器没安装。使用命令yum install -y gcc g++ gcc-c++ make
-
make 再次对解压的redis文件进行编译,提示出错之后 可参考https://www.cnblogs.com/liu2-/p/6914159.html
-
make install 进入src文件夹,执行make install进行redis安装。成功界面如下
-
为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中
- mv redis.conf /usr/local/redis/etc/ 将其复制移动到 /usr/local/redis/ect 下
- cd /src
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server /usr/local/redis/bin/ 进入src目录,移动mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server到/usr/local/redis/bin/
-
redis-server 启动redis服务
-
设置后台启动redis
- cd /usr/local/redis/etc/
- vim redis.conf 首先编辑conf文件,将daemonize属性改为yes(表明需要在后台运行)
- redis-server /usr/local/redis/etc/redis.conf 再次启动redis服务,并指定启动服务配置文件
到此安装配置redis就完成了。
-
配置redis密码
-
cd /usr/local/redis/etc
-
vi redis.conf 编辑配置文件将#requirepass foobared去掉注释,foobared改为自己的密码
-
/usr/local/redis/bin/redis-cli shutdown 关闭redis
-
./redis-server /usr/local/redis/etc/redis.conf 进入bin文件夹下 重新启动redis服务,并指定启动服务配置文件
-
./redis-cli 测试连接
-
/usr/local/redis/bin/redis-cli -a 密码 shutdown 设置密码后的redis关闭方式
-
./redis-cli -h 127.0.0.1 -p 6397 -a 你的redis密码 客户端连接方式
-
开启远程连接
-
注释掉bind(注意:bind指定多个ip的话用,分割。例如bind 10.10.12.138,192.168.12.250)
-
protected-mode参数是为了禁止外网访问redis,如果启用了,则只能够本地(127.0.0.1)访问Redis,如果外网访问redis,会报出异常;解决方法分为两种:1、关闭protected-mode模式 2、配置bind或者设置密码
我这里选择的是关闭protected-mode模式
-
防火墙开启的话要添加端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent 添加redis的端口6379(–permanent永久生效,没有此参数重启后失效)
firewall-cmd --reload 重新载入
firewall-cmd --zone=public --list-ports 查看所有打开的端口 -
接下来就可以使用redis的可视化工具测试远程连接了;如果是云服务器需要开启6379端口 才可以连接
-
提示连接失败的话十有八九是redis端口号的问题,将prod修改为6397。然后进行如下操作
./redis-server /usr/local/redis/etc/redis.conf 重新启动redis服务,并指定启动服务配置文件
firewall-cmd --zone=public --add-port=6397/tcp --permanent 添加redis的端口6397(–permanent永久生效,没有此参数重启后失效)
firewall-cmd --reload 重新载入
firewall-cmd --zone=public --list-ports 查看所有打开的端口
5.1 把生成的pid文件名称也要修改一下
到此就OK了
配置 redis开机自动启动
- cd /usr/local/redis
vim etc/redis.conf 设置redis.conf中daemonize为yes,确保守护进程开启
- vim /etc/init.d/redis 编写开机自启动脚本。看清楚目录,是在 etc/init.d下新建redis文件。为什么?因为 linux开机会自动 执行这个目录中所有的文件
注意还有另外一种方法用了这个就不用自己写脚本了,里面的配置根据自己的实际情况修改:cp /usr/local/redis/utils/redis_init_script /etc/init.d/redisd!/bin/sh #chkconfig: 2345 90 10 #description: Redis is a persistent key-value database PATH=/usr/local/bin:/sbin:/usr/bin:/bin #找到本机安装redis 后,存放redis命令的目录 REDISPORT=6397 #redis的默认端口, 要和下文中的redis.conf中一致 EXEC=/usr/local/redis/bin/redis-server #redis服务端的命令 REDISCLI=/usr/local/redis/bin/redis-cli #redis客户端的命令 这两个一般都在 PATH目录下 PIDFILE=/var/run/redis_${REDISPORT}.pid #reids的进程文件生成的位置 CONF="/usr/local/redis/etc/redis.conf" #redis的配置文件所在的目录 #AUTH="1234" #这句没什么用可以不要 REDISPWD=adminCii 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 if [ "$?"="0" ] then echo "Redis is running..." fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exists, process is not running." else PID=$(cat $PIDFILE) echo "Stopping..." $REDISCLI -a $REDISPWD -p $REDISPORT shutdown sleep 1 while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown..." sleep 1 done echo "Redis stopped" fi ;; restart|force-reload) ${0} stop ${0} start ;; *) echo "Usage: /etc/init.d/redisd {start|stop|restart|force-reload}" >&2 exit 1 esac
- chmod 775 /etc/init.d/redisd 修改文件的权限为 可执行的
- /etc/init.d/redisd start 测试一下redis 的启动
- chkconfig --add redisd 添加服务
5.1 如果报下图中的错误的话
5.2 #!/bin/sh #chkconfig: 2345 80 90 添加这两行代码
- chkconfig --list 显示服务列表
- chkconfig redisd on 设置自动启动
- ./redisd start redisd脚本命令,启动
- ./redisd stop redisd脚本命令,停止
- ./redisd restart redisd脚本命令,重启
这里要说一下 /usr/lib/systemd/system 这个目录
刚开始我一直不知道 我的nginx mysql php 是怎么开机自动启动的 后来我进入了这个目录看了,才知道,原来它们都在这里,网上说这里linux centos 新的启动方式,我不怎么了解,但是我知道了,这里的 文件都是可以开机自启的服务
所以我们要想知道 本机开机都自启了什么服务 可以来这个文件夹下看一下
redis重启数据丢失解决
-
vim /etc/sysctl.conf 编辑sysctl.conf文件
-
vm.overcommit_memory=1 添加内容
-
cd /etc 进入/etc配置文件
-
sysctl -p 立即生效
-
接下来在redis中添加一条数据,然后重启redis 验证数据是否存在
这个问题只在Linux系统才存在,在Windows系统是没有问题的。
常用命令
- whereis redis 找到redis安装目录
- 查看版本信息
2.1 ./redis-server --version 进入到redis/bin文件夹下查看版本信息
2.2 ./redis-server --version 进入到redis/src文件夹下查看版本信息