Redis

关注公众号 jb51net

关闭
首页 > 数据库 > Redis > Linux服务器Redis6.x安装、配置

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

作者:一恍过去

Redis是一个高性能的键值对数据库,支持多种数据类型和持久化方式,它在缓存、分布式系统、聊天室、任务队列等领域有广泛应用,本文详细介绍了Redis的安装、配置、高级类型和持久化机制

1、概述

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

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

2、新特性

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

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

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

io-threads-do-reads yes
io-threads 4

3、应用场景

4、安装运行redis

docker环境安装

4.1、环境依赖

yum install gcc-c++
yum install centos-release-scl scl-utils-build
yum install -y devtoolset-8-toolchain

4.2、源码安装redis

下载地址: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

安装目录结构如下:

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配置文件介绍

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

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

6、redis高级类型使用

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中:

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

优点:

缺点:

问题总结:

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

rdb移植恢复:

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

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重写。

优缺点:

优点:

缺点:

总结

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

您可能感兴趣的文章:
阅读全文