linux下安装并配置redis详解、Redis最新版V7.2.3测试成功

艺帆风顺 发布于 2025-04-02 19 次阅读


一、前言

环境:centos7 redis-6.2.6.tar.gz、redis 7.2.3版本测试成功

查看哪个是稳定版本:https://redis.io/download/
下载地址:https://download.redis.io/releases/

二、redis使用场景

很多大型电商网站、视频直播和游戏应用等,存在大规模数据访问,对数据查询效率要求高,且数据结构简单,不涉及太多关联查询。这种场景使用Redis,在速度上对传统磁盘数据库有很大优势,能够有效减少数据库磁盘IO,提高数据查询效率,减轻管理维护工作量,降低数据库存储成本。Redis对传统磁盘数据库是一个重要的补充,成为了互联网应用,尤其是支持高并发访问的互联网应用必不可少的基础服务。电商网站的商品类目、推荐系统以及秒杀抢购活动,适宜使用Redis缓存数据库。

例如秒杀抢购活动,并发高,对于传统关系型数据库来说访问压力大,需要较高的硬件配置(如磁盘IO)支撑。Redis数据库,单节点QPS支撑能达到10万,轻松应对秒杀并发。实现秒杀和数据加锁的命令简单,使用SET、GET、DEL、RPUSH等命令即可。

1、(视频直播)消息弹幕:直播间的在线用户列表,礼物排行榜,弹幕消息等信息,都适合使用Redis中的SortedSet结构进行存储。例如弹幕消息,可使用ZREVRANGEBYSCORE排序返回,在Redis 5.0中,新增了zpopmax,zpopmin命令,更加方便消息处理。

2、(游戏应用)游戏排行榜:在线游戏一般涉及排行榜实时展现,比如列出当前得分最高的10个用户。使用Redis的有序集合存储用户排行榜非常合适,有序集合使用非常简单,提供多达20个操作集合的命令。

3、(社交APP)返回最新评论/回复:在web类应用中,常有“最新评论”之类的查询,如果使用关系型数据库,往往涉及到按评论时间逆排序,随着评论越来越多,排序效率越来越低,且并发频繁。使用Redis的List(链表),例如存储最新1000条评论,当请求的评论数在这个范围,就不需要访问磁盘数据库,直接从缓存中返回,减少数据库压力的同时,提升APP的响应速度。

三、redis的数据流

四、安装必要依赖、gcc编译工具

yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc
yum -y install devtoolset-9-c++
yum -y install devtoolset-9-binutils scl enable devtoolset-9

五、安装Redis

[root@Redis ~]# wget https://download.redis.io/releases/redis-6.2.6.tar.gz #下载稳定版本的Redis包
[root@Redis ~]# tar -zxvf redis-6.2.6.tar.gz #解压redis包到当前目录
[root@Redis ~]#cd redis-6.2.6/ #进入目录
[root@Redis redis-6.2.6]# make -j 4 #编译,-j表示开启4个线程编译
[root@Redis redis-6.2.6]# mkdir /usr/local/redis-6.2.6 #创建一个目录,作为redis安装目录
#正式安装Redis,加PREFIX参数指定Redis安装到/usr/local/redis-6.2.6目录下,如果不加的话直接执行make install的话,默认安装二进制命令# 就会生成到/usr/local/bin下。
[root@Redis redis-6.2.6]# make PREFIX=/usr/local/redis-6.2.6 install #安装

[root@Redis redis-6.2.6]# cd /usr/local/redis-6.2.6 #进入Redis的安装目录
0 directories, 6 files
[root@Redis redis-6.2.6]# ll #ll查看一下有哪些文件,发现只有一个bin目录
total 0
drwxr-xr-x 2 root root 134 Jan 23 22:31 bin
[root@Redis redis-6.2.6]#
[root@Redis redis-6.2.6]# tree bin/ #其实就是生成了Redis-server、Redis-cli等6个命令文件而已
bin/
redis-benchmark
redis-check-aof -> redis-server
redis-check-rdb -> redis-server
redis-cli
redis-sentinel -> redis-server
redis-server

0 directories, 6 files
[root@Redis redis-6.2.6]#

六、创建目录

