测试平台系列(78) 编写Redis配置管理功能(上)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生内存数据库 Tair,内存型 2GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
简介: 编写Redis配置管理功能(上)

大家好~我是米洛


我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持。


回顾


上一节我们编写了测试计划相关功能。由于我们的数据构造器(前置条件)还有一些不完善的,所以我们这段时间要开始完善redis相关内容。

如果把redis看做数据库的话,我们也是需要编写对应的连接配置页面的,编写完以后我们需要接入前置条件,也得能够在页面上在线执行redis命令。这些都会是接下来几天的任务。

成果图


1.jpg

image

设计Redis配置表


redis和mysql比较类似,有一些共通的部分:

  • host
  • port
  • username
  • password
  • database
    在redis中是一片一片的db,一般是0-15。而Mysql则是一个具体的库。
    除此之外,二者区别很小。主要提现在:
  • redis分为集群和单例模式,集群是可以不输入用户密码的
  • 一般redis的连接串会把host和port合到一起,便于我们进行集群管理
    所以总结起来就是,我们基本可以照搬MySQL配置表。


from sqlalchemy import Column, INT, String, Boolean, UniqueConstraint
from app.models.basic import PityBase
class PityRedis(PityBase):
    __tablename__ = "pity_redis_info"
    __table_args__ = (
        UniqueConstraint('env', 'name', 'deleted_at'),
    )
    env = Column(INT, nullable=False)  # 对应环境id
    name = Column(String(24), nullable=False)  # redis描述名称
    addr = Column(String(128), nullable=False)
    username = Column(String(36), nullable=False)
    password = Column(String(64), nullable=False)
    db = Column(INT, nullable=False)
    # 是否是集群,默认为false,集群可不输入用户密码
    cluster = Column(Boolean, default=False, nullable=False)
    def __init__(self, env, name, addr, username, password, db, cluster, user):
        super().__init__(user)
        self.env = env
        self.name = name
        self.addr = addr
        self.password = password
        self.username = username
        self.db = db
        self.cluster = cluster

可以看到,他几乎和MySQL差不多。那我们来按照管理编写增删改查接口。

编写Dao层


其实按照惯例,我估计又从之前的DbConfigDao.py复制出代码然后改一改了。

但这次我不打算这么做了,因为其实每次写的增删改查代码虽然不完全一样,但都很像啊!!!

所以如果能有个办法可以省略这些操作,那么一个后端接口就很快能够写出来了~

对于我们这样简易的接口测试平台,是事半功倍的。


其实思路来源于Mybatis Plus,这个框架的好处就是封装了selectList,selectById等常用api,导致哥们都不需要编写具体的select方法,直接传入查询条件就可以了。

update更是离谱,传入一个新对象即可。

所以可以看到具体的mapper都是继承BaseMapper,就可以完成对应的操作。

可能大家没有具体的概念,我先给大家展示下半成品:

2.jpg

可以看到类里面都没有任何方法

使用方式


3.jpg

image

可以看到,需要精确查找就直接传入,需要模糊查询的则加上like。


看起来是非常美好,有兴趣的朋友可以测试一下。


今天的内容到这就结束了,下一节我们继续完善这个Mapper基类中的方法,并实现一个完整的demo简化开发。


思路虽然是原创,但难免和其他人碰到一起,其实大家做的测试平台思路大体都是一致的,所以如果遇到高度相似的,真的还是纯属巧合。




相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
14天前
|
Kubernetes 测试技术 Perl
混沌测试平台 Chaos Mesh
混沌测试平台 Chaos Mesh
34 1
|
6天前
|
运维 Kubernetes 监控
|
4天前
|
NoSQL Java Linux
Jedis测试redis。(redis在linux虚拟机中)
该博客文章提供了使用Jedis客户端连接Linux虚拟机中的Redis服务器的步骤,包括Maven依赖配置、测试用例编写以及测试结果的截图。
|
16天前
|
缓存 算法 Java
非功能需求的测试
非功能需求的测试
15 2
|
25天前
|
存储 NoSQL Java
Java中使用redis的bitMap实现签到功能
这个实现示例提供了一种灵活、高效的方式,展示了如何使用Redis来解决现实中的问题。
26 2
|
4天前
|
存储 NoSQL Java
基于SpringBoot+Redis实现查找附近用户的功能
使用Redis的GEO命令结合SpringBoot实现查找附近用户的功能,通过`GEOADD`命令添加地理位置信息和`GEORADIUS`命令查询附近用户。
9 0
|
4天前
|
存储 NoSQL Redis
基于SpringBoot+Redis实现点赞/排行榜功能,可同理实现收藏/关注功能,可拓展实现共同好友/共同关注/关注推送功能
在SpringBoot项目中使用Redis的Set和ZSet集合实现点赞和排行榜功能,并通过示例代码展示了如何使用`stringRedisTemplate`操作Redis来完成这些功能。
23 0
|
4天前
|
JavaScript 前端开发 应用服务中间件
【qkl】JavaScript连接web3钱包,实现测试网络中的 Sepolia ETH余额查询、转账功能
【区块链】JavaScript连接web3钱包,实现测试网络中的 Sepolia ETH余额查询、转账功能
|
18天前
|
机器学习/深度学习 自然语言处理 算法
测试FunAudioLLM在性能、功能、技术先进性等跟国际知名语音大模型进行比较。
测试FunAudioLLM在性能、功能、技术先进性等跟国际知名语音大模型进行比较。
|
25天前
|
监控 NoSQL Redis
Redis性能优化问题之配置 Redis 的自动碎片整理功能,如何解决
Redis性能优化问题之配置 Redis 的自动碎片整理功能,如何解决