软件测试工程师也需要懂的Redis

前言 

现在测试工程师面试难度越来越大,关于技术方面考察,很多面试官经常会问你是否了解过Redis缓存中间件,这道题一方面是考察你是否对后端技术有一定了解,另一方面也考察你测试工作的深浅。

所以本文将通过上下两篇文章,由浅到深、由易到难列举Redis相关面试题,为你弥补缓存中间件的知识盲点,帮助大家在面试中,缓存中间件这块满分通过。

同时,在这我准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺这份测试文档资料也打包在里面啦,免费领取!

软件测试视频教程观看处:

2023最新【软件测试面试300问】面试八股文教程,涵盖自动化测试/接口测试/性能测试/测试开发等内容

1.Redis是什么?为啥性能好?

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis是现在最受欢迎的NoSQL数据库之一。

首先,采用了多路复用io阻塞机制
然后,数据结构简单,操作节省时间
最后,运行在内存中,自然速度快

2.数据类型?常见的命令?

有多种数据类型,最常用的就是以下几种

String 字符串类型


set name junchow
get name

set age 20
get age

incr age
decr age

Hash 数据类型


/设置值
hset userinfo name junchow
//解析
hset : cmd
key: userinfo
value: name junchow
//等价于
$userinfo = array('name'=>'junchow')
//获取值
hget userinfo name

List 链表数据

链表类型类似于队列或栈的数据结构,链表可视为存储数据的容器.链表的左侧被称为头部,右侧被称为尾部.

链表可模拟出队列(先进先出),也可以模拟栈(先进后出)


//从左侧装入 lpush
lpush link1 A
lpush link1 B
//从右侧转入 rpush
rpush link2 A
rpush link2 B

Set 无序集合类型


//向集合setvar添加元素
sadd setvar 1
sadd setvar 2
sadd setvar 3

//从集合setvar中获取元素
smembers setvar

//判断元素1是否在集合setvar中,成功返回1,失败返回0
sismember setvar 1

//从集合中移除元素,成功返回1,失败返回0
srem setvar 1

//从集合中随机弹出元素
spop setvar

//使用sunion求集合并集
sunion setvar myset

Zset 有序集合类型


//添加集合元素
zadd class:php 1 asion
zadd class:php 2 mark
zadd class:php 3 lily
zadd class:php 4 jack

//获取集合元素
zrange class:php 0 -1

//获取集合内容时显示权重信息
zrange class:php 0 -1 withscores

3有几种持久化方式?优缺点?

RDB (Redis DataBase): redis按一定周期将内存中的数据同步到磁盘文件中,

RDB优点就是恢复大的数据集的时候,RDB方式会更快些,但是可能会造成数据丢失,因为周期内redis宕机以后,不会记录数据。

AOF (Append Only File): redis会把数据造成更改的命令追加到日志文件中,再下次重启时执行日志文件中的命令,达到数据的还原,

AOF 优点就是可以更好的保护数据不丢失,AOF开启后支持写的QPS会比RDB支持的写的QPS低,因为AOF一般会配置成每秒fsync(同步磁盘)操作,每秒的fsync操作还是很高的,目前很多项目都是混合使用。

4.数据库和缓存的处理流程?

如截图:

5.缓存雪崩,缓存击穿,缓存穿透?

老掉牙的面试题了,感觉只要说到redis,面试官几乎都会提这三个概念,重点理解概念和应对措施

缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。

解决方案:即使数据库和缓存都查询不到,也要在redis缓存一份数据;另外一种布隆过滤器。

缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。

解决方案:热点数据毕竟只有少数,可以设置成永不过期。

缓存雪崩:当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力。

解决方案:一过期时间加个随机数,保证热点数据不会同是过期。

6.你的项目哪些功能用到了?

一般项目的登录的Token、修改频率较低的数据放进缓存、分布式锁、幂等性校验等等。

总结与分享

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值