Linux服务器Redis6.x安装、配置全过程

 更新时间:2026年03月02日 15:12:10   作者:一恍过去  
Redis是一个高性能的键值对数据库,支持多种数据类型和持久化方式,它在缓存、分布式系统、聊天室、任务队列等领域有广泛应用,本文详细介绍了Redis的安装、配置、高级类型和持久化机制

1、概述

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,通过Redis是单线程+多路IO复用技术,提高了reids的可用性。

目前为止Redis支持的键值数据类型如下:

  • 字符串类型(String)
  • 散列类型(Hash)
  • 列表类型(List)
  • 集合类型(Set)
  • 有序集合类型(Zset)

2、新特性

redis6.x相比于redis5.x增加新特性:

多线程IO,通过多线程用来处理网络数据的读写和协议解析,底层数据及命令操作还是单线程。

多线程IO默认不开启,需要修改配置进行修改:

io-threads-do-reads yes
io-threads 4
  • 引入了 ACL机制,给每个用户分配不同的权限来控制权限。
  • 支持集群代理
  • 提升了RDB日志加载速度
  • 实现了客户端缓存功能

3、应用场景

  • 缓存(数据查询、短连接、新闻内容、商品内容等等)。
  • 分布式集群架构中的session(Token)分离。
  • 聊天室的在线好友列表。
  • 任务队列(秒杀、抢购等等)。
  • 应用排行榜。
  • 网站访问统计。
  • 数据过期处理(可以精确到毫秒)。

4、安装运行redis

docker环境安装

4.1、环境依赖

  • 依赖c++环境
yum install gcc-c++
yum install centos-release-scl scl-utils-build
yum install -y devtoolset-8-toolchain

4.2、源码安装redis

  • 操作目录:/usr/local/redis/
  • 安装版本:redis-6.2.5
  • 安装目录:/usr/local/redis/6.2.5

下载地址:http://download.redis.io/releases

通过先下载然后拷贝到服务器上,或者通过wget命令下载,下面通过wget进行下载;

创建目录:

mkdir /usr/local/redis/

进入目录:

cd /usr/local/redis/	

下载:

wget http://download.redis.io/releases/redis-6.2.5.tar.gz

解压:

tar -zxvf  redis-6.2.5.tar.gz

目录结构如下:

编译源码:

# 进入源码目录
cd  /usr/local/redis/redis-6.2.5
# make编译源码,并且指定安装目录为/usr/local/redis/6.2.5
make PREFIX=/usr/local/redis/6.2.5  install 

拷贝配置文件:

# 创建配置文件
mkdir  /usr/local/redis/6.2.5/config  -p
# 将源码中的配置文件,拷贝到安装目录下
cp /usr/local/redis/redis-6.2.5/redis.conf  /usr/local/redis/6.2.5/config

创建日志文件目录:

mkdir  /usr/local/redis/6.2.5/log -p

安装目录结构如下:

  • redis-benchmark:性能测试工具,看看自己服务器性能如何
  • redis-check-aof:修复有问题的AOF文件,rdb和aof后面讲
  • redis-check-dump:修复有问题的dump.rdb文件
  • redis-sentinel:Redis集群使用
  • redis-server:Redis服务器启动命令
  • redis-cli:客户端,操作入口

4.3、修改配置文件

# 编辑配置文件
vim /usr/local/redis/6.2.5/config/redis.conf

#1、开启后台启动
daemonize  no  —>  daemonize  yes
#2、开启远程连接
注释 bind 127.0.0.1
protected-mode yes  —>  protected-mode no
#3、配置客户端连接活跃时间
tcp-keepalive 60
#4、配置日志文件位置
logfile "/usr/local/redis/6.2.5/log/redis.log"

4.4、启动、停止redis

启动:

cd /usr/local/redis/6.2.5/bin
./redis-server ../config/redis.conf

停止:

pkill redis

