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 布隆过滤器的相关命令的使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • Redis高可用部署架构的实现

    Redis高可用部署架构的实现

    本文主要介绍了Redis高可用部署架构的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Redis实现分布式锁的实例讲解

    Redis实现分布式锁的实例讲解

    在本篇文章里小编给大家整理了一篇关于Redis实现分布式锁的实例讲解内容,有兴趣的朋友们可以学习参考下。
    2021-12-12
  • redis 主从哨兵模式实现一主二从

    redis 主从哨兵模式实现一主二从

    本文主要介绍了redis 主从哨兵模式实现一主二从,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Redis中的RDB用法原理及说明

    Redis中的RDB用法原理及说明

    Redis RDB是通过fork子进程生成内存数据快照的持久化机制,采用写时复制(COW)技术,确保数据一致性,优点:性能高、恢复快;缺点:可能丢失最后一次持久化后的数据,常用于备份,建议与AOF结合使用以兼顾安全与效率
    2025-09-09
  • Redis实现持久化的方式汇总

    Redis实现持久化的方式汇总

    Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。今天我们就来看看如何实现Redis持久化,需要的朋友可以参考下
    2022-10-10
  • Redis五种数据结构在JAVA中如何封装使用

    Redis五种数据结构在JAVA中如何封装使用

    本篇博文就针对Redis的五种数据结构以及如何在JAVA中封装使用做一个简单的介绍。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • redis执行redis命令的方法教程

    redis执行redis命令的方法教程

    这篇文章主要给大家介绍了在redis中执行redis命令的方法教程,文中详细介绍了关于Redis 命令及在远程服务上执行命令的方法,介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • Redis使用bloom-filter过滤器实现推荐去重

    Redis使用bloom-filter过滤器实现推荐去重

    这篇文章主要介绍了Redis使用bloom-filter过滤器实现推荐去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • redis5集群如何主动手工切换主从节点命令

    redis5集群如何主动手工切换主从节点命令

    这篇文章主要介绍了redis5集群如何主动手工切换主从节点命令,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01

最新评论