刚才我们上面看到redis的/usr/local/redis-6.2.6安装目录默认只有一个bin目录,为了规范一点,我们手动创建一下目录:

[root@Redis ~]# cd /usr/local/redis-6.2.6 #进入Redis的安装目录

#创建3个目录,etc用于存放redis的主配置文件,logs目录存放redis日志,data用于存放redis的持久化数据
[root@nginx redis-6.2.6]# mkdir etc logs data

七、复制配置文件

Redis的启动需要指定配置文件,在我们解压的源码包里就有默认配置文件,为了方便。这里把它复制一份到Redis的安装目录下:

[root@Redis redis-6.2.6]# cp /redis-6.2.6/redis.conf /usr/local/redis-6.2.6/etc/ #复制一份源码包配置文件到Redis安装目录

八、修改配置文件

默认的Redis配置文件是以前台的方式运行Redis,这里需要修改一下配置,让Redis启动的时候在后台守护进程方式运行,以及设置登陆密码等。

[root@Redis ~]# cd /usr/local/redis-6.2.6/etc/
[root@Redis etc]# ll
total 92
-rw-r--r-- 1 root root 93724 Jan 23 22:55 redis.conf
[root@Redis etc]# vim redis.conf #主要启用或修改下面这些参数即可
[root@Redis redis-6.2.6]# grep -Ev "#|$^" etc/redis.conf
bind 0.0.0.0 #设置哪些IP可以连接Redis-server,4个0表示全部外部计算机都可以连接,危险
port 6379#Redis的默认端口6379
daemonize yes #设置Redis启动为后台守护进程
pidfile /usr/local/redis-6.2.6/logs/redis_6379.pid #pidfile的路径
loglevel notice #日志级别
logfile /usr/local/redis-6.2.6/logs/redis_6379.log #日志文件的路径
dir /usr/local/redis-6.2.6/data/ #持久化数据存放的目录
databases 16 #数据库的个数,默认16个
requirepass 123456 #设置客户端登陆密码

[root@Redis redis-6.2.6]#

九、启动redis服务

[root@Redis redis-6.2.6]# cd /usr/local/redis-6.2.6/bin/
[root@Redis bin]# ./redis-server /usr/local/redis-6.2.6/etc/redis.conf #启动Redis服务并指定配置文件
[root@Redis redis-6.2.6]# lsof -i:6379 #查看6379端口
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 23741 root 6u IPv4 77162 0t0 TCP localhost:6379 (LISTEN)
redis-ser 23741 root 7u IPv6 77163 0t0 TCP localhost:6379 (LISTEN)
[root@Redis redis-6.2.6]#

十、问题排查

    

    #第一次启动redis可能会看到日志报下面的3个警告:WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.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.WARNING: you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix thisissue 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 thesetting after a reboot. Redis must be restarted after THP is disabled.
    按照提示解决即可:vim /etc/sysctl.conf #打开/etc/sysctl.conf文件,添加下面2行net.core.somaxconn = 1024 #指定内核参数,默认值128对于负载很大的服务是不够的,改为1024或2048或者更大vm.overcommit_memory = 1 #内存的分配策略,设置为1表示允许内核分配所有的物理内存
    修改完成后保存,执行:sysctl -p 使修改立即生效
    使用root账号执行:echo never > /sys/kernel/mm/transparent_hugepage/enabled为了防止重启服务器失效,将echo never > /sys/kernel/mm/transparent_hugepage/enabled 添加到/etc/rc.local开机自启中即可。

    十一、联通性检查

      [root@DB-Node1 bin]# ./redis-cli -h 192.168.1.137 -p 6379192.168.1.137:6379> auth 123456OK

      十二、配置环境变量

          # vim ~/.bashrc

        alias redis-cli='/usr/local/redis7/bin/redis-cli'alias redis-server='/usr/local/redis7/bin/redis-server'

            # source ~/.bashrc

          版权声明:本文内容始发于CSDN>作者:MssGuo,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。始发链接:https://blog.csdn.net/MssGuo/article/details/114283015在此特别鸣谢原作者的创作。此篇文章的所有版权归原作者所有,商业转载建议请联系原作者,非商业转载请注明出处。