百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

redis安装与调优部署文档(Linux)

mhr18 2024-12-03 11:47 16 浏览 0 评论

1. 安装环境准备

1.1 主机环境准备

1.1.1. 关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

1.1.2. 部署规划

软件安装路径

/usr/local/redis/

bin 二进制路径

etc 配置路径

log 日志路径

data 数据路径

run pid路径

端口规划 7369

1.1.3. 系统主机时间、时区、系统语言

l 本节视实际情况需要操作

l 修改时区

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

l 修改系统语言环境

echo 'LANG="en_US.UTF-8"' >> /etc/profile && source /etc/profile

l 配置主机NTP时间同步

yum -y install ntp
systemctl enable ntpd && systemctl start ntpd
echo 'server ntp1.aliyun.com' >> /etc/ntp.conf
echo 'server ntp2.aliyun.com' >> /etc/ntp.conf

2. Redis安装部署

2.1 Redis依赖安装及部署

l 添加用户与用户组(用户名请自行定义)

groupadd -r middle && useradd -s /sbin/nologin -r -M -g middle middle

l 下载redis-5.0.8.tar.gz安装包,并解压安装

yum -y install gcc gcc-c++ automake autoconf libtool make wget
cd /opt
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/src
make all && make install PREFIX=/usr/local/redis

l redis部署环境准备

mkdir -v /usr/local/redis/{log,data,etc,run}
touch /usr/local/redis/log/redis.log
cp /opt/redis-5.0.8/redis.conf /usr/local/redis/etc
cp mkreleasehdr.sh /usr/local/redis/bin/
chown -R middle:middle /usr/local/redis

l 将Redis的命令所在目录添加到系统参数PATH中

cat >>/etc/profile<< EOF
export PATH="\$PATH:/usr/local/redis/bin"
EOF
source /etc/profile

2.2 修改redis.conf配置

cd /usr/local/redis/etc/
sed -i "s/daemonize no/daemonize yes/g" redis.conf
sed -i "s/^bind 127.0.0.1/bind 192.168.1.100/g" redis.conf
sed -i "s/^port 6379/port 7369/g" redis.conf
sed -i "s@pidfile /var/run/redis_6379.pid@pidfile /usr/local/redis/run/redis_7369.pid@g" redis.conf
sed -i "s@logfile ""@logfile "/usr/local/redis/log/redis.log"@g" redis.conf
sed -i "s@^dir ./@dir /usr/local/redis/data@g" redis.conf
sed -i "s@^# requirepass foobared@requirepass 密码@g" redis.conf
sed -i "s@^appendonly no@appendonly yes@g" redis.conf  --根据环境要求开启AOF
l  相关参数注释如下
daemonize no    ---redis服务守护进程
bind 127.0.0.1    ---默认仅允许本机可连接,具体说明见3.2章节
port 6379  ----默认端口6379
pidfile /var/run/redis_6379.pid  ---pidfile路径与pid名称
logfile ""  ---redis的日志保存路径
dir ./     -----redis的数据文件保存路径
requirepass foobared   -----redis默认密码foobared(请配置足够复杂的密码)
appendonly no       ---在要求保证时时数据安全的环境开启AOF持久化

2.3 配置redis系统服务

2.3.1. 针对6系统添加系统服务

1、添加防火墙策略

(1)所有机器可访问

iptables -A INPUT -p tcp --dport 7369 -j ACCEPT
service iptables save

(2)特定IP192.168.142.166可访问本机7369端口

iptables -A INPUT -p tcp -s 192.168.142.166 --dport 7369 -j ACCEPT
service iptables save

2、添加redis系统服务启动脚本

vi /etc/init.d/redis
#!/bin/bash
#chkconfig: 2345 80 90
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
 
### BEGIN INIT INFO
# Provides:     redis_7369
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Redis data structure server
# Description:          Redis data structure server. See https://redis.io
### END INIT INFO
 
REDISPORT=7369
REDIS_HOME=/usr/local/redis
EXEC=$REDIS_HOME/bin/redis-server
CLIEXEC=$REDIS_HOME/bin/redis-cli
PIDFILE=$REDIS_HOME/run/redis_${REDISPORT}.pid
CONF="${REDIS_HOME}/etc/redis.conf"
case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                sudo -u middle $EXEC $CONF &
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                kill -9 $PID
                echo "Stopping ..."
                rm -rf $PIDFILE
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

2、配置Redis系统服务及自启动

chmod +x /etc/init.d/redis
chkconfig --add redis && chkconfig redis on
chkconfig --list redis

3、启动与停止redis服务

service redis start
ps -ef|grep redis
service redis stop

2.3.2. 针对7系统添加系统服务

1、添加防火墙策略

(1)所有机器可访问

firewall-cmd --permanent --zone=public --add-port=7369/tcp
firewall-cmd --reload

(2)特定IP192.168.142.166可访问本机7369端口

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port protocol="tcp" port="7369" accept"
firewall-cmd --reload

(3)特定IP段192.168.142.0/24可访问本机7369端口

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.0/24" port protocol="tcp" port="7369" accept"
firewall-cmd --reload

2、添加redis系统服务启动脚本

cat >/usr/lib/systemd/system/redis.service<<EOF
[Unit]
Description=redis-server
Requires=network-online.target
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf --daemonize no
Restart=always
RestartSec=5
User=middle
Group=middle
LimitNOFILE=65536
 