5、redis配置文件介绍

  • INCLUDES:类似nginx的include,多实例的情况可以把公用的配置文件提取出来
  • protected-mode:本机保护模式
  • bind:默认情况bind=127.0.0.1只能接受本机的访问请求,如果不配置,则无限制接受任何IP地址的访问
  • timeout:一个空闲的客户端维持多少秒会关闭,0表示关闭该功能,即永不关闭
  • tcp-keepalive:每个n秒对客户端进行一次心跳检测,如果设置为0,则不会检测,建议设置成60
  • databases:库的数量,默认为16个
  • requirepass:设置连接密码
  • maxclients:最大连接数,默认为1000
  • maxmemory:可用最大内存
  • maxmemory-policy:移除策略算法
  • no-eviction(ɪˈvɪkʃn):不删除策略。当达到最大内存限制时, 如果再新增,返回错误信息,为默认策略。
  • allkeys-lru: 在所有key中优先删除最少使用的键。
  • allkeys-random: 在所有key中随机删除键。
  • volatile-lru: 在设置了超时时间的key中优先删除最少使用的键。
  • volatile-random:在设置了超时时间的key中随机删除键。
  • volatile-ttl:在设置了超时时间的key中优先删除剩余时间最短的键。
  • maxmemory-samples:设置样本数量

LRU算法和最小TTL算法都并非是精确的算法,而是估算值,通过设置样本的大小,redis默认会检查样本中的数据,选择LRU的那个。

一般设置3到7的数字,数值越小样本越不准确,但性能消耗越小。

6、redis高级类型使用

  • Bitmaps:通过二进制形式存储数据,可以用于用户签到统计、访问量统计。
  • HyperLogLog:统计非常大量的不重复数据的总和。
  • Geospatial:redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操作

7、持久化

Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。

Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式,可以单独使用其中一种或将二者结合使用。

7.1、RDB持久化

RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘。

RDB是Redis默认采用的持久化方式,在redis.conf配置文件中默认有此下配置:

save 900 1
save 300 10
save 60 10000

save 开头的一行就是持久化配置,可以配置多个条件(每行配置一个条件),每个条件之间是“或”的关系,“save 900 1”表示15分钟(900秒钟)内至少1个键被更改则进行快照,“save 300 10”表示5分钟(300秒)内至少10个键被更改则进行快照。

在redis.conf中:

  • 配置dir指定rdb快照文件的位置
  • 配置dbfilenam指定rdb快照文件的名称

Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存。根据数据量大小与结构和服务器性能不同,这个时间也不同。通常将记录一千万个字符串类型键、大小为1GB的快照文件载入到内存中需要花费20~30秒钟。

优点:

  • 适合大规模的数据恢复
  • 对数据完整性和一致性要求不高更适合使用
  • 节省磁盘空间
  • 恢复速度快

缺点:

  • 克隆时会瞬间增大内存
  • 数据过大时,耗时更久
  • 可能会丢失最后一次数据

问题总结:

通过RDB方式实现持久化,一旦Redis异常退出,就会丢失最后一次快照以后更改的所有数据。这就需要开发者根据具体的应用场合,通过组合设置自动快照条件的方式来将可能发生的数据损失控制在能够接受的范围。如果数据很重要以至于无法承受任何损失,则可以考虑使用AOF方式进行持久化。

rdb移植恢复:

通过将rdb文件拷贝到其他redis服务器下,可以实现rdb的恢复,步骤如下:

  • 关闭需要恢复数据的Redis
  • 先把备份的文件拷贝到redis工作目录下
  • 启动Redis, 备份数据会直接加载

7.2、AOF持久化

默认情况下Redis没有开启AOF(append only file)方式的持久化。 

修改配置文件开启:

appendonly yes

开启AOF持久化后每执行一条会更改Redis中的数据的命令或者每隔一秒,Redis就会将该命令写入硬盘中的AOF文件。

通过修改配置文件设置AOF策略:

#always:表示每一条更新命令都同步;everysec:每秒同步一次(如果宕机,会丢失最后一秒数据)
appendfsync always | everysec

AOF文件的保存位置和RDB文件的位置相同,都是通过dir参数设置的,默认的文件名是appendonly.aof

