为了捡起以前学过的一个性能框架k6,拿现在公司的项目来上手,打算业务测试之余拿系统的接口跑跑性能。
本周的问题主要集中在k6脚本中引入redis的问题。因为项目系统的登录页面是涉及到验证码图片的,后端写了逻辑会把验证码的值写入在redis,所以登录的时候绕不开这个。再加上对js的生疏,所以本周一直在处理这个问题,记录一下。
验证码接口:'captcha-web/captcha/code/get',传参是个时间戳{'timestamp': int(round(time.time() * 1000))}。
一开始搜了下,在k6脚本中引入了ioredis,这是一个nodejs连接redis的方式,但是k6框架是不允许这么调用的。但总算也还是用nodejs的方式连接set,get成功了。
针对k6脚本,查看了官方的granafa/k6社区,使用的是xk6-redis
问题:连上了,但是一直get不到值,可以set,不能get
下载redis客户端,进去看了,确实是生成了
但就是一直client.get(),get不到具体的值。
解决:
https://k6.io/docs/javascript-api/k6-experimental/redis/client/client-get
忽略了这个get方法的返回值是个Promise体,陌生...
get后我console.log了,然后打印是{},打印类型是个object,然后就一直搁那转来转去,以为要转化才能打印出来
针对这个promise的类型,k6脚本需要指定的写法才能去获取使用,如图的example写法就能拿到了。被自己蠢到...
exportdefaultasyncfunction(){ await redisClient.set('mykey','myvalue',0) const exists =await redisClient.exists('mykey'); if(exists ===false){ thrownewError('mykey should exist'); } const value =await redisClient.get('mykey'); console.log(`set key 'mykey' to value: ${value}`); 标签:脚本,set,get,Redis,redis,k6,取值,mykey From: https://www.cnblogs.com/kingxyt06/p/17871786.html