[Install]
WantedBy=multi-user.target
EOF

2、配置Redis系统服务及自启动

systemctl daemon-reload
systemctl enable redis.service

3、启动与停止redis服务

systemctl start redis
ps -ef|grep redis
systemctl stop redis

3. Redis加固

3.1 禁用或重命名危险命令

l 选择禁用还是重命名请根据实际环境操作,具体操作指令如下

l  禁用
cd /usr/local/redis/etc/
sed -i '523irename-command CONFIG ""' redis.conf
sed -i '524irename-command FLUSHALL ""' redis.conf
sed -i '525irename-command FLUSHDB ""' redis.conf
l  重命名(NAME1、NAME2、NAME3名称请自行定义)
sed -i '523irename-command CONFIG "NAME1"' redis.conf
sed -i '524irename-command FLUSHALL "NAME2"' redis.conf
sed -i '525irename-command FLUSHDB "NAME3"' redis.conf

3.2 禁止监听在公网

l 默认情况下,Redis 监听 127.0.0.1。如果仅仅是本地通信,请确保监听在本地。

bind 127.0.0.1

l 在redis.conf文件中指定访问源 IP 来访问 Redis(请根据实际环境来操作)。

bind 192.168.1.100 10.0.0.1

3.3 修改默认6379端口

l 默认情况下,Redis默认使用6379,请修改默认监听端口,如本文档使用的是7369

port 7369

3.4 账号与认证

l 设置访问密码

在 redis.conf中找到 # requirepass foobared字段,去掉#号注释,修改默认密码foobared,并要求密码符合密码复杂度要求:即密码应同时包含大小写、数字与特殊符号且长度不小于8位

requirepass www.pwd.cn12332@@#$%@!%

3.5 服务运行权限最小化

l 使用普通用户redis启动服务(详见2.1章节)

groupadd -r middle && useradd -s /sbin/nologin -r -M -g middle middle

4. Redis优化

4.1 关闭内存大页

echo never > /sys/kernel/mm/transparent_hugepage/enabled
cat >>/etc/rc.local<<EOF
echo never > /sys/kernel/mm/transparent_hugepage/enable
EOF

4.2 优化内核参数

cat >>/etc/sysctl.conf<<EOF
fs.file-max = 6815744
vm.overcommit_memory = 1
net.core.somaxconn=1024
EOF
sysctl -p

备注:如果Redis启用了AOF持久化,请在内核参数中添加如下配置

cat >>/etc/sysctl.conf<<EOF
fs.file-max = 6815744
vm.overcommit_memory = 1
net.core.somaxconn=1024
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
EOF
sysctl -p

4.3 检查数据持久化策略

Redis 5.0 默认开启持久化策略为混合持久化。如果是其他版本的 Redis 首先需要检查一下,是否已经开启了混合持久化(该项优化根据项目需要修改配置)。

aof-use-rdb-preamble yes

5. 结束

相关推荐

【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言在当今数据驱动的时代,高效、智能地管理数据已成为企业和个人不可或缺的能力。为了满足这一需求,我们推出了这款开...

Pure Storage推出统一数据管理云平台及新闪存阵列

PureStorage公司今日推出企业数据云(EnterpriseDataCloud),称其为组织在混合环境中存储、管理和使用数据方式的全面架构升级。该公司表示,EDC使组织能够在本地、云端和混...

对Java学习的10条建议(对java课程的建议)

不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...

SQLShift 重大更新:Oracle→PostgreSQL 存储过程转换功能上线!

官网:https://sqlshift.cn/6月,SQLShift迎来重大版本更新!作为国内首个支持Oracle->OceanBase存储过程智能转换的工具,SQLShift在过去一...

JDK21有没有什么稳定、简单又强势的特性?

佳未阿里云开发者2025年03月05日08:30浙江阿里妹导读这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。阅前声明:本文介绍的内容基于AJDK21.0.5[1]以及以上...

「松勤软件测试」网站总出现404 bug?总结8个原因,不信解决不了

在进行网站测试的时候,有没有碰到过网站崩溃,打不开,出现404错误等各种现象,如果你碰到了,那么恭喜你,你的网站出问题了,是什么原因导致网站出问题呢,根据松勤软件测试的总结如下:01数据库中的表空间不...

Java面试题及答案最全总结(2025版)

大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...

数据库日常运维工作内容(数据库日常运维 工作内容)

#数据库日常运维工作包括哪些内容?#数据库日常运维工作是一个涵盖多个层面的综合性任务,以下是详细的分类和内容说明:一、数据库运维核心工作监控与告警性能监控:实时监控CPU、内存、I/O、连接数、锁等待...

分布式之系统底层原理(上)(底层分布式技术)

作者:allanpan,腾讯IEG高级后台工程师导言分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务...

oracle 死锁了怎么办?kill 进程 直接上干货

1、查看死锁是否存在selectusername,lockwait,status,machine,programfromv$sessionwheresidin(selectsession...

SpringBoot 各种分页查询方式详解(全网最全)

一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...

《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略

《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...

LoadRunner(loadrunner录制不到脚本)

一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...

Redis数据类型介绍(redis 数据类型)

介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...

RMAN备份监控及优化总结(rman备份原理)

今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...

取消回复欢迎 发表评论: