从支付服务简单聊聊缓存的正确使用姿势

前言

最近,花时间撸了一个支付(支付宝、微信)服务,可实现多商户、多应用界面数据化配置。对外提供应用ID以及秘钥,调用者只需要调用相关接口即可实现支付相关逻辑。

缓存

为什么会聊到缓存呢?当然是考虑到如果后期并发量上去了,频繁的调用接口,而接口又会对请求数据和本身数据库应用参数做一定的合法校验,这时候就会频繁的查询数据库应用数据信息。

其实项目中我们对于不易改动的信息没必要每次都去数据库查询,可以将查询结果放入缓存中,第二次调用时,直接在缓存中获取,不再经过数据库。

这时候,只要引入几个小小的注解,就可以轻松搞定,不带修改一丝丝业务逻辑。

启动类上加 @EnableCaching 实现缓存管理:

/**
 * 启动类
 * @author 小柒2012
 */
@EnableCaching
@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    private static final Logger logger = LoggerFactory.getLogger(Application.class);

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
        logger.info("PayCloud 支付系统");
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}

微信配置接口参数,前一个保存并实现缓存逻辑,后一个读取缓存:

@Override
@Transactional(rollbackFor=Exception.class)
@CacheEvict(cacheNames="wxPayConfig",key="#config.tenantId")
public Result saveWxConfig(WxPayConfig config) {
    wxPayConfigRepository.saveAndFlush(config);
    return Result.ok();
}

@Override
@Cacheable(cacheNames = "wxPayConfig", key="#tenantId")
public WxPayConfig getWxConfig(Long tenantId) {
    String nativeSql = "SELECT * FROM app_wxPay_config WHERE tenant_id=?";
    WxPayConfig config = dynamicQuery.nativeQuerySingleResult(WxPayConfig.class,
            nativeSql,new Object[]{tenantId});
    return config;
}

小结

配置类的信息,基本不大会变动,如果并发读取比较大,还是墙裂建议使用缓存的,但是一定要有一定的更新策略。本次案例使用的是应用内缓存,生产环境可以使用分布式缓存 Redis 代替。

源码:https://gitee.com/52itstyle/easy-pay

演示

地址:https://pay.cloudbed.vip

账号:pay 密码:123456

END -

 SpringBoot 开源的小说和漫画在线阅读网站

分享六个经典的 SpringBoot 开源项目

一套通用的后台管理系统,赚钱就靠它了!

SpringBoot 开发案例之接入腾讯云短信

推荐一款基于 Java 的身份证号码识别系统

分享一个支付大屏实时监控数据平台

推荐一款清爽的实时监控大屏附安装教程

微信支付收银台功能上线了

支付宝支付新版 SDK 上线,让支付触手可及

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值