Redis【性能 01】Redis 5.x 6.x 7.x 共5个不同版本延迟及性能测试对比分析(单机版默认配置)

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis【性能 01】Redis 5.x 6.x 7.x 共5个不同版本延迟及性能测试对比分析(单机版默认配置)

1.环境说明

使用的是腾讯的云服务器1核心2G内存50G存储的乞丐版,系统信息如下:

[root@tcloud ~]# rpm -qi centos-release
Name        : centos-release
Version     : 7
Release     : 9.2009.1.el7.centos
Architecture: x86_64
Install Date: Tue 19 Jan 2021 06:23:16 PM CST
Group       : System Environment/Base
Size        : 44787
License     : GPLv2
Signature   : RSA/SHA256, Thu 03 Dec 2020 12:35:28 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : centos-release-7-9.2009.1.el7.centos.src.rpm
Build Date  : Mon 23 Nov 2020 11:08:41 PM CST
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
Summary     : CentOS Linux release file
Description :
CentOS Linux release files

全部版本下载地址https://download.redis.io/releases/,Redis安装配置:

# 0.卸载
rm -rf /usr/local/redis
# 1.安装依赖否则报错【/bin/sh: cc: 未找到命令】
yum install gcc-c++ -y
# 2.解压文件
tar -zvxf redis-{版本号}.tar.gz
# 3.移动文件
mv ./redis-{版本号} /usr/local/redis-{版本号}
# 4.编译
cd /usr/local/redis-{版本号}/
make
# 5.安装
make PREFIX=/usr/local/redis-{版本号} install
# 如不添加PREFIX指定安装文件夹Linux会将可执行文件存放在/usr/local/bin、库文件会存放在/usr/local/lib、配置文件会存放在/usr/local/etc,其他的资源文件会存放在usr/local/share目录,不便于清理,指定安装文件夹后,使用 rm -rf /usr/local/redis 即可清除 Redis。
# 6.配置【保持默认】
vim /usr/local/redis-{版本号}/redis.conf
  # 后台启动
  daemonize yes
# 7.启动
./bin/redis-server ./redis.conf
# 测试使用默认分配器。
# redis内存管理方式:支持tcmalloc、jemalloc、malloc三种内存分配。
# 可使用 info Memory 命令查询碎片信息。
make MALLOC=jemalloc
# MALLOC 选项是用于指定使用的内存分配库。该选项可以指定链接器使用指定的内存分配库,从而将程序编译成使用指定库的可执行文件。
# MALLOC=jemalloc 指定链接器使用 jemalloc 库中的 malloc 函数来代替标准的 malloc 函数,以获得更好的性能。这对于一些需要更高内存效率和更低内存碎片的应用程序非常有用,已内置是Redis的默认选项。
# MALLOC=tcmalloc 指定链接器使用 tcmalloc 库中的 malloc 函数来代替标准的 malloc 函数,使用时需要安装。
# MALLOC=libc 指定链接器使用 GNU C 库中包含的 malloc 函数作为程序的默认内存分配函数,使用时需要安装。

为控制尽可能的控制变量,不同版本的Redis测试前重启服务器,测试命令为:

# 1.查看内存分配器的版本 info memory
# 2.延迟测试
./bin/redis-cli --intrinsic-latency 10
# 表示到目前为止最慢的一次运行的延迟是6890微秒。
Max latency so far: 6890 microseconds.
# 表示总共运行了151480390次,平均延迟为0.0660微秒/每次,即66.02纳秒/每次。
151480390 total runs (avg latency: 0.0660 microseconds / 66.02 nanoseconds per run).
# 表示最慢的一次运行比平均延迟慢了104370倍。
Worst run took 104370x longer than the average latency.
# 3.性能测试【测试三轮使用平均值】
./bin/redis-benchmark -q

2.测试结果

  1. 关于结果中的 PING_MBULK 和 PING_BULK

在 Redis 中,PING_MBULK 和 PING_BULK 都是用来测试与 Redis 服务器之间的连接是否正常的命令。但是,它们使用的协议和返回结果格式略有不同。

PING_MBULK 命令使用多个参数的批量请求(multi-bulk request)协议,它将一个字符串数组作为参数发送到 Redis 服务器,服务器返回对应的字符串数组作为响应。如果服务器正常运行,它将返回 “PONG” 字符串作为响应,而且需要注意的是,这个字符串响应可能包含在数组中。因此,PING_MBULK 请求发送到 Redis 服务器时,它的第一个参数应该是数组的长度,后面跟随着每个参数。例如,PING_MBULK 2 hello world 命令将发送一个长度为 2 的数组,包含字符串 “hello” 和 “world” 作为参数,并返回一个长度为 2 的数组,包含响应字符串 “PONG”。

