在互联网行业大多数的应该系统都是分布式系统。并且为了优化系统,在架构设计的时候大多数都引入了缓存中间件 – 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 的性能压力测试。
各大互联网企业Java面试题汇总,如何成功拿到百度的offer
Java之Redis队列+Websocket+定时器实现跑马灯实时刷新
JAVA架构师成功拿到阿里P7offer,全靠这份2020最新面试题
Spring Cloud Gateway 自定义 ReadBodyPredicateFactory 实现动态路由
Spring Cloud Gateway 15 分钟极速入门
本文分享自微信公众号 - Java高级架构师(java968)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。