欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring整合redisson開啟緩存方式

 更新時間:2021年09月14日 14:27:24   作者:清墨跡染  
這篇文章主要介紹了spring整合redisson開啟緩存方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

spring整合redisson開啟緩存

先來了解幾個注解:

@Cacheable

表明所修飾的方法是可以緩存的:當?shù)谝淮握{(diào)用這個方法時,它的結果會被緩存下來,在緩存的有效時間內(nèi),以后訪問這個方法都直接返回緩存結果,不再執(zhí)行方法中的代碼段。

這個注解可以用condition屬性來設置條件,如果不滿足條件,就不使用緩存能力,直接執(zhí)行方法。

可以使用key屬性來指定key的生成規(guī)則。

支持如下幾個參數(shù):

  • value:緩存位置名稱,不能為空,如果使用EHCache,就是ehcache.xml中聲明的cache的name, 指明將值緩存到哪個Cache中
  • key:緩存的key,默認為空,既表示使用方法的參數(shù)類型及參數(shù)值作為key,支持SpEL,如果要引用參數(shù)值使用井號加參數(shù)名,如:#userId

@CachePut

與@Cacheable不同,@CachePut不僅會緩存方法的結果,還會執(zhí)行方法的代碼段。它支持的屬性和用法都與@Cacheable一致。

@CacheEvict

與@Cacheable功能相反,@CacheEvict表明所修飾的方法是用來刪除失效或無用的緩存數(shù)據(jù)。

有如下幾個參數(shù):

  • value:緩存位置名稱,不能為空,同上(可以理解成緩存得分區(qū))
  • key:緩存的key,默認為空,同上
  • condition:觸發(fā)條件,只有滿足條件的情況才會清除緩存,默認為空,支持SpEL
  • allEntries:true表示清除value中的全部緩存,默認為false
  • beforeInvocation:方法執(zhí)行前就清楚緩存,不管方法是否報錯

在這里插入圖片描述 在這里插入圖片描述

springboot配置加

spring.cache.type=redis

在啟動類開啟緩存

在這里插入圖片描述

設置緩存超時時間,單位毫秒

spring.cache.redis.time-to-live:1000

spring集成redisson踩過的坑

我用spring的xml集成一直報錯,所以只能選擇注解方式:

@Configuration
public class RedissionConfig { 
    Logger log = LoggerFactory.getLogger(RedissionConfig.class); 
    @Value("${redis_ip}")
    String redis_ip;
 
    @Value("${redis_port}")
    String redis_port;
 
    @Value("${redis_password}")
    String redis_password;
 
    @Bean(name="redissonClient")
   public RedissonClient init(){
        log.info("redis_ip:"+redis_ip);
        log.info("redis_port:" +redis_port);
        log.info("redis_password:"+redis_password);
        Config config = new Config();
        String url = "redis://"+redis_ip+":"+redis_port;
        log.info(url);
        config.useSingleServer().setAddress(url).setPassword(redis_password);
        RedissonClient redissonClient = Redisson.create(config);
        log.info("初始化RedissonClient");
        return redissonClient;
    } 
}

第一坑就是版本兼容問題,我用的Spring是4.2.7,第一次集成的是3.12.0,會報以下錯誤:

嚴重: Unable to process Jar entry [module-info.class] from Jar [jar:file:/C:/Users/Administrator/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-yaml/2.10.1/jackson-dataformat-yaml-2.10.1.jar!/] for annotations
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:133)
at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60)
at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209)
at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2134)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:2010)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1976)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1961)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1319)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
at java.util.concurrent.FutureTask.run(FutureTask.java)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)

所以把版本降低到3.10.0,就不會報錯了。

第二個坑是設置密碼問題,因為要區(qū)分多環(huán)境,所以把redis的信息寫到配置文件中,如果按照上面的配置,會報以下錯誤:

Caused by: org.redisson.client.RedisException: ERR Client sent AUTH, but no password is set. channel: [id: 0xe37c85e0, L:/192.168.0.128:54867 - R:192.168.0.128/192.168.0.128:5802] command: (AUTH), params: []
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:314)
at org.redisson.client.handler.CommandDecoder.decodeCommand(CommandDecoder.java:130)
at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:110)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502)
at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:366)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:656)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:591)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:508)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:470)
... 3 more