PING_BULK 命令使用单个参数的批量请求(bulk request)协议,它将一个字符串作为参数发送到 Redis 服务器,服务器也将返回对应的字符串作为响应。PING_BULK 命令和 PING_MBULK 命令的唯一区别是参数格式的不同。PING_BULK 命令只需要一个字符串参数,例如 PING_BULK hello 命令将发送字符串 “hello” 作为参数,并且返回相同的字符串 “hello” 作为响应。

因此,虽然 PING_MBULK 和 PING_BULK 命令都可以用来测试连接是否正常,但是它们使用的协议和返回结果格式是不同的。如果你希望发送多个参数,可以使用 PING_MBULK 命令;如果你只需要一个参数,则可以使用 PING_BULK 命令。

我们暂且将其当作相同的。

  1. 关于性能测试结果数据

性能测试结果为了简洁清晰,去掉了单位requests per second和6.x\7.x的p50=xxxx msec

  1. 图表说明

柱状图为了展示稳定性,折线图为了比对性能。

Version 5.0.3【待优化版本】
  • 内存分配器版本 mem_allocator:jemalloc-5.1.0
  • 延迟测试结果
# 1
150584708 total runs (avg latency: 0.0664 microseconds / 66.41 nanoseconds per run).
Worst run took 93393x longer than the average latency.
# 2
151425412 total runs (avg latency: 0.0660 microseconds / 66.04 nanoseconds per run).
Worst run took 121928x longer than the average latency.
# 3
151173847 total runs (avg latency: 0.0661 microseconds / 66.15 nanoseconds per run).
Worst run took 121453x longer than the average latency.
  • 性能测试结果
# 1
PING_INLINE: 63734.86
PING_BULK: 64641.24
SET: 63451.78
GET: 62421.97
INCR: 60496.07
LPUSH: 59916.12
RPUSH: 63051.70
LPOP: 62500.00
RPOP: 62227.75
SADD: 63532.40
HSET: 60938.45
SPOP: 64184.86
LPUSH (needed to benchmark LRANGE): 62111.80
LRANGE_100 (first 100 elements): 34590.11
LRANGE_300 (first 300 elements): 15938.79
LRANGE_500 (first 450 elements): 11619.80
LRANGE_600 (first 600 elements): 9228.50
MSET (10 keys): 54288.82
# 2
PING_INLINE: 63897.76
PING_BULK: 63613.23
SET: 60938.45
GET: 61500.61
INCR: 63734.86
LPUSH: 60459.49
RPUSH: 62695.92
LPOP: 60459.49
RPOP: 60642.81
SADD: 63211.12
HSET: 62500.00
SPOP: 64391.50
LPUSH (needed to benchmark LRANGE): 61842.92
LRANGE_100 (first 100 elements): 33692.72
LRANGE_300 (first 300 elements): 16147.26
LRANGE_500 (first 450 elements): 11687.71
LRANGE_600 (first 600 elements): 9188.64
MSET (10 keys): 54914.88
# 3
PING_INLINE: 61690.31
PING_BULK: 65316.79
SET: 62460.96
GET: 64474.53
INCR: 63938.62
LPUSH: 62266.50
RPUSH: 60569.35
LPOP: 59952.04
RPOP: 62853.55
SADD: 63011.97
HSET: 62853.55
SPOP: 63451.78
LPUSH (needed to benchmark LRANGE): 60459.49
LRANGE_100 (first 100 elements): 34602.07
LRANGE_300 (first 300 elements): 16155.09
LRANGE_500 (first 450 elements): 11665.89
LRANGE_600 (first 600 elements): 9236.17
MSET (10 keys): 53447.35

Version 5.0.7【云服务器使用的版本】
  • 内存分配器版本 mem_allocator:jemalloc-5.1.0
  • 延迟测试结果
# 1
150104030 total runs (avg latency: 0.0666 microseconds / 66.62 nanoseconds per run).
Worst run took 103602x longer than the average latency.
# 2
150460074 total runs (avg latency: 0.0665 microseconds / 66.46 nanoseconds per run).
Worst run took 159969x longer than the average latency.
# 3
149924658 total runs (avg latency: 0.0667 microseconds / 66.70 nanoseconds per run).
Worst run took 236686x longer than the average latency.
  • 性能测试结果
