CentOS 安装 Redis 6.0.9

什么是Redis?


 

Redis通常被称为数据结构服务器。这意味着Redis通过一组命令提供对可变数据结构的访问,这些命令是使用带有TCP套接字和简单协议的服务器-客户端模型发送的。因此,不同的进程可以以共享的方式查询和修改相同的数据结构。

在Redis中实现的数据结构具有一些特殊属性:

  • 即使始终为它们提供服务并将它们修改到服务器内存中,Redis也会将它们存储在磁盘上。这意味着Redis速度很快,但它也是非易失性的。
  • 数据结构的实现强调内存效率,因此与使用高级编程语言建模的相同数据结构相比,Redis内部的数据结构可能使用较少的内存。
  • Redis提供了许多自然可以在数据库中找到的功能,例如复制,持久性的可调级别,集群和高可用性。

另一个很好的例子是将Redis视为memcached的一个更复杂的版本,其中的操作不仅是SET和GET,而且还适用于诸如列表,集合,有序数据结构等复杂数据类型的操作。

 

Redis 6.0 新特性


Redis 6.0引入了SSL,新的RESP3协议,ACL,客户端缓存,无盘副本,I / O线程,更快的RDB加载,新的模块API以及许多其他改进。

 

安装依赖包

[root@Mike-Node1 ~]#  yum -y install tcl gcc gcc-c++  make zlib zlib-devel

 

下载编译安装

[root@Mike-Node1 ~]# wget https://download.redis.io/releases/redis-6.0.9.tar.gz
[root@Mike-Node1 ~]# tar zxvf redis-6.0.9.tar.gz -C /usr/local/ && rm -rf redis-6.0.9.tar.gz
[root@Mike-Node1 ~]# cd /usr/local/redis-6.0.9/
[root@Mike-Node1 /usr/local/redis-6.0.9]# make && make install PREFIX=/usr/local/redis

遇到报错

server.c: In function ‘allPersistenceDisabled’:
server.c:1484:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
server.c: In function ‘writeCommandsDeniedByDiskError’:
server.c:3934:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
server.c: In function ‘iAmMaster’:
server.c:5134:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
make[1]: *** [server.o] Error 1
make[1]: Leaving directory `/usr/local/redis-6.0.9/src'
make: *** [all] Error 2

出现这种错误是由于Redis6.0版本以上要求gcc需要5.3版本以上,升级gcc即可

默认gcc版本

[root@Mike-Node1 ~]# gcc -v
***********

gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
[root@Mike-Node1 ~]#

升级gcc版本

[root@Mike-Node1 ~]# yum -y install centos-release-scl
[root@Mike-Node1 ~]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
[root@Mike-Node1 ~]# echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
[root@Mike-Node1 ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-9/root/usr --mandir=/opt/rh/devtoolset-9/root/usr/share/man --infodir=/opt/rh/devtoolset-9/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --with-default-libstdcxx-abi=gcc4-compatible --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-9.3.1-20200408/obj-x86_64-redhat-linux/isl-install --disable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC) 
[root@Mike-Node1 ~]# 

 

修改配置文件

[root@Mike-Node1 /usr/local/redis-6.0.9]# cp -rf redis.conf /usr/local/redis/
[root@Mike-Node1 /usr/local/redis-6.0.9]# cd /usr/local/redis
[root@Mike-Node1 /usr/local/redis]# vim redis.conf

bind 127.0.0.1
daemonize yes
requirepass mike666
protected-mode no
logfile /usr/local/redis/logs/redis.log
dir /usr/local/redis/data

[root@Mike-Node1 /usr/local/redis]#
[root@Mike-Node1 /usr/local/redis]# mkdir logs data
[root@Mike-Node1 /usr/local/redis]# 

设置 redis密码  mike666,日志路径和数据存储路径

 

启动Redis

[root@Mike-Node1 /usr/local/redis]# vim /etc/systemd/system/redis.service

[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

[root@Mike-Node1 /usr/local/redis]#
[root@Mike-Node1 /usr/local/redis]# systemctl daemon-reload
[root@Mike-Node1 /usr/local/redis]# systemctl start redis.service
[root@Mike-Node1 /usr/local/redis]# systemctl enable redis.service
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /etc/systemd/system/redis.service.
[root@Mike-Node1 /usr/local/redis]# 

 

设置软连接

[root@Mike-Node1 ~]# ln -s /usr/local/redis/bin/redis-cli /usr/bin/redis

 

启动警告解决

17468:M 16 Dec 2020 10:54:26.205 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
17468:M 16 Dec 2020 10:54:26.205 # Server initialized
17468:M 16 Dec 2020 10:54:26.205 # 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.
17468:M 16 Dec 2020 10:54:26.205 # 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 madvise > /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 (set to 'madvise' or 'never').
17468:M 16 Dec 2020 10:54:26.205 * Ready to accept connections

解决一

[root@Mike-Node1 ~]# vim /etc/sysctl.conf 

net.core.somaxconn = 1024
vm.overcommit_memory = 1


[root@Mike-Node1 ~]# sysctl -p

解决二

[root@Mike-Node1 ~]# vim /etc/rc.local

echo never > /sys/kernel/mm/transparent_hugepage/enabled


[root@Mike-Node1 ~]# source /etc/rc.local 
[root@Mike-Node1 ~]# systemctl restart redis

 

服务操作命令

systemctl start redis.service     #启动redis服务

systemctl stop redis.service     #停止redis服务

systemctl restart redis.service   #重新启动服务

systemctl status redis.service   #查看服务当前状态

systemctl enable redis.service   #设置开机自启动

systemctl disable redis.service   #停止开机自启动

 

客户端连接

[root@Mike-Node1 ~]# redis -h 127.0.0.1 -p 6379
127.0.0.1:6379> AUTH mike666
OK
127.0.0.1:6379> 

 

本文分享完毕,感谢支持点赞~~

上一篇:【Python 第16课】 字符串格式化


下一篇:CentOS 安装 Zookeeper 3.6.2