当前位置: 代码网 > 服务器>服务器>Linux > Linux服务器Redis6.x安装、配置全过程

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

2026年03月02日 Linux 我要评论
1、概述redis是用c语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,通过redis是单线程+多路io复用技术,提高了reids的

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占用更多的磁盘空间
  • 恢复备份速度要慢
  • 频繁的同步导致系统性能压力更大

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com