# 1
PING_INLINE: 61349.70                                                    
PING_BULK: 62656.64                                                    
SET: 61881.19                                                    
GET: 63091.48                                                    
INCR: 62150.41                                                    
LPUSH: 61199.51                                                    
RPUSH: 60132.29                                                    
LPOP: 60422.96                                                    
RPOP: 59523.81                                                    
SADD: 63331.22                                                    
HSET: 61614.29                                                    
SPOP: 64143.68                                                    
LPUSH (needed to benchmark LRANGE): 57603.69                                                    
LRANGE_100 (first 100 elements): 33658.70                                                    
LRANGE_300 (first 300 elements): 16350.56                                                    
LRANGE_500 (first 450 elements): 11745.36                                                    
LRANGE_600 (first 600 elements): 9299.73                                                    
MSET (10 keys): 52603.89                                                    
# 2
PING_INLINE: 62735.26                                                    
PING_BULK: 63091.48                                                    
SET: 61728.39                                                    
GET: 63371.36                                                    
INCR: 62893.08                                                    
LPUSH: 59701.50                                                    
RPUSH: 61050.06                                                    
LPOP: 61387.36                                                    
RPOP: 61804.70                                                    
SADD: 62421.97                                                    
HSET: 61387.36                                                    
SPOP: 61199.51                                                    
LPUSH (needed to benchmark LRANGE): 60496.07                                                    
LRANGE_100 (first 100 elements): 34376.07                                                    
LRANGE_300 (first 300 elements): 16144.66                                                    
LRANGE_500 (first 450 elements): 11893.43                                                    
LRANGE_600 (first 600 elements): 9187.80                                                    
MSET (10 keys): 51813.47                                                    
# 3
PING_INLINE: 60277.27                                                    
PING_BULK: 61199.51                                                    
SET: 62853.55                                                    
GET: 63492.06                                                    
INCR: 63131.31                                                    
LPUSH: 60827.25                                                    
RPUSH: 60679.61                                                    
LPOP: 61425.06                                                    
RPOP: 62539.09                                                    
SADD: 63331.22                                                    
HSET: 61766.52                                                    
SPOP: 64143.68                                                    
LPUSH (needed to benchmark LRANGE): 60716.46                                                    
LRANGE_100 (first 100 elements): 34387.89                                                    
LRANGE_300 (first 300 elements): 16441.96                                                    
LRANGE_500 (first 450 elements): 11851.15                                                    
LRANGE_600 (first 600 elements): 9350.16                                                    
MSET (10 keys): 53475.94

Version 5.0.14【5.x最终版】
  • 内存分配器版本 mem_allocator:jemalloc-5.1.0
  • 延迟测试结果
# 1
151427848 total runs (avg latency: 0.0660 microseconds / 66.04 nanoseconds per run).
Worst run took 86041x longer than the average latency.
# 2
151490061 total runs (avg latency: 0.0660 microseconds / 66.01 nanoseconds per run).
Worst run took 98196x longer than the average latency.
# 3
145840102 total runs (avg latency: 0.0686 microseconds / 68.57 nanoseconds per run).
Worst run took 349797x longer than the average latency.
  • 性能测试结果
# 1
PING_INLINE: 60901.34      
PING_BULK: 62227.75      
SET: 63011.97      
GET: 63572.79      
INCR: 64102.57      
LPUSH: 60240.96      
RPUSH: 61387.36      
LPOP: 61690.31      
RPOP: 63211.12      
SADD: 63775.51      
HSET: 61804.70      
SPOP: 64599.48      
LPUSH (needed to benchmark LRANGE): 60024.01      
LRANGE_100 (first 100 elements): 34818.94      
LRANGE_300 (first 300 elements): 16423.06      
LRANGE_500 (first 450 elements): 11877.90      
LRANGE_600 (first 600 elements): 9272.14      
MSET (10 keys): 52164.84      
# 2
PING_INLINE: 63131.31      
PING_BULK: 63897.76      
SET: 61728.39      
GET: 63331.22      
INCR: 64061.50      
LPUSH: 62344.14      
RPUSH: 62617.41      
LPOP: 62656.64      
RPOP: 62735.26      
SADD: 61425.06      
HSET: 62972.29      
SPOP: 64935.07      
LPUSH (needed to benchmark LRANGE): 62500.00      
LRANGE_100 (first 100 elements): 35273.37      
LRANGE_300 (first 300 elements): 16134.24      
LRANGE_500 (first 450 elements): 11917.53      
LRANGE_600 (first 600 elements): 9272.14      
MSET (10 keys): 54644.81      
# 3
PING_INLINE: 61500.61      
PING_BULK: 64143.68      
SET: 63131.31      
GET: 63979.53
INCR: 63451.78      
LPUSH: 62150.41      
RPUSH: 61652.28      
LPOP: 60350.03      
RPOP: 63051.70      
SADD: 63816.21      
HSET: 61842.92      
SPOP: 64599.48      
LPUSH (needed to benchmark LRANGE): 61804.70      
LRANGE_100 (first 100 elements): 33967.39      
LRANGE_300 (first 300 elements): 16315.88      
LRANGE_500 (first 450 elements): 11687.71      
LRANGE_600 (first 600 elements): 9197.09      
MSET (10 keys): 53966.54

