目录

一 jetCache简介

二 jetCache整合远程缓存

1 添加依赖

2 配置文件

3 引导类加注解

4 实现类

三 jetCache整合本地缓存


一 jetCache简介

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

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

但只能兼容四种缓存

二 jetCache整合远程缓存

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

1 添加依赖

		<dependency>
			<groupId>com.alicp.jetcache</groupId>
			<artifactId>jetcache-starter-redis</artifactId>
			<version>2.6.2</version>
		</dependency>


2 配置文件

spring: 
#      解决jetcache循环依赖问题
  main:
    allow-circular-references: true


jetcache:
#  使用远程缓存
  remote:
    default:
      type: redis
      host: localhost
      port: 6379
#      该属性必须要有
      poolConfig:
#        最大连接数
        maxTotal: 50
#    第2组配置
    sms:
      type: redis
      host: localhost
      port: 6379
      #      该属性必须要有
      poolConfig:
        #        最大连接数
        maxTotal: 50

3 引导类加注解

@EnableCreateCacheAnnotation

4 实现类


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

package com.qing.service.impl;

import com.alicp.jetcache.Cache;
import com.alicp.jetcache.anno.CreateCache;
import com.qing.bean.SMSCode;
import com.qing.service.SMSCodeService;
import com.qing.util.CodeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.concurrent.TimeUnit;

@Service
public class SMSCodeServiceImpl implements SMSCodeService {


    @Autowired
    CodeUtils codeUtils;

    //注意导阿里包alicp的那个
    //注入cache,超时时间默认是秒,
//    @CreateCache(name="jet",expire = 10,timeUnit = TimeUnit.MINUTES)
//    private Cache<String,String> jetCache;

    //还可以配置两个这个分别使用
    //area的值就是配置文件里用哪一套jetcache配置的名字,area默认用的default
    @CreateCache(area = "sms",name="jet",expire = 20)
    private Cache<String,String> jetCache2;

    //发送验证码
    @Override
    public String sendCode(String phoneNum) {
        String code = codeUtils.generate(phoneNum);
        jetCache2.put(phoneNum,code);
        return code;
    }


    //比对验证码
    @Override
    public boolean checkCode(SMSCode smsCode) {
        //取出内存中的验证码与传递过来的验证码比对,相同返回true
        String code = smsCode.getCode();
        String cacheCode = jetCache2.get(smsCode.getPhoneNum());
        return code.equals(cacheCode);
    }
}

 测试

别忘了打开redis的服务端

关于redis的安装在这里

 

 

三 jetCache整合本地缓存

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

1 配置文件

jetcache:
#  使用本地缓存
  local:
    default:
      type: linkedhashmap
      #      把对象的key转成json字符串
      keyConvertor: fastjson

2 实现类

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

测试

 

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

 配置说明

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