• jetCache整合本地、远程缓存使用redis


    目录

    一 jetCache简介

    二 jetCache整合远程缓存

    1 添加依赖

    2 配置文件

    3 引导类加注解

    4 实现类

    三 jetCache整合本地缓存


    一 jetCache简介

    阿里出的jetCache,对spring的Cache进行了封装 → 看成是一个底层框架,可以替代spring cache

    实现本地与远程缓存同时存在的效果

    但只能兼容四种缓存

    二 jetCache整合远程缓存

    本案例是基于这个手机验证码案例改造jetCache缓存的

    1 添加依赖

    1. <dependency>
    2. <groupId>com.alicp.jetcache</groupId>
    3. <artifactId>jetcache-starter-redis</artifactId>
    4. <version>2.6.2</version>
    5. </dependency>


    2 配置文件

    1. spring:
    2. # 解决jetcache循环依赖问题
    3. main:
    4. allow-circular-references: true
    5. jetcache:
    6. # 使用远程缓存
    7. remote:
    8. default:
    9. type: redis
    10. host: localhost
    11. port: 6379
    12. # 该属性必须要有
    13. poolConfig:
    14. # 最大连接数
    15. maxTotal: 50
    16. # 第2组配置
    17. sms:
    18. type: redis
    19. host: localhost
    20. port: 6379
    21. # 该属性必须要有
    22. poolConfig:
    23. # 最大连接数
    24. maxTotal: 50

    3 引导类加注解

    @EnableCreateCacheAnnotation

    4 实现类


        用注解@CreateCache注入cache
        put(key,value)
        get(key)

    1. package com.qing.service.impl;
    2. import com.alicp.jetcache.Cache;
    3. import com.alicp.jetcache.anno.CreateCache;
    4. import com.qing.bean.SMSCode;
    5. import com.qing.service.SMSCodeService;
    6. import com.qing.util.CodeUtils;
    7. import org.springframework.beans.factory.annotation.Autowired;
    8. import org.springframework.stereotype.Service;
    9. import java.util.concurrent.TimeUnit;
    10. @Service
    11. public class SMSCodeServiceImpl implements SMSCodeService {
    12. @Autowired
    13. CodeUtils codeUtils;
    14. //注意导阿里包alicp的那个
    15. //注入cache,超时时间默认是秒,
    16. // @CreateCache(name="jet",expire = 10,timeUnit = TimeUnit.MINUTES)
    17. // private Cache<String,String> jetCache;
    18. //还可以配置两个这个分别使用
    19. //area的值就是配置文件里用哪一套jetcache配置的名字,area默认用的default
    20. @CreateCache(area = "sms",name="jet",expire = 20)
    21. private Cache<String,String> jetCache2;
    22. //发送验证码
    23. @Override
    24. public String sendCode(String phoneNum) {
    25. String code = codeUtils.generate(phoneNum);
    26. jetCache2.put(phoneNum,code);
    27. return code;
    28. }
    29. //比对验证码
    30. @Override
    31. public boolean checkCode(SMSCode smsCode) {
    32. //取出内存中的验证码与传递过来的验证码比对,相同返回true
    33. String code = smsCode.getCode();
    34. String cacheCode = jetCache2.get(smsCode.getPhoneNum());
    35. return code.equals(cacheCode);
    36. }
    37. }

     测试

    别忘了打开redis的服务端

    关于redis的安装在这里

     

     

    三 jetCache整合本地缓存

    添加依赖和引导类加注解同远程缓存一样,主要区别是以下两点

    1 配置文件

    1. jetcache:
    2. # 使用本地缓存
    3. local:
    4. default:
    5. type: linkedhashmap
    6. # 把对象的key转成json字符串
    7. keyConvertor: fastjson

    2 实现类

    cacheType = CacheType.LOCAL
    1. //注意导阿里包alicp的那个
    2. //注入cache,超时时间默认是秒,
    3. //cacheType = CacheType.LOCAL:只用本地缓存,还可以有both (默认使用 远程方案)
    4. @CreateCache(name="jet",expire = 10,timeUnit = TimeUnit.MINUTES,cacheType = CacheType.LOCAL)
    5. private Cache<String,String> jetCache;

    测试

     

     在本地测试都好用,但是远程redis里没有数据

     配置说明

     

  • 相关阅读:
    【Three.js】第十二章 Materials 材质
    对话框管理器第八章:对话框中的自定义导航
    为什么我抓不到baidu的数据包
    前端【css3D转换】
    vue ---列表渲染
    CSS3之多列布局columns学习
    java计算机毕业设计springboot+vue城市公园信息管理系统(源码+系统+mysql数据库+Lw文档)
    Nacos OpenAPI清单
    HTML中script 标签中的那些属性
    (七)Alian 的 Spring Cloud Config 配置中心(客户端)
  • 原文地址:https://blog.csdn.net/m0_45877477/article/details/125549271