Version 6.2.12【6.x最终版】
  • 内存分配器版本 mem_allocator:jemalloc-5.1.0
  • 延迟测试结果
# 1
150688768 total runs (avg latency: 0.0664 microseconds / 66.36 nanoseconds per run).
Worst run took 108059x longer than the average latency.
# 2
150739896 total runs (avg latency: 0.0663 microseconds / 66.34 nanoseconds per run).
Worst run took 94966x longer than the average latency.
# 3
151686617 total runs (avg latency: 0.0659 microseconds / 65.93 nanoseconds per run).
Worst run took 88433x longer than the average latency.
  • 性能测试结果【比5.x的多了ZADD、ZPOPMIN,汇总时不比对这几项】
# 1
PING_INLINE: 62617.41                                      
PING_MBULK: 63816.21                                       
SET: 60496.07
GET: 63051.70
INCR: 63291.14 
LPUSH: 60975.61
RPUSH: 61957.87
LPOP: 60532.69 
RPOP: 60024.01 
SADD: 63451.78 
HSET: 61804.70 
SPOP: 63371.36 
ZADD: 61312.08 
ZPOPMIN: 63251.11                                          
LPUSH (needed to benchmark LRANGE): 59701.50               
LRANGE_100 (first 100 elements): 34199.73                  
LRANGE_300 (first 300 elements): 15989.77                  
LRANGE_500 (first 500 elements): 10660.98                  
LRANGE_600 (first 600 elements): 9031.79                   
MSET (10 keys): 51759.83                                   
# 2
PING_INLINE: 61312.08                                      
PING_MBULK: 63694.27                                       
SET: 61124.69
GET: 60679.61
INCR: 62774.64 
LPUSH: 61050.06
RPUSH: 60496.07
LPOP: 60975.61 
RPOP: 62227.75 
SADD: 63171.20 
HSET: 61804.70 
SPOP: 63979.53 
ZADD: 57736.72 
ZPOPMIN: 62972.29                                          
LPUSH (needed to benchmark LRANGE): 60096.15               
LRANGE_100 (first 100 elements): 34013.61                  
LRANGE_300 (first 300 elements): 15676.44                  
LRANGE_500 (first 500 elements): 10571.94                  
LRANGE_600 (first 600 elements): 9108.30                   
MSET (10 keys): 54288.82                                   
# 3
PING_INLINE: 62695.92                                      
PING_MBULK: 61199.51                                       
SET: 62111.80
GET: 63131.31
INCR: 63532.40 
LPUSH: 60864.27
RPUSH: 61804.70
LPOP: 59880.24 
RPOP: 60422.96 
SADD: 62972.29 
HSET: 62227.75 
SPOP: 63211.12 
ZADD: 61500.61 
ZPOPMIN: 63051.70                                          
LPUSH (needed to benchmark LRANGE): 58651.02               
LRANGE_100 (first 100 elements): 33355.57                  
LRANGE_300 (first 300 elements): 15770.38                  
LRANGE_500 (first 500 elements): 10511.93                  
LRANGE_600 (first 600 elements): 9005.76                   
MSET (10 keys): 53937.43

Version 7.2-rc1【当前最新的发布候选版】

使用redis-cli -v实际显示的版本为redis-cli 7.1.240

  • 内存分配器版本 mem_allocator:jemalloc-5.2.1【有所升级】
  • 延迟测试结果
