十、mysql数据优化:缓存

本文介绍了缓存机制如何减轻数据库服务器的压力,并详细讲解了Redis性能测试方法,包括基本命令和参数,帮助读者理解缓存的重要性及如何评估Redis的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、缓存讲解

一般情况下是客户端发送请求,然后web服务器收集请求,然后直接发送给数据库服务器,数据库服务器进行处理之后反馈给web服务器,但是由于数据库服务器自身的处理能力有限,所以不能满足请求都能很快进行处理,为了减轻数据库服务器的性能压力,所以引进了缓存

首先,web服务器收集请求后会发送给缓存,缓存接收到服务器的请求后发送给数据库服务器,由数据库服务器处理之后将反馈信息返回给缓存,再由缓存返回给web服务器,缓存将数据库服务器处理返回的结果进行了保存,当日后web服务器发送了之前已经处理过的请求时,直接由缓存返回保留的对应的处理结果,不会再把请求发送到数据库服务器中,这样就大大减轻了数据库服务器的性能压力,缓存服务器的读写速度是数据库服务器处理速度的10倍甚至百倍以上

注意:当我们在进行性能压测时,若得知有缓存服务器的话,记得一定要进行参数化进行压测,不然得不到我们想要的结果,因为发送相同的请求,数据库服务器只会处理一次,其他的全是缓存服务器处理

缓存服务器在大部分公司使用的是redis

实例:例如web服务器发送1万次请求,在缓存服务器中会接收1万次请求,而数据库服务器只会接收到1次请求,即第一次请求,缓存服务器已经记录下了服务器返回的数据信息,当后面的9999次web服务器请求时,缓存服务器就直接返回记录的数据信息,就不会再发给数据库服务器了

二、Redis 性能测试(linux系统环境下)

Redis 性能测试是通过同时执行多个命令实现的,可以在linux系统中执行相应命令,redis会自动执行一些操作,然后返回执行操作后的时间,可以通过时间来判断redis的性能。

1、语法

redis 性能测试的基本命令如下:

redis-benchmark [option] [option value]

实例

以下实例同时执行 10000 个请求来检测性能,然后会执行下面的各种操作并记录执行的时间:

redis-benchmark -n 10000

 

PING_INLINE: 141043.72 requests per second

PING_BULK: 142857.14 requests per second

SET: 141442.72 requests per second

GET: 145348.83 requests per second

INCR: 137362.64 requests per second

LPUSH: 145348.83 requests per second

LPOP: 146198.83 requests per second

SADD: 146198.83 requests per second

SPOP: 149253.73 requests per second

LPUSH (needed to benchmark LRANGE): 148588.42 requests per second

LRANGE_100 (first 100 elements): 58411.21 requests per second

LRANGE_300 (first 300 elements): 21195.42 requests per second

LRANGE_500 (first 450 elements): 14539.11 requests per second

LRANGE_600 (first 600 elements): 10504.20 requests per second

MSET (10 keys): 93283.58 requests per second

redis 性能测试工具可选参数如下所示:

序号 选项 描述                                                                           默认值

1 -h 指定服务器主机名                                                       127.0.0.1

2 -p 指定服务器端口                                                       6379

3 -s 指定服务器 socket

4 -c 指定并发连接数                                                       50

5 -n 指定请求数                                                                10000

6 -d 以字节的形式指定 SET/GET 值的数据大小                2

7 -k 1=keep alive 0=reconnect                                   1

8 -r SET/GET/INCR 使用随机 key, SADD 使用随机值

9 -P 通过管道传输 <numreq> 请求                                   1

10 -q 强制退出 redis。仅显示 query/sec 值

11 --csv 以 CSV 格式输出

12 -l 生成循环,永久执行测试

13 -t 仅运行以逗号分隔的测试命令列表。

14 -I Idle 模式。仅打开 N 个 idle 连接并等待。

实例

以下实例我们使用了多个参数来测试 redis 性能:

redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 10000 -q

SET: 146198.83 requests per second

LPUSH: 145560.41 requests per second

以上实例中主机为 127.0.0.1,端口号为 6379,执行的命令为 set,lpush,请求数为 10000,通过 -q 参数让结果只显示每秒执行的请求数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值