一、下载并安装
1、官网下载Redis 并安装
Download | RedisRedisYou can download the last Redis source files here. For additional options, see the Redis downloads section below.Stable (7.2)Redis 7.2 …
https://redis.io/download/
2、上传下载好的redis压缩包到 /usr/local
3、解压
tar -xzvf redis-7.2.0.tar.gz
并将解压文件重命名为 redis
mv redis-7.2.0 redis
4、安装所需gcc环境
yum install gcc gcc-c++ automake autoconf libtool libstdc++-devel make -y
5、切换路径
cd redis
6、安装
make && make PREFIX=/usr/local/redis/ install
7、安装完毕
二、Rocky9 (centos)设置开机自启(7、8版本也支持)
1、修改配置文件 vim /usr/local/redis/redis.conf ,调整内容:
# 是否后台启动
daemonize yes
# 设置redis密码,默认本机访问的话,可以是被注释的,不需要密码
requirepass 123456
# (可选1)redis的 rdb位置,一般是在独立磁盘中
dir /data/redis/data
# (可选2)redis的日志,一般是在独立磁盘中
logfile /usr/local/redis/logs.log
2、如果需要其他机器访问
1)调整 redis.conf
# 其他机器访问
bind 0.0.0.0
#(可选1)部分机器重启自启失败,则调整
protected-mode no
2)开放防火墙
# 开放防火墙
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
# 关闭防火墙
firewall-cmd --zone=public --remove-port=6379/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
RHEL 9 中默认没有安装 chkconfig,所以通过service来注册成服务
3、新建:redis.service 文件,并上传至 /etc/systemd/system 目录下
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
ExecReload=/usr/local/redis/bin/redis-server restart
ExecStop=/usr/local/redis/bin/redis-server stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
4、加载启动脚本并设置开机自启动:启动并设置开机自启动
#授权
chmod 777 /usr/local/redis/bin/redis-server
#刷新服务
systemctl daemon-reload
#启动服务
systemctl start redis.service
#设置开机自启动
systemctl enable redis.service
3、查看redis状态
#查看状态
systemctl status redis.service
#其他命令
#停止
systemctl stop redis.service
#重启
systemctl restart redis.service
三、redis性能优化
redis 特殊场景:大量查询,且仅供查询缓存服务,数据可以完全丢失的调整
1)多线程 redis6+
#增大线程数,最大cpu核心线程数 3/4
io-threads 4
#启用读数据多线程
io-threads-do-reads yes
2)主服务 save rdb 只保存1个:
# 1小时有1个值变化,则生成rbd
save 3600 1
注:仅适用于不重要的查询服务,因为一旦主宕机,就有可能全部数据丢失;搭建redis 主从,从的save rdb不能关闭,关闭后性能反而降低;
3)启用lazyfree,降低key大量失效占用的资源
#是否异步驱逐key(建议关闭,避免内存未及时释放)
lazyfree-lazy-eviction no
#是否异步进行key过期事件的处理(建议开启)
lazyfree-lazy-expire yes
#del命令是否异步执行删除操作(建议开启)
lazyfree-lazy-server-del yes
#全同步的时候,是否异步flush本地db(建议关闭)
replica-lazy-flush no
四:调优系统
Rocky(Centos)数据库等高并发或高io应用,linux应调优系统-CSDN博客文章浏览阅读131次。默认的最大打开文件数是1024.不满足生产环境的要求。https://blog.csdn.net/qq_26408545/article/details/137542338注:ipv4系统参数可以不加,因为数据包很小
五、redis 主从优化事项
一:适用于与rdb文件过大,从库数量较多
1.无磁盘化,延时初始化同步
配置 repl-diskless-sync和repl-diskless-sync-delay参数。
repl-diskless-sync:该参数保证进行无磁盘化复制。
repl-diskless-sync-delay:该参数表示等待一定时长再开始复制,这样可以等待多个slave节点从新连接上来。
2.redis 增大rdb 复制的文件大小
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
二:lazyfree剩余2个参数(默认即可)
#用户删除是否异步
lazyfree-lazy-user-del no
#用户flush db 是否异步
lazyfree-lazy-user-flush no
三:解决异步复制和脑裂导致的数据丢失(从库超多或集群需考虑)
min-slaves-to-write 1
min-slaves-max-lag 10
六、根据适合的并发选择合适的机器
性能测试报告
查看了下阿里 Redis 的性能测试报告如下,能够达到数十万、百万级别的 QPS(暂时忽略阿里对 Redis 所做的优化),我们从 Redis 的设计和实现来分析一下 Redis 是怎么做的。
七、centos8-设置开机自启动(或rocky8-,目前不推荐使用)
在设置之前,做一些自己的修改,以使redis更好的符合我们的生产环境
1、进入redis目录下的ustils
cd /usr/local/redis/utils/
2、拷贝
cp redis_init_script /etc/init.d/
3、回到redis目录。并新建文件夹
cd /usr/local/redis
4、vim redis.conf 修改配置文件如下
#是否后台启动
daemonize yes
#写明redis的工作空间,一般是在独立磁盘中
dir /data/redis/data
#如果想要外部能访问redis,则改成 本机ip + 空格,这样局域网内的机器都可访问
bind 本机ip 127.0.0.1
#设置redis密码,默认本机访问的话,可以是被注释的,不需要密码
requirepass 123456
#在云服务器上的密码记得设置的复杂些,这里是本地虚拟机所以无关紧要。
至此核心配置文件就修改完毕了,可以根据自己实际需求修改
5、进入/etc/init.d/,修改一开始复制的启动脚本redis_init_script 。
cd /etc/init.d/
vim redis_init_script
(这里修改了CONF="/usr/local/redis/redis.conf",指定我们的配置文件的位置。其他像端口之类的保持默认即可)
6、赋予脚本可执行文件
chmod 777 redis_init_script
7、启动脚本
./redis_init_script start
成功启动,如图:
ps -ef|grep redis
#或者
netstat -ntlp | grep 6379
9、注册到开机自启动服务中
chkconfig redis_init_script on
10、测试
输入reboot,重启centOs7。
ps -ef | grep redis
重启成功后,重新连接,输入 开机自启动成功!