# 1
145147429 total runs (avg latency: 0.0689 microseconds / 68.90 nanoseconds per run).
Worst run took 110893x longer than the average latency.
# 2
144972616 total runs (avg latency: 0.0690 microseconds / 68.98 nanoseconds per run).
Worst run took 142175x longer than the average latency.
# 3
143717969 total runs (avg latency: 0.0696 microseconds / 69.58 nanoseconds per run).
Worst run took 323797x longer than the average latency.
  • 性能测试结果【比5.x的多了ZADD、ZPOPMIN、XADD,汇总时不比对这几项】
# 1
PING_INLINE: 59276.82                          
PING_MBULK: 60642.81                           
SET: 56657.22
GET: 57537.40
INCR: 56593.10
LPUSH: 56721.50                                
RPUSH: 57142.86                                
LPOP: 55524.71
RPOP: 57045.07
SADD: 57770.08
HSET: 55096.42
SPOP: 59453.03
ZADD: 57110.22
ZPOPMIN: 58788.95                              
LPUSH (needed to benchmark LRANGE): 56850.48   
LRANGE_100 (first 100 elements): 24863.25      
LRANGE_300 (first 300 elements): 10794.47      
LRANGE_500 (first 500 elements): 7001.82       
LRANGE_600 (first 600 elements): 5853.09       
MSET (10 keys): 42716.79                       
XADD: 51652.89
# 2
PING_INLINE: 59311.98                          
PING_MBULK: 60864.27                           
SET: 54945.05
GET: 58309.04
INCR: 59066.75
LPUSH: 56689.34                                
RPUSH: 55679.29                                
LPOP: 56433.41
RPOP: 54674.69
SADD: 56401.58
HSET: 56915.20
SPOP: 59136.61
ZADD: 55096.42
ZPOPMIN: 57803.47                              
LPUSH (needed to benchmark LRANGE): 54975.26   
LRANGE_100 (first 100 elements): 25207.96      
LRANGE_300 (first 300 elements): 10735.37      
LRANGE_500 (first 500 elements): 7007.71       
LRANGE_600 (first 600 elements): 5928.03       
MSET (10 keys): 42301.18                       
XADD: 49504.95
# 3
PING_INLINE: 59311.98                          
PING_MBULK: 58479.53                           
SET: 56053.81
GET: 58479.53
INCR: 58105.75
LPUSH: 56465.27                                
RPUSH: 57339.45                                
LPOP: 56053.81
RPOP: 54674.69
SADD: 58479.53
HSET: 57045.07
SPOP: 58616.65
ZADD: 57045.07
ZPOPMIN: 58004.64                              
LPUSH (needed to benchmark LRANGE): 55710.31   
LRANGE_100 (first 100 elements): 25163.56      
LRANGE_300 (first 300 elements): 10778.19      
LRANGE_500 (first 500 elements): 6926.17       
LRANGE_600 (first 600 elements): 5850.01       
MSET (10 keys): 42444.82                       
XADD: 49925.11

3.汇总分析

3.1 延迟测试结果汇总

7.1.240版本外,延迟结果相差不大。

3.1 性能测试结果汇总

7.1.240版本外,性能测试结果相差不大,相对最好的是5.0.14,稳定性上5.0.14和7.1.240比较好,综合来说当前服务器最好的版本为5.0.14

4.其他参数

这里列举下比较重要的配置项

