Redis 单节点安装
https://redis.io/download 选择5.0.10版本
mkdir -p /data/soft #下载⽬录 mkdir -p /opt/redis_6379/{conf,logs,pid} #安装⽬录,⽇志⽬录,pid⽬录,配置⽬录 mkdir -p /data/redis_6379/ #数据⽬录
编译安装解释 ./config 指定编译参数 make 按照要求编译生成可执行程序 make install 把生成的可执行文件复制到/usr/local/bin/下 1.直接下载 cd /data/soft/ wget http://download.redis.io/releases/redis-5.0.7.tar.gz 2.上传rz cd /data/soft/ redis-5.0.7.tar.gz 3.解压到/opt/ 目录下 tar zxf redis-5.0.7.tar.gz -C /opt/ 4.做个软链接 ln -s /opt/redis-5.0.7 /opt/redis 5.安装依赖 yum install gcc make -y 6.进入redis 目录,编译 cd /opt/redis make && make install 如果安装make 时报错,执行 make MALLOC=libc
1.创建数据和日志目录 mkdir -p /opt/redis_6379/{conf,logs,pid} mkdir -p /data/redis_6379 2.编写配置文档 cat >/opt/redis_6379/conf/redis_6379.conf<<EOF daemonize yes bind 127.0.0.1 10.0.0.51 port 6379 pidfile /opt/redis_6379/pid/redis_6379.pid logfile /opt/redis_6379/logs/redis_6379.log EOF
redis-server /opt/redis_6379/conf/redis_6379.conf 为什么不用将redis写入环境变量中,因为PATH 本身就是/usr/local/bin 下,因为make install 将生成的可执行文件复制到/usr/local/bin/下 [root@db01 /opt/redis_6379/logs23:15:19]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/mysql/bin:/root/bin
ps -ef|grep redis netstat -lntup|grep 6379
[root@db01 ~]# redis-cli 127.0.0.1:6379> set k1 v1 #设置K1 values 为v1 OK 127.0.0.1:6379> get k1 #查k1 的values "v1" 可以显示以上说明redis 连接上,而且正常
方法一: 在redis 中输入shutdown 再输入exit 或者ctrl +c [root@db01 ~]# redis-cli 127.0.0.1:6379> SHUTDOWN 方法二: 在虚拟机机输入 redis-cli shutdown [root@db01 ~]# redis-cli shutdown 方法三: kill redis pkill redis
1.先关闭redis redis-cli shutdown 2.创建redis虚拟用户和授权 groupadd redis -g 2000 useradd redis -u 2000 -g 2000 -M -s /bin/nologin chown -R redis.redis /opt/redis* chown -R redis.redis /data/redis* 3. 编写配置档 cat >/usr/lib/systemd/system/redis.service<<EOF [Unit] Description=Redis persistent key-value database After=network.target After=network-online.target Wants=network-online.target [Service] ExecStart=/usr/local/bin/redis-server /opt/redis_6379/conf/redis_6379.conf --supervised systemd ExecStop=/usr/local/bin/redis-cli shutdown Type=notify User=redis Group=redis RuntimeDirectory=redis RuntimeDirectoryMode=0755 [Install] WantedBy=multi-user.target EOF 4.执行启动命令 systemctl daemon-reload 每次redis 断开后需要重行执行命令,systemctl start redis 才可以执行,要不然报错 systemctl start redis
用systemctl start redis 后redis 日志会错以下四个警告错误 1. maximum open files过低 17068:M 23 Jun 2020 10:23:55.707 # You requested maxclients of 10000 requiring at least 10032 max file descriptors. 17068:M 23 Jun 2020 10:23:55.707 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted. 17068:M 23 Jun 2020 10:23:55.707 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n' 解决方法: systemd启动⽂件添加参数 vim /usr/lib/systemd/system/redis.service [Service] .............. LimitNOFILE=65536 [root@db01 /data/soft22:55:03]# cat /usr/lib/systemd/system/redis.service [Service] ExecStart=/usr/local/bin/redis-server /opt/redis_6379/conf/redis_6379.conf --supervised systemd ExecStop=/usr/local/bin/redis-cli shutdown Type=notify User=redis Group=redis RuntimeDirectory=redis RuntimeDirectoryMode=0755 LimitNOFILE=65536 ***** 2.WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 解决方法: 执行以下命令 echo "511" > /proc/sys/net/core/somaxconn 3.overcommit_memory设置 虚拟内存相关 WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. 解决方法: sysctl vm.overcommit_memory=1 4.关闭THP⼤内存⻚ WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled. 解决方法: 临时解决: 虚拟机重起后就没有了 echo never > /sys/kernel/mm/transparent_hugepage/enabled 永久解决: 写入开机启动文件中 vim /etc/rc.d/rc.local echo never > /sys/kernel/mm/transparent_hugepage/enabled 赋予开机启动文件运行权限 chmod +x /etc/rc.d/rc.local
1.daemonize yes # daemonize no 默认情况下, redis 不是在后台运⾏的,如果需要在后台运⾏,把该项的值更改为 yes 2.bind 127.0.0.1 10.0.0.51 # 指定 redis 只接收来⾃于该 IP 地址的请求,如果不进⾏设置,那么将处理所有请求 3.port 6379 # 指定redis运⾏的端⼝,默认是 6379 4.pidfile /opt/redis_6379/pid/redis_6379.pid # 当redis在后台运⾏的时候, Redis默认会把pid⽂件放在 /var/run/redis.pid ,你可以配置到其他地址。 # 当运⾏多个redis服务时,需要指定不同的 pid ⽂件和端⼝ 5.logfile /opt/redis_6379/logs/redis_6379.log # 配置 log ⽂件地址
#1.安装 yum install -y redis #2.查看默认配置档和相关文件 rpm -ql redis [root@shell /var/log/redis22:23:13]# rpm -ql redis /etc/logrotate.d/redis /etc/redis-sentinel.conf /etc/redis.conf /etc/systemd/system/redis-sentinel.service.d /etc/systemd/system/redis-sentinel.service.d/limit.conf /etc/systemd/system/redis.service.d /etc/systemd/system/redis.service.d/limit.conf /usr/bin/redis-benchmark /usr/bin/redis-check-aof /usr/bin/redis-check-rdb /usr/bin/redis-cli /usr/bin/redis-sentinel /usr/bin/redis-server /usr/lib/systemd/system/redis-sentinel.service /usr/lib/systemd/system/redis.service /usr/libexec/redis-shutdown /usr/share/doc/redis-3.2.12 /usr/share/doc/redis-3.2.12/00-RELEASENOTES /usr/share/doc/redis-3.2.12/BUGS /usr/share/doc/redis-3.2.12/CONTRIBUTING /usr/share/doc/redis-3.2.12/MANIFESTO /usr/share/doc/redis-3.2.12/README.md /usr/share/licenses/redis-3.2.12 /usr/share/licenses/redis-3.2.12/COPYING /usr/share/man/man1/redis-benchmark.1.gz /usr/share/man/man1/redis-check-aof.1.gz /usr/share/man/man1/redis-check-rdb.1.gz /usr/share/man/man1/redis-cli.1.gz /usr/share/man/man1/redis-sentinel.1.gz /usr/share/man/man1/redis-server.1.gz /usr/share/man/man5/redis-sentinel.conf.5.gz /usr/share/man/man5/redis.conf.5.gz /var/lib/redis /var/log/redis /var/run/redis #3.启动redis /usr/bin/redis-server /etc/redis.conf #这样启动会在前台夯住,可以放后台启动 nohup /usr/bin/redis-server /etc/redis.conf & #4.查看是否启动OK [root@shell /var/log/redis22:23:26]# ps -ef |grep redis root 7718 7624 0 22:16 pts/1 00:00:01 /usr/bin/redis-server 127.0.0.1:6379 root 7741 7443 0 22:25 pts/0 00:00:00 grep --color=auto redis #5.连接redis redis-cli 或redis-cli -h ip #如果是多端口需要写明ip 端口,如果是单节点一个端口就是用这个命令redis-cli #6.查看redis 版本信息 连接上redis后输入info 即可看到版本信息 [root@shell /var/log/redis22:19:02]# redis-cli 127.0.0.1:6379> info # Server redis_version:3.2.12 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:7897e7d0e13773f redis_mode:standalone os:Linux 3.10.0-957.el7.x86_64 x86_64 arch_bits:64 multiplexing_api:epoll gcc_version:4.8.5 process_id:7718 run_id:c4c51ede67e3e8baf06fc60bbbabe34a9f5d9611 tcp_port:6379 uptime_in_seconds:183 uptime_in_days:0 hz:10 lru_clock:6571998 executable:/usr/bin/redis-server config_file:/etc/redis.conf
Do everything well