所以要判斷密碼是否為空,如果是空不做參數(shù)即可,下面是改正過的代碼:

public RedissonClient init(){
        log.info("redis_ip:"+redis_ip);
        log.info("redis_port:" +redis_port);
        log.info("redis_password:"+redis_password);
        Config config = new Config();
        String url = "redis://"+redis_ip+":"+redis_port;
        log.info(url);
        SingleServerConfig singleServerConfig = config.useSingleServer().setAddress(url);
        if(!StringUtils.isEmpty(redis_password)){
            singleServerConfig.setPassword(redis_password);
        }
        RedissonClient redissonClient = Redisson.create(config);
        log.info("初始化RedissonClient");
        return redissonClient;
    }

另外,網(wǎng)上的帖子好多直接放的ip+端口號,但是我本地會報錯,一定在加redis://192.168.2.128:6379這種格式的,可能是因為版本問題,也有可能就是誤導人的。

看到上面的報錯,感覺知道xml的錯誤了:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:redisson="http://redisson.org/schema/redisson"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-4.2.xsd
  http://redisson.org/schema/redisson
       http://redisson.org/schema/redisson/redisson.xsd">
<beans profile="development">
       <!--redisson -->
  <!--<redisson:client id="redissonClient">
   <redisson:single-server address="redis://182.92.97.141:5802"/>
  </redisson:client>-->
    </beans>

沒有設置密碼,一定不要把password屬性放上去,要不會報錯的。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java爬蟲爬取漫畫示例

    Java爬蟲爬取漫畫示例

    這篇文章主要介紹了Java爬蟲爬取漫畫示例,大部分的爬蟲入門教學都是爬取圖片的,本文就來測試一下爬取網(wǎng)站的漫畫,需要的朋友可以參考下
    2023-04-04
  • Mybatis內(nèi)置參數(shù)之_parameter和_databaseId的使用

    Mybatis內(nèi)置參數(shù)之_parameter和_databaseId的使用

    這篇文章主要介紹了Mybatis內(nèi)置參數(shù)之_parameter和_databaseId的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Spring?Data?Jpa返回自定義對象的3種方法實例

    Spring?Data?Jpa返回自定義對象的3種方法實例

    在使用Spring Data Jpa框架時,根據(jù)業(yè)務需求我們通常需要進行復雜的數(shù)據(jù)庫查詢,下面這篇文章主要給大家介紹了關于Spring?Data?Jpa返回自定義對象的3種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • 分布式面試消息隊列解決消息重復保證消息順序

    分布式面試消息隊列解決消息重復保證消息順序

    這篇文章主要介紹了分布式面試問題:分布式消息隊列如何解決消息重復并保證消息順序面試問題解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • spring mvc rest 接口選擇性加密解密詳情

    spring mvc rest 接口選擇性加密解密詳情

    這篇文章主要介紹了spring mvc rest 接口選擇性加密解密詳情,spring mvc rest接口以前是采用https加密的,但是現(xiàn)在需要更加安全的加密。而且不是對所有的接口進行加密,是對部分接口進行加密,接口返回值進行解密
    2022-07-07
  • Spring事務捕獲異常后依舊回滾的解決

    Spring事務捕獲異常后依舊回滾的解決

    本文主要介紹了Spring事務捕獲異常后依舊回滾的解決,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java讀寫文件方法總結(推薦)

    Java讀寫文件方法總結(推薦)

    下面小編就為大家?guī)硪黄狫ava讀寫文件方法總結(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • java實現(xiàn)酒店管理系統(tǒng)

    java實現(xiàn)酒店管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)酒店管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • 實例講解Java并發(fā)編程之變量

    實例講解Java并發(fā)編程之變量

    這篇文章主要介紹了實例講解Java并發(fā)編程之變量,本文講解了編寫線程安全需要關心的共享變量和可變變量,需要的朋友可以參考下
    2015-04-04
  • 利用Java正則表達式校驗郵箱與手機號

    利用Java正則表達式校驗郵箱與手機號

    利用Java正則表達式校驗郵箱與手機號。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10

最新評論