一、环境
1.1 Linux 版本为 CentOS 7.7
cat /etc/redhat-release
1.2 redis版本为 5.0.8
官网: https://redis.io
二、下载
mkdir redis #创建一个目录
cd redis
wget http://download.redis.io/releases/redis-5.0.8.tar.gz #下载
tar -zxvf redis-5.0.8.tar.gz #解压
cd redis-5.0.8 #进入解压目录
make #编译
cd src
make install PREFIX=/usr/local/redis #安装的位置
cd /usr/local/redis/bin #进入到安装目录
./redis-server # redis启动成功,但是这种启动方式需要一直打开窗口,不能进行其他操作,不太方便。
mkdir /usr/local/redis/etc # 创建一个用于存放redis的配置文件的目录
cp /redis/redis-5.0.8/redis.conf /usr/local/redis/etc/ #将配置文件复制到安装路径
vi /usr/local/redis/etc/redis.conf #编辑 内容很长,ESC是进入命令模式,输入/daemonize 可以搜索,然后将 daemonize改为yes 就是设置为守护进程模式
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf #全路径启动
三、配置
3.1 下载管理客户端工具
https://github.com/qishibo/AnotherRedisDesktopManager/releases/download/v1.3.4/Another.Redis.Desktop.Manager.1.3.4.exe
3.2 链接发现报错
Redis Client On Error: Error: connect ECONNREFUSED 124.239.148.216:6379
因为Redis默认设置的是只允许本地连接,所以要设置redis.conf配置文件中的以下三个位置
bind 127.0.0.1注释掉,或者改为bind 0.0.0.0
protected-mode 改为no
requirepass "password" 设置密码
ps -ef|grep redis #查看当前进程
kill 进程ID #结束进程
./redis-server /usr/local/redis/etc/redis.conf #重新启动
3.3 设置开机启动
在下载目录的utils目录下有一个 redis_init_script文件,就是官方写好的开机启动配置文件.
将此脚本复制到/etc/init.d目录下,本例将启动脚本命名为redis
cp /redis/redis-5.0.8/utils/redis_init_script /etc/init.d/redis
主要就是这五个地方要修改一下
chkconfig redis on #设置为开机自启动服务器
service redis start #打开服务
service redis stop #关闭服务
四、持久化
appendonly yes (默认no,关闭)表示是否开启AOF持久化:
appendfilename “appendonly.aof” AOF持久化配置文件的名称:
AOF持久化策略(默认每秒):
appendfsync always (同步持久化,每次发生数据变更会被立即记录到磁盘,性能差但数据完整性比较好)
appendfsync everysec (异步操作,每秒记录,如果一秒钟内宕机,有数据丢失)
appendfsync no (将缓存回写的策略交给系统,linux 默认是30秒将缓冲区的数据回写硬盘的)
AOF的Rewrite(重写) :
定义:AOF采用文件追加的方式持久化数据,所以文件会越来越大,为了避免这种情况发生,增加了重写机制
当AOF文件的大小超过了配置所设置的阙值时,Redis就会启动AOF文件压缩,只保留可以恢复数据的最小指令集,可以使用命令bgrewriteaof
触发机制:Redis会记录上次重写时的AOF文件大小,默认配置时当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发
auto-aof-rewrite-percentage 100 (一倍)
auto-aof-rewrite-min-size 64mb
默认情况下redis安装目录会生成 appendonly.aof文件,如果没有则
执行以下两条命令:
redis-cli config set appendonly yes
redis-cli config set save “”(可选)
执行的第一条命令开启了 AOF 功能: Redis 会阻塞直到初始 AOF 文件创建完成为止, 之后 Redis 会继续处理命令请求, 并开始将写入命令追加到 AOF 文件末尾。
执行的第二条命令用于关闭 RDB 功能。 这一步是可选的, 如果你愿意的话, 也可以同时使用 RDB 和 AOF 这两种持久化功能。
持久化测试结果:
通过redis-cli SHUTDOWN这种方式停掉redis,这是一种安全的退出方式,redis会在退出的时候将内存中的数据立即生成一份完整的rdb快照。(service redis stop 实际就是调用这种方式是安全的)
通过kill -9杀死redis进程,这种方式会导致redis异常退出,从而导致内存中的数据没有到达save指定的检查点,进而丢失内存中的数据。(但是这种方式,我测试过了,不开启aof 然后rebbot 或 kill 结果数据都能保存,肯定是没有触发rdb模式的情况下,结果数据也不丢失,所以一般的使用应该是够的,没必要开启aof)
五、systemctl方式开机启动
vi /lib/systemd/system/redis.service #创建启动脚本
[Unit]
Description=redis
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
systemctl enable redis #加入开机启动
systemctl start redis #启动
systemctl restart redis #重启
systemctl stop redis #停止
systemctl status redis #查看运行状态