首页 > 其他分享 >这是一个空白文档

这是一个空白文档

时间:2023-08-12 21:35:51浏览次数:42  
标签:p0 缓存 这是 cacheNames 空白 Cacheable 文档 key new

添加依赖:spring-boot-starter-data-redis和spring-boot-starter-cache

在具体Redis应用中有2种方式:编程和注解

注解缓存应用开发
@Cacheable如果缓存中不存在目标值,则将调用目标方法并将返回的值存入缓存;如果存在,则直接返回缓存中的值,不会执行方法体。即使方法体内进行了数据库的更新操作,也不会执行。坑就是在condition中使用固定写法result
@Cacheable(key="'abcde'",cacheNames = "users") 需要配置cacheNames否则报错。对应生成的key为【cacheNames::key值】。Key值如果使用字符串固定值,则使用单引号括起来,如果使用方法的参数变量#p0用于指代第一个参数,第二个参数为#p1,依次类推。允许对多个方法参数执行拼接生成key值,例如@Cacheable(key="#p1+#p0");如果是复杂类型可以访问参数的属性值@Cacheable(key="#p0.username+#p0.password"),并且允许调用请求参数的方法@Cacheable(key="#p0.getMyId()")
还可以在业务类上添加注解@CacheConfig(cacheNames = "users")进行统一配置
条件应用注解缓存@Cacheable(key="#p0.getMyId()",unless = "#result!=null")

@CachePut 如果缓存中先前存在目标值,则更新缓存中的值为该方法的返回值;如果不存在,则将方法的返回值存入缓存。永远不会获取缓存数据
@CacheEvict 如果缓存中存在存在目标值,则将其从缓存中删除
使用注解配置,则需要在启动类或者JavaConfig配置类上加入@EnableCaching注解

RedisConfig配置类
@Bean
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());生成的key值第一部分为类名称
sb.append(method.getName()); 生成的key值第二部分为方法名称
for (Object obj : params) { sb.append(obj.toString()); }生成的可以值第三部分为方法参数
return sb.toString();
}
};
}

@Bean
public CacheManager cacheManager(RedisConnectionFactory lettuceConnectionFactory) {
RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig();
// 设置缓存管理器管理的缓存的默认过期时间 defaultCacheConfig = defaultCacheConfig.entryTtl(Duration.ofSeconds(defaultExpireTime))
// 设置 key为string序列化 .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
// 设置value为json序列化 .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()))
// 不缓存空值 .disableCachingNullValues();

    Set<String> cacheNames = new HashSet<>();
    cacheNames.add(userCacheName);

    // 对每个缓存空间应用不同的配置        Map<String, RedisCacheConfiguration> configMap = new HashMap<>();
    configMap.put(userCacheName, defaultCacheConfig.entryTtl(Duration.ofSeconds(userCacheExpireTime)));  设置默认的生存周期
    RedisCacheManager cacheManager = RedisCacheManager.builder(lettuceConnectionFactory)
            .cacheDefaults(defaultCacheConfig)
            .initialCacheNames(cacheNames)
            .withInitialCacheConfigurations(configMap)
            .build();
    return cacheManager;
}

标签:p0,缓存,这是,cacheNames,空白,Cacheable,文档,key,new
From: https://www.cnblogs.com/li-len/p/17625563.html

相关文章

  • 编写一份接口需求文档
    一、什么是接口百科上对接口的定义:API(ApplicationProgrammingInterface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。理解一下为什么要用接口?两个独立的系统,它们的......
  • 这是我的责任
    那年暑假的一天,我与妈妈随爸爸一起到金山农场值班。夜里十一点,“麦莎”台风如期而至,雨越下越大,风越刮越急,爸爸和工人们都紧张地注视着大棚,大棚里刚培育了一批蔬菜秧苗,这批苗是一家出口蔬菜厂的订单,所以容不得有半点闪失!突然,一个大棚上的薄膜不堪重负被风吹烂了,薄膜在狂风中摇......
  • 点进来看看产品手册文档可以用在哪些地方吧
    产品手册文档目的是给用户提供关于某个产品或服务的详细信息和指导。它通常用来向用户、客户、合作伙伴或内部员工传达关于产品的功能、特性、使用方法和操作指南。如果你的企业刚好有这方面的相关需求的话,不妨看看looklook的这篇文章哟!产品手册文档的应用场景1.客户支持:产品手册文......
  • 【您的意见很重要】天翼云文档“找茬”活动
    文档共建,有您一份。天翼云诚邀您参与文档“找茬”活动。在体验天翼云文档过程中,发现文档中存在的问题并进行反馈,我们会指定处理专员,及时聆听您的声音、解决您反馈的问题,您更有机会获得丰厚礼品。天翼云坚持,每一位用户的意见都很重要,不断提升文档体验,构筑更懂您的上云服务。  ......
  • 【您的意见很重要】天翼云文档“找茬”活动
    文档共建,有您一份。天翼云诚邀您参与文档“找茬”活动。在体验天翼云文档过程中,发现文档中存在的问题并进行反馈,我们会指定处理专员,及时聆听您的声音、解决您反馈的问题,您更有机会获得丰厚礼品。天翼云坚持,每一位用户的意见都很重要,不断提升文档体验,构筑更懂您的上云服务。面向用户......
  • seamless-Immutable API(中文文档)
    seamless-Immutableseamless-Immutable是一套轻量级的持久化数据结构库,seamless-immutable并没有实现完整的PersistentDataStructure而是使用Object.defineProperty(因此只能在IE9及以上使用)扩展了JavaScript的Array和Object对象来实现,只支持Array和Object两种......
  • SourceTree git报错 这是一个无效源路径/URL的
    首先根据网上查询的资料排查账号信息,账号信息正常,git客户端也安装了 解决问题:git支持未打开  未打开的样式类似下面 ......
  • 文档控件DevExpress Office File API v23.1新版亮点 - 支持.NET MAUI
    DevExpressOfficeFileAPI是一个专为C#,VB.NET和ASP.NET等开发人员提供的非可视化.NET库。有了这个库,不用安装MicrosoftOffice,就可以完全自动处理Excel、Word等文档。开发人员使用一个非常易于操作的API就可以生成XLS,XLSx,DOC,DOCx,RTF,CSV和SnapReport等企业级文......
  • 店铺营业状态设置_功能测试&文档接口的分类
       ......
  • Spark安装(黑马程序员文档)
    SparkLocal环境部署下载地址Sparkhttps://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.4.1/Anacondahttps://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=M&O=A条件PYTHON推荐3.8JDK1.8AnacondaOnLinux安装本次课程的Python环境需要安装到Linux......