CentOS7 安装 Redis 6.0.10
1、安装Redis6.0.10需要高版本gcc,所以先临时升级gcc
yum -y install centos-release-scl yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils #临时将gcc设置为高版本,会话结束就变回低版本gcc scl enable devtoolset-9 bash
2、安装Redis6.0.10
tar zxvf redis-6.0.10.tar.gz mv redis-6.0.10 redis cd redis make make install
3、修改配置文件
vi /usr/local/redis/redis.conf #主要修改的内容 port 18890 #端口 daemonize yes #后台运行 bind 0.0.0.0 #任何IP都可访问 pidfile /var/run/redis.pid #pid文件位置,和启动脚本保持一至就行 save "" #关闭持久化
dbfilename "" #关闭持久化
protected-mode no #关闭保护模式 新版有此项配置
4、启动脚本
注意脚本中的端口号、PID位置等
vi /etc/rc.d/init.d/redis
#!/bin/sh # # Simple Redis init.d script conceived to work on Linux systems # as it does use of the /proc filesystem. source /etc/init.d/functions REDISPORT=18890 EXEC=/usr/local/redis/src/redis-server CLIEXEC=/usr/local/redis/src/redis-cli PIDFILE=/var/run/redis.pid CONF=/usr/local/redis/redis.conf BIND_IP='0.0.0.0' 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 exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -h $BIND_IP -p $REDISPORT SHUTDOWN sleep 1 while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi } restart(){ stop start } status(){ ps -ef|grep redis-server|grep -v grep >/dev/null 2>&1 if [ $? -eq 0 ];then echo "redis server is running" else echo "redis server is stopped" fi } case "$1" in start) start ;; stop) stop ;; restart) restart ;; status) status ;; *) echo "Usage: redis-server {start|stop|status|start}" >&2 exit 1 esac
脚本加权限
chmod +x /etc/rc.d/init.d/redis
启动
service redis start
持久化说明:
1、RDB 方式
#只要满足以下条件中的一个,BGSAVE命令就会被执行 #服务器在 900 秒之内,对数据库进行了至少 1 次修改了 #服务器在 300 秒之内,对数据库进行了至少 10 次修改 #服务器在 60 秒之内,对数据库进行了至少 10000 次修改
#如果不想RDB持久化就写 save ""
#如果不想RDB持久化就写 dbfilename ""
save 900 1 save 300 10 save 60 10000 #bgsave发生错误时是否停止写入,一般为yes stop-writes-on-bgsave-error yes #持久化时是否使用LZF压缩字符串对象? rdbcompression yes #是否对rdb文件进行校验和检验,通常为yes rdbchecksum yes # RDB持久化文件名 dbfilename dump.rdb #持久化文件存储目录 dir ./
2、AOF方式
#开启AOF持久化方式 appendonly yes #AOF持久化文件名 appendfilename "appendonly.aof" #每秒把缓冲区的数据fsync到磁盘 appendfsync everysec # appendfsync no #是否在执行重写时不同步数据到AOF文件 no-appendfsync-on-rewrite no # 触发AOF文件执行重写的增长率 auto-aof-rewrite-percentage 100 #触发AOF文件执行重写的最小size auto-aof-rewrite-min-size 64mb #redis在恢复时,会忽略最后一条可能存在问题的指令 aof-load-truncated yes #是否打开混合开关 aof-use-rdb-preamble yes
- 如果只是需要保证数据的完整性,保护数据不会丢失,那么优先使用 AOF 方式。
- 如果是处理大规模的数据恢复,追求更高更快的效率的话,优先使用 RDB 方式。