广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用@CachePut 更新数据库和更新缓存
  • 670
分享到

使用@CachePut 更新数据库和更新缓存

2024-04-02 19:04:59 670人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录关于更新缓存 ,要注意两点1、@Cacheable的key2、@CachePut的返回值缓存的CachePut冲突Cacheable可以分解成两个关于更新缓存 ,要注意两点 1、

关于更新缓存 ,要注意两点

1、@Cacheable的key

要和@CachePut 的key一致

比如:


  @Cacheable(key = "'userCache'") //缓存,
    public Uuser findByEmail(String email) { 
        System.err.println("执行这里,说明缓存中读取不到数据,直接读取数据库....");
        return RedisMapper.findByEmail(email);
    }
  @CachePut(key = "'userCache'") //userCache要加‘'单引号,表示这是一个字符串
    public Uuser updateSelf(String nickname, String email) {
        System.err.println("执行这里,更新数据库,更新缓存....");
        uuserMapper.updateSelf(nickname, email);
        Uuser uuser = redisMapper.findByEmail(email); 
        return uuser;  
    }

2、@CachePut的返回值

要和@Cacheable的返回值一样

如果@Cacheable 返回的是一个对象,@CachePut 返回也要是对象,否则会报类型转换异常,如上代码 返回的都是 Uuser.

缓存的CachePut冲突Cacheable

CachePut 跟 Cacheable放在一起, Cacheable的效果就跟 CachePut 一样的,每次都会去查数据库,虽然有缓存。



@Caching( put = {
        @CachePut(key = "T(cn.a.b.constant.RedisKey).OPEN_MEDIUM_INFO + #result.mediumBankCard", unless="#result.mediumBankCard==null or #result.status !='2'"),
        @CachePut(key = "T(a.b.c.constant.RedisKey).ACCOUNT_CODE + #result.accountCode", unless="!{'0','1','2','3'}.contains(#result.mediumStatus)"),
        @CachePut(key = "T(a.b.c.constant.RedisKey).CERT_NO+ #result.certNo", unless="#result.certNo==null or !{'0','1','2','3'}.contains(#result.status)")
}
, cacheable = {@Cacheable(key="T(a.b.c.constant.RedisKey).ID  + #id")}
)
public XXXInfo selectByPrimaryKey(Long id){
    return mapper.selectByPrimaryKey(id);
}

可以分解成两个


Service.java

@Caching( put = {
        @CachePut(key = "T(cn.a.b.constant.RedisKey).OPEN_MEDIUM_INFO + #result.mediumBankCard", unless="#result.mediumBankCard==null or #result.status !='2'"),
        @CachePut(key = "T(a.b.c.constant.RedisKey).ACCOUNT_CODE + #result.accountCode", unless="!{'0','1','2','3'}.contains(#result.mediumStatus)"),
        @CachePut(key = "T(a.b.c.constant.RedisKey).CERT_NO+ #result.certNo", unless="#result.certNo==null or !{'0','1','2','3'}.contains(#result.status)")
}
)
public XXXInfo selectByPrimaryKey(Long id){
    return mapper.selectByPrimaryKey(id);
} 

Mapper.java
{
    @Cacheable(key="T(a.b.c.constant.RedisKey).ID  + #p0")
    XXXXInfo selectByPrimaryKey(Long id);
}

mybatis 接口类参数。用#参数名无效。 只能用#p0, #p1

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 使用@CachePut 更新数据库和更新缓存

本文链接: https://www.lsjlt.com/news/161008.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用@CachePut 更新数据库和更新缓存
    目录关于更新缓存 ,要注意两点1、@Cacheable的key2、@CachePut的返回值缓存的CachePut冲突Cacheable可以分解成两个关于更新缓存 ,要注意两点 1、...
    99+
    2022-11-12
  • 如何使用@CachePut更新数据库和更新缓存
    小编给大家分享一下如何使用@CachePut更新数据库和更新缓存,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!关于更新缓存 ,要注意两点1、@Cacheable的...
    99+
    2023-06-22
  • 在高并发场景下,先更新缓存还是先更新数据库
    本篇内容主要讲解“在高并发场景下,先更新缓存还是先更新数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在高并发场景下,先更新缓存还是先更新数据库”吧!在大型...
    99+
    2022-10-18
  • MySQL数据库和Redis缓存一致性的更新策略
    目录一、更新策略二、读写缓存1、同步直写策略2、异步缓写策略三、双检加锁策略四、数据库和缓存一致性的更新策略1、先更新数据库,再更新Redis2、先更新缓存,再更新数据库3、先删除缓存,再更新数据库延时双删4、先更新数据...
    99+
    2023-04-12
    MySQL和Redis缓存一致性更新 MySQL和Redis缓存一致性
  • 用sql语句数据库更新创建时间和更新时间
    文章目录 前言一、sql更新时间方法总结 前言 用@TableField注解注入,从而更新时间,这种是常用的。还有一种方法,直接用sql语句更新。 下面介绍第二种方法。 一、sql更新...
    99+
    2023-09-01
    数据库 sql mysql
  • 如何更新缓存吗?如何保证缓存和数据库双写一致性?
    目录 前言 先更新数据库,再更新缓存 先更新缓存,再更新数据库 先删除缓存,再更新数据库 先更新数据库,再删除缓存 删除缓存失败,导致不一致 读写分离,导致不一致 前言 在项目中缓存是经常用到的,为了减...
    99+
    2022-10-18
  • MySQL数据库和Redis缓存一致性的更新策略是什么
    这篇文章主要介绍“MySQL数据库和Redis缓存一致性的更新策略是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL数据库和Redis缓存一致性的更新策略是什么”文章能帮助大家解决问题。...
    99+
    2023-07-06
  • PHP开发缓存的数据存储与更新策略
    PHP开发缓存的数据存储与更新策略,需要具体代码示例在Web应用程序中,缓存是提高性能和响应速度的重要工具。缓存可以大大减少资源获取的时间和响应的延迟,从而提高系统的效率和用户的满意度。在PHP开发中,缓存技术的应用和优化是非常重要的,本文...
    99+
    2023-11-07
    缓存 数据存储 PHP开发
  • mybatis 实现插入或更新数据功能,数据存在时只更新
    需求 提供一个接口,既能保证新数据的插入操作,又能在数据存在时进行数据更新操作 实现:on duplicate key update 在mysql中,提供有on duplicate key updat...
    99+
    2023-09-08
    mybatis 数据库 mysql
  • 如何使用PHP缓存函数实现实时更新?
    在现代Web开发中,缓存是一个非常重要的概念。缓存可以帮助我们减少服务器的负担,提高网站的访问速度。在PHP中,有很多缓存函数可以帮助我们实现这个目标。在本文中,我们将介绍如何使用PHP缓存函数实现实时更新。 一、什么是缓存? 在计算机领...
    99+
    2023-08-11
    缓存 函数 实时
  • 有哪些PHP缓存函数可以实时更新数据?
    PHP缓存函数在Web开发中扮演着重要的角色,可以提高Web应用程序的性能和响应速度。但是,在实时更新数据的情况下,缓存函数的选择就变得更加重要了。本文将介绍一些PHP缓存函数,它们可以在实时更新数据的情况下使用。 什么是PHP缓存函数? ...
    99+
    2023-08-11
    缓存 函数 实时
  • 如何使用ECharts和php接口实现统计图的数据缓存和更新
    如何使用ECharts和php接口实现统计图的数据缓存和更新在Web应用程序中,经常需要使用统计图来展示数据分析结果。ECharts是一个流行的开源JavaScript图表库,可以帮助我们创建各种类型的交互式统计图。然而,当数据量非常大或者...
    99+
    2023-12-17
    PHP echarts 数据缓存
  • MySQL数据库的更新语句
    本篇内容主要讲解“MySQL数据库的更新语句”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库的更新语句”吧!  一、INSERT和REPLACE ...
    99+
    2022-10-18
  • MYSQL更新数据库charset设置
    查询符合条件的数据表SELECT DISTINCT TABLE_NAME  FROM information_schema.COLUMNS WHERE T...
    99+
    2023-05-15
    sql
  • PHP开发中如何使用Memcache进行高效的数据缓存和更新?
    Memcache是一种高速分布式内存对象缓存系统,能够将常用的数据存储在内存中,从而使得系统能够更高效地读取和写入数据。对于PHP开发者来说,使用Memcache进行数据缓存和更新是一种非常好的实践,本文将讲解如何在PHP开发中使用Memc...
    99+
    2023-11-07
    PHP Memcache 缓存更新
  • 怎么使用java多线程更新数据库
    要在Java中使用多线程更新数据库,可以按照以下步骤进行操作:1. 导入所需的 Java 类库:   ```ja...
    99+
    2023-09-21
    java 数据库
  • 如何使用Redis实现分布式缓存更新
    如何使用Redis实现分布式缓存更新在分布式系统中,缓存起到了重要的作用,可以大大提升系统的性能和可扩展性。而Redis作为一种高性能的内存数据库,常用于分布式缓存的实现。本文将为您介绍如何使用Redis实现分布式缓存的更新,并给出具体的代...
    99+
    2023-11-07
    分布式 redis 缓存更新
  • Mybatis新增数据,存在就更新,不存在就添加
    一 、常规方法 先查询是否存在,存在就更新,不存在就添加. 如果数据量过大, 使用foreach批量操作 举例: 集合唯一索引  id 可以查询所有的id集合idSet,  使用in idSet查询那些存在, 返回结果集ol...
    99+
    2023-09-08
    mybatis java mysql
  • django怎么批量更新数据库
    在Django中,可以使用update()方法对数据库进行批量更新操作。以下是一个示例: 假设有一个名为Book的模型,该...
    99+
    2023-10-24
    django 数据库
  • MAC更新和使用composer
    最近有新项目需要搭建,发现composer安装项目有报错信息 PHP Deprecated: Return type of Symfony\Component\Console\Helper\HelperSet::getIterator()...
    99+
    2023-08-31
    macos composer php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作