可以通过修改配置文件自定义名称:

appendfilename appendonly.aof

Rewrite压缩机制:

​ AOF采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制(fork出一条新进程来将文件重写), 当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩, 只保留可以恢复数据的最小指令集。

何时触发重写:

Redis会记录上次重写时的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发,比如:

系统载入时或者上次重写完毕时,Redis会记录此时AOF大小,设为base_size,如果Redis的AOF当前大小>= base_size +base_size*100% (默认)且当前大小==>=64mb==(默认)的情况下,Redis会对AOF进行重写。

通过修改配置,设置重写触发条件:

# 文件大小达到上次重写大小的100%(2倍)时开始重写
auto-aof-rewrite-percentage:100
# 文件大小达到"设置"值时开始重写
auto-aof-rewrite-min-size:64mb

重写流程:

1、主进程fork出子进程执行重写操作,保证主进程不会阻塞。

2、子进程遍历redis内存中数据到临时文件,客户端的写请求同时写入aof_buf缓冲区和aof_rewrite_buf重写缓冲区保证原AOF文件完整以及新增数据的完整性。

3、子进程写完新的AOF文件后,向主进程发信号,父进程更新统计信息。

4、主进程把aof_rewrite_buf中的数据写入到新的AOF文件。

5、使用新的AOF文件覆盖旧的AOF文件,完成AOF重写。

优缺点:

优点:

  • 备份机制更稳健,丢失数据概率更低

缺点:

  • 比起RDB占用更多的磁盘空间
  • 恢复备份速度要慢
  • 频繁的同步导致系统性能压力更大

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解如何使用Redis作为高效缓存

    详解如何使用Redis作为高效缓存

    Redis是一个高性能的 内存存储系统,通常被用作 缓存 来加速数据访问,提高应用的吞吐量和响应速度,本文详细讲解如何使用 Redis 作为高效缓存,包括基本原理、常见模式、最佳实践以及优化技巧,需要的朋友可以参考下
    2025-01-01
  • redis集群规范详解

    redis集群规范详解

    这篇文章主要介绍了redis集群规范详解,涉及节点失效检测、集群状态检测、从节点选举等相关内容,比较详细,需要的朋友可以参考。
    2017-10-10
  • Redis秒杀实现方案讲解

    Redis秒杀实现方案讲解

    这篇文章主要介绍了Redis秒杀实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12
  • easyswoole3.5 redis使用详细解析

    easyswoole3.5 redis使用详细解析

    这篇文章主要介绍了easyswoole3.5 redis使用的相关知识,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • Redis集群水平扩展、集群中添加以及删除节点的操作

    Redis集群水平扩展、集群中添加以及删除节点的操作

    这篇文章主要介绍了Redis集群水平扩展、集群中添加以及删除节点的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Redis事务涉及的watch、multi等命令详解

    Redis事务涉及的watch、multi等命令详解

    这篇文章主要介绍了Redis事务涉及的watch、multi等命令,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2018-10-10
  • 利用Redis实现订单30分钟自动取消

    利用Redis实现订单30分钟自动取消

    本文主要介绍了利用Redis实现订单30分钟自动取消,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • redis禁止几个危险命令的方法

    redis禁止几个危险命令的方法

    今天小编就为大家分享一篇redis禁止几个危险命令的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 详解如何在YAML文件中配置Redis

    详解如何在YAML文件中配置Redis

    在现代软件开发中,配置文件是非常重要的一部分,其中,YAML(YAML Ain't Markup Language)是一种常用的配置文件格式,具有可读性强、易于理解和编写的特点,在本篇文章中,我们将探讨如何在YAML文件中配置Redis,需要的朋友可以参考下
    2024-09-09
  • redis cluster支持pipeline的实现思路

    redis cluster支持pipeline的实现思路

    本文给大家介绍redis cluster支持pipeline的实现思路,在 cluster 上执行 pipeline 可能会由于 redis 节点扩缩容 中途 redirection 切换连接导致结果丢失,具体细节问题请参考下本文
    2021-06-06

最新评论