栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java > SpringBoot

springboot2.0整合redis(自定义注解)

SpringBoot 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot2.0整合redis(自定义注解)

写在前面:

最近在使用springboot2.0,想整合一下redis做缓存,但是使用原生的,不大好用,所以就想自己将redis进一步的封装,,想着使用自定义注解来对数据进行缓存,,,
当你添加缓存的时候不指定keyName,默认使用的是全类名加上方法名与参数,删除的时候需要使用全类名加方法名

演示

先看看怎么用
1.引入此jar包,在配置文件配置redis基本信息
2.新建一个配置类集成RedisCacheAspect,实现方法,定义切入点表达式


image.png

3.在你需要缓存,删除缓存的地方,添加注解


添加缓存

根据key删除缓存

4.OK

简单不。。看看原理

1.准备

首先这是一个分模块的项目,缓存是一个模块,service是一个模块,dal是一个模块,web是一个springboot项目。
先将项目创建好


项目结构

2.缓存模块1.缓存模块的pom文件
  
        
            org.springframework.boot
            spring-boot-starter-redis
            1.4.7.RELEASE
        
        
        
            org.springframework.boot
            spring-boot-starter-aop
        
        
            com.alibaba
            fastjson
        
2.缓存模块的数据

image.png

RedisProperties

读取配置文件中的redis的配置,进行封装

@Configuration@ConfigurationProperties(prefix = "spring.redis")public class RedisProperties {    private String host;    private String port;    public String getHost() {        return host;
    }    public void setHost(String host) {        this.host = host;
    }    public String getPort() {        return port;
    }    public void setPort(String port) {        this.port = port;
    }

}
RedisConfig

将配置文件中的数据,转换成程序可用的jedis客户端

@Configurationpublic class RedisConfig {    @Autowired
    private RedisProperties redisProperties;    @Bean
    public JedisPool jedisPool(){
        String host = redisProperties.getHost();
        Integer port = Integer.parseInt(redisProperties.getPort());        return new JedisPool(host,port);
    }    public static String getPackages(){        return "niaho";
    }


}
JedisClient

jedis客户端的接口

public interface JedisClient {    
    String set(String key, String value);    
    String set(String key, String value, int time);    
    String get(String key);    
    Long del(String key);    
    Set keys(String key);    
    Boolean exists(String key);    
    Long expire(String key, int seconds);    
    Long ttl(String key);    
    Long incr(String key);    
    Long hset(String key, String field, String value);    
    String hget(String key, String field);    
    Long hdel(String key, String... field);

}
JedisClientPool

单机版jedis实现,

@Servicepublic class JedisClientPool implements JedisClient {    
    @Autowired
    private JedisPool jedisPool;    @Override
    public String set(String key, String value) {
        Jedis jedis = jedisPool.getResource();
        String result = jedis.set(key, value);
        jedis.close();        return result;
    }    @Override
    public String set(String key, String value, int time){
        Jedis jedis = jedisPool.getResource();
        String set = jedis.set(key, value);
        Long expire = expire(key, time);        return set;
    }    @Override
    public Long del(String key) {

        Jedis jedis = jedisPool.getResource();
        Long del = jedis.del(key);
        jedis.close();        return del;
    }    @Override
    public Set keys(String key) {

        Jedis jedis = jedisPool.getResource();
        Set keys = jedis.keys(key);        return keys;
    }    @Override
    public String get(String key) {
        Jedis jedis = jedisPool.getResource();
        String result = jedis.get(key);
        jedis.close();        return result;
    }    @Override
    public Boolean exists(String key) {
        Jedis jedis = jedisPool.getResource();
        Boolean result = jedis.exists(key);
        jedis.close();        return result;
    }    @Override
    public Long expire(String key, int seconds) {
        Jedis jedis = jedisPool.getResource();
        Long result = jedis.expire(key, seconds);
        jedis.close();        return result;
    }    @Override
    public Long ttl(String key) {
        Jedis jedis = jedisPool.getResource();
        Long result = jedis.ttl(key);
        jedis.close();        return result;
    }    @Override
    public Long incr(String key) {
        Jedis jedis = jedisPool.getResource();
        Long result = jedis.incr(key);
        jedis.close();        return result;
    }    @Override
    public Long hset(String key, String field, String value) {
        Jedis jedis = jedisPool.getResource();
        Long result = jedis.hset(key, field, value);
        jedis.close();        return result;
    }    @Override
    public String hget(String key, String field) {
        Jedis jedis = jedisPool.getResource();
        String result = jedis.hget(key, field);
        jedis.close();        return result;
    }    @Override
    public Long hdel(String key, String... field) {
        Jedis jedis = jedisPool.getResource();
        Long result = jedis.hdel(key, field);
        jedis.close();        return result;
    }

}



作者:z七夜
链接:https://www.jianshu.com/p/841f87cdb818


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/235042.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号