确保服务稳定 Redis 上线之前应该做的事

在互联网行业大多数的应该系统都是分步式系统。并且为了优化系统,在架构设计的时候大多数都引入了缓存中间件 – Redis。相对于 memcache 缓存中间件只支持字符串类型, Redi 拥有更多的数据类型。

  • string:字符串是一种基本的数据类型,用于保存 key/value 类型的数据
  • hash:哈希是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象
  • list:列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)
  • set:集合是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
  • sorted sets:有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

一般情况下 Redis 可用于使用于以下应用场景

  • 缓存
  • count – 计数
  • 展示最近、最热、点击率最高、活跃度最高等等条件的 Top List
  • 用户最近访问记录也是 Redis List 很好的应用场景
  • 通过 List 和 lpop 及 lpush 接口进行队列的写入与消费
  • Redis 的 Lua 的功能扩展实际给 Redis 带来了更多的应用场景,可以编写若干 command 组合作为一个小型的非阻塞事务或者更新逻辑
  • Redis 提供的主从数据同步功能,其实是对 cache 的一个强有力功能的扩展

Redis 在系统中有这么多的就用场景那么在上线之前我们应该对 Redis 进行性能测试,这样才能让 Redis 在不同的服务器上能够更好的为我们的服务服务。

在这里插入图片描述
在我们 Redis 安装成功之后,在 ${redis_home}/src 目录中一般会包含以下命令:

  • redis-server:redis 服务器启动命令
  • redis-cli:redis 连接连接服务器的客户端命令
  • redis-benchmark:redis 性能检测命令

其它的我们暂时不讨论,今天主要的讨论的就是 redis-benchmark 这个 redis 性能检测命令。我们输出redis-benchmark --help,就可以查看它的帮助命令。并且它还会给我们一些举例:
在这里插入图片描述
里面的单词比较简单我就不做过多介绍了,下面就以我的 mac 为例为大家举例几个比较常用的检测,以下就是我的电脑配置:

在这里插入图片描述
下面就为大家举例如何使用 Redis 做性能压力测试:

1 所有数据的压力测试

可以使用以下命令对 Redis 所有的数据类型做压力测试:

redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000

这个命令的意思:检测服务器 127.0.0.1:6379 ,100 个并发连接,100000 个请求,检测服务器性能。

在这里插入图片描述
控制台会打印以上信息主要包括以下几个点:

  • 需要压力测试的命令
  • 100000 个命令执行时间所占的百分比
  • 每秒钟可以处理多少个请求

2、固定数据大小的测试

测试存储大小为 100 kb 的数据包的性能

redis-benchmark -h 127.0.0.1 -p 6379 -q -d 100

以下是测试结果:
在这里插入图片描述
大多数每秒处理数据在 10 万以上。哈哈,看来我的电脑性能还不错。

3、针对特定命令测试

在大多数系统当中,我们只会使用到比如 get/set 的命令,那么我们在做性能测试的时候就只需要对 get/set 命令进行性能测试就可以了。

redis-benchmark -h 127.0.0.1 -p 6379 -t set,get -n 100000 -q

以下就是测试结果:
在这里插入图片描述
在控制台只会打印 get/set 命令每秒钟能够处理多少个请求。

4、利用 Lua 脚本测试

Redis 在做性能压力测试的时候,同样也可以使用 Lua 脚本。

redis-benchmark -h 127.0.0.1 -p 6379 -n 100000 -q script "redis.call('set', 'foo', 'bar')"

上面的测试目的只是测试某些数据的存储性能 。

以下就是控制台的打印:

在这里插入图片描述

当然这里只是罗列了几个场景,大家可以根据自己的业务场景进行 Redis 的性能压力测试。

发布了184 篇原创文章 · 获赞 231 · 访问量 71万+

猜你喜欢

转载自blog.csdn.net/u012410733/article/details/104875105