测试同学需要了解的redi的常见使用场景

乙醇 创建于 about 2 months 之前

最后更新: about 2 months 之前

阅读数: 1

测试同学需要了解的redi的常见使用场景

Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。

键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。

Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。

Redis的使用非常广泛,是测试同学需要了解的中间件之一,对我们设计测试场景和定位问题有比较大的帮助。

Redis的基本特点

  • 读写速度快: 比一般的数据库快
  • 可以持久化: 尽管redis可以持久化,但是不使用其持久化的场景也很多

Redis的数据类型

  • STRING: 字符串、整数或者浮点数,对整个字符串或者字符串的其中一部分执行操作,对整数和浮点数执行自增或者自减操作
  • LIST: 列表,从两端压入或者弹出元素,对单个或者多个元素进行修剪,只保留一个范围内的元素
  • SET: 无序集合
  • HASH: 包含键值对的无序散列表
  • ZSET: 有序集合,添加、获取、删除元素,根据分值范围或者成员来获取元素,计算一个键的排名,这个是支持排序的

使用场景

  • 计数器:比如某公众号推送一篇文章给几千万的粉丝,我们需要记录阅读量。由于每个用户都会产生一次的阅读记录,假设有上万的用户在同1秒产生了阅读数,那么1秒要写入上万次,对于数据库来说这个写入次数是比较巨大的,会带来比较大的性能压力。这时候就可以把阅读数先保存在redis里面,由于redis的吞吐量比较大,扛住的可能性会更高一些。等数据写入的差不多了在持久化到数据库就好了;

  • 缓存:将热点数据放到内存中,设置内存的最大使用量以及淘汰策略来保证缓存的命中率。比如站点的一些全局配置,每个用户都需要来拉一次,而且内容变化的频率很低,如果放数据库的话会对数据库宝贵的计算资源造成浪费,所以可以放到redis里,用户去redis缓存里读,降低了对数据库的访问量的同学要加速了配置拉取的速度;

  • 查找表:例如 DNS 记录就很适合使用 Redis 进行存储。查找表和缓存类似,也是利用了 Redis 快速的查找特性。但是查找表的内容不能失效,而缓存的内容可以失效,因为缓存不作为可靠的数据来源。

  • 消息队列:List 是一个双向链表,可以通过 lpush 和 rpop 写入和读取消息。比如可以把发送邮件的场景,因为邮件服务器的qps一般来说都不是特别高,如果同时发送很多邮件的话,对邮件服务器可能产生很大的压力。我们可以把邮件发送的消息放到redis里,让邮件服务器从redis一个接一个的读取和处理。不过更专业的消息队列场景最好使用 Kafka、RabbitMQ 等消息中间件。

  • 会话缓存: 可以使用 Redis 来统一存储多台应用服务器的会话信息。应用服务器不再存储用户的会话信息,也就不再具有状态,一个用户可以请求任意一个应用服务器,从而更容易实现高可用性以及可伸缩性。简单来说可以把登录态的一些信息也放redis里。

  • 共同好友: Set 可以实现交集、并集等操作,从而实现共同好友等功能;

  • 排行榜: ZSet 可以实现有序性操作,从而实现排行榜等功能;

  • 限制验证码的发送频率:一般我们收到短信验证码的时候,应用都会限制说60秒之后重新获取,这是为了防止有人恶意刷短信验证码,毕竟发验证码是要花钱的。用redis可以非常方便的实现这个功能。我们可以把用户id记录到redis里,并设置过期时间是60秒,这样60秒内用户再请求发送的时候就会发现该用户的发送记录已存在,60秒以后由于缓存自动过期,那么就可以重新再发送了;

以上是redis的一些非常简单的使用场景了,有兴趣的同学可以跟开发同学再多探讨一下自己业务里redis的具体使用方式。

0

相关课程

mockito简明教程
图文
mockito简明教程

课程分类: 测试工具

mock工具

  • 已完结
  • 已更新7集
  • 最后更新时间: 2024-03-18 12:50:29

免费

查看详情
requests从入门到精通
图文
requests从入门到精通

课程分类: 测试工具 接口测试

python接口测试必会

  • 已完结
  • 已更新16集
  • 最后更新时间: 2024-03-18 12:54:40

免费

查看详情
Locust实用教程
图文
Locust实用教程

课程分类: 性能测试 测试工具

python语言实现的非常出色性能测试工具

  • 已完结
  • 已更新9集
  • 最后更新时间: 2024-03-18 12:24:59

免费

查看详情
TDD测试驱动开发教程
图文
TDD测试驱动开发教程

课程分类: 测试框架 软件测试基础

TDD其实并不神秘

  • 已完结
  • 已更新7集
  • 最后更新时间: 2024-03-18 11:53:22

免费

查看详情
软件测试基础教程
图文
软件测试基础教程

课程分类: 软件测试基础

转码和转行必备

  • 已完结
  • 已更新9集
  • 最后更新时间: 2024-03-18 11:40:05

免费

查看详情
软件测试入门教程
图文
软件测试入门教程

课程分类: 软件测试基础

新人如何转码到软件测试

  • 已完结
  • 已更新9集
  • 最后更新时间: 2024-03-17 11:07:23

免费

查看详情