配置项名称 配置项值范围 说明
daemonize yes、no yes表示启用守护进程,默认是no即不以守护进程方式运行。其中Windows系统下不支持启用守护进程方式运行。
port 指定 Redis 监听端口,默认端口为 6379。
bind 绑定的主机地址,如果需要设置远程访问则直接将这个属性备注下或者改为bind * 即可,这个属性和下面的protected-mode控制了是否可以远程访问 。
protected-mode yes 、no 保护模式,该模式控制外部网是否可以连接redis服务,默认是yes,所以默认我们外网是无法访问的,如需外网连接redis服务则需要将此属性改为no。
timeout 300 当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能
loglevel debug、verbose、notice、warning 日志级别,默认为 notice
databases 16 设置数据库的数量,默认的数据库是0。整个通过客户端工具可以看得到
rdbcompression yes、no 指定存储至本地数据库时是否压缩数据,默认为 yes,Redis 采用 LZF 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大。
dbfilename dump.rdb 指定本地数据库文件名,默认值为 dump.rdb
dir 指定本地数据库存放目录
requirepass 设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH 命令提供密码,默认关闭
maxclients 0 设置同一时间最大客户端连接数,默认无限制,Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息。
maxmemory XXX 指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区。配置项值范围列里XXX为数值。
目录
相关文章
|
13天前
|
存储 缓存 NoSQL
Redis持久化深度解析:数据安全与性能的平衡艺术
Redis持久化解决内存数据易失问题,提供RDB快照与AOF日志两种机制。RDB恢复快、性能高,但可能丢数据;AOF安全性高,最多丢1秒数据,支持多种写回策略,适合不同场景。Redis 4.0+支持混合持久化,兼顾速度与安全。根据业务需求选择合适方案,实现数据可靠与性能平衡。(238字)
|
21天前
|
测试技术 UED 开发者
性能测试报告-用于项目的性能验证、性能调优、发现性能缺陷等应用场景
性能测试报告用于评估系统性能、稳定性和安全性,涵盖测试环境、方法、指标分析及缺陷优化建议,是保障软件质量与用户体验的关键文档。
|
3月前
|
NoSQL 安全 Linux
设置Redis在CentOS7上的自启动配置
这些步骤总结了在CentOS 7系统上设置Redis服务自启动的过程。这些命令提供了一个直接且明了的方式,确保Redis作为关键组件在系统启动时能自动运行,保障了依赖于Redis服务的应用的稳定性和可用性。
389 9
|
5月前
|
NoSQL 算法 安全
redis分布式锁在高并发场景下的方案设计与性能提升
本文探讨了Redis分布式锁在主从架构下失效的问题及其解决方案。首先通过CAP理论分析,Redis遵循AP原则,导致锁可能失效。针对此问题,提出两种解决方案:Zookeeper分布式锁(追求CP一致性)和Redlock算法(基于多个Redis实例提升可靠性)。文章还讨论了可能遇到的“坑”,如加从节点引发超卖问题、建议Redis节点数为奇数以及持久化策略对锁的影响。最后,从性能优化角度出发,介绍了减少锁粒度和分段锁的策略,并结合实际场景(如下单重复提交、支付与取消订单冲突)展示了分布式锁的应用方法。
368 3
|
5月前
|
存储 监控 NoSQL
Redis设计与实现——单机Redis实现
Redis 是一个高性能的键值存储系统,支持丰富的数据结构(字符串、列表、哈希等)。其核心由键空间、过期字典和阻塞/监控键组成,通过惰性删除与定期删除策略管理过期数据。持久化方面,Redis 提供 RDB 快照和 AOF 日志两种机制,分别适用于快速恢复和高数据安全性场景。RDB 以二进制格式保存数据库快照,AOF 则记录写操作命令并支持重写优化文件大小。 此外,Redis 支持多数据库切换、内存淘汰策略(如 LRU)、慢查询日志等功能,满足不同业务需求。在生产环境中,推荐结合 RDB 和 AOF 的混合持久化方式,兼顾性能与数据安全。
|
8月前
|
消息中间件 缓存 NoSQL
Redis原理—5.性能和使用总结
本文详细探讨了Redis的阻塞原因、性能优化、缓存相关问题及数据库与缓存的一致性问题。同时还列举了不同缓存操作方案下的并发情况,帮助读者理解并选择合适的缓存管理策略。最终得出结论,在实际应用中应尽量采用“先更新数据库再删除缓存”的方案,并结合异步重试机制来保证数据的一致性和系统的高性能。
Redis原理—5.性能和使用总结
|
8月前
|
缓存 NoSQL Redis
Redis原理—2.单机数据库的实现
本文概述了Redis数据库的核心结构和操作机制。
Redis原理—2.单机数据库的实现
|
7月前
|
NoSQL Ubuntu 网络安全
在 Ubuntu 20.04 上安装和配置 Redis
在 Ubuntu 20.04 上安装和配置 Redis 的步骤如下:首先更新系统包,然后通过 `apt` 安装 Redis。安装后,启用并启动 Redis 服务,检查其运行状态。可选配置包括修改绑定 IP、端口等,并确保防火墙设置允许外部访问。最后,使用 `redis-cli` 测试 Redis 功能,如设置和获取键值对。
282 1
|
8月前
|
NoSQL API Redis
Redis Plus 来了,性能炸裂!
Redis Plus 来了,性能炸裂!
139 21
|
9月前
|
存储 监控 NoSQL
NoSQL与Redis配置与优化
通过合理配置和优化Redis,可以显著提高其性能和可靠性。选择合适的数据结构、优化内存使用、合理设置持久化策略、使用Pipeline批量执行命令、以及采用分布式集群方案,都是提升Redis性能的重要手段。同时,定期监控和维护Redis实例,及时调整配置,能够确保系统的稳定运行。希望本文对您在Redis的配置与优化方面有所帮助。
161 23