• SpringBoot学习- 5、整合Redis


    SpringBoot学习足迹

    SpringBoot项目中访问Redis主要有两种方式:JedisPool和RedisTemplate,本文使用JedisPool

    1、pom.xml添加dependency

    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.0</version>
        <scope>compile</scope>
    </dependency>

    2、下面封装一个工具类,utils新建JedisPoolUtil,先只封装读写字符串

    package com.jgui.utils;
    
    import com.jgui.config.RedisConfig;
    import lombok.Data;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.stereotype.Component;
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    /**
     * @Author: zhaogaojian
     * @Description:
     * @Date: Created in 2020/1/821:54
     */
    @Component
    public class JedisPoolUtil {
        private  JedisPool jedisPool=null;
        @Autowired
        private  RedisConfig redisConfig;
        private  JedisPool getJedisPool() {
            if(jedisPool==null)
            {
                JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
                jedisPoolConfig.setMaxTotal(redisConfig.getPoolMaxTotal());
                jedisPoolConfig.setMaxIdle(redisConfig.getPoolMaxIdle());
                jedisPoolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait());
                jedisPool=new JedisPool(jedisPoolConfig, redisConfig.getHost(),redisConfig.getPort(),redisConfig.getTimeout()*1000,redisConfig.getPassword(),0);
            }
            return jedisPool;
        }
        public  String set(String key,String value, int cacheSeconds)
        {
            String strRet = null;
            Jedis jedis =null;
            try {
                jedis = getJedisPool().getResource();
                strRet=jedis.set(key,value);
                if (cacheSeconds != 0) {
                    jedis.expire(key, cacheSeconds);
                }
            } catch (Exception e) {
                //logger.error(e.getMessage(), e);
            } finally {
                if (jedis != null)
                    jedis.close(); //注意这里不是关闭连接,在JedisPool模式下,Jedis会被归还给资源池。
            }
            return strRet;
        }
        public  String get(String key)
        {
            String strRet=null;
            Jedis jedis =null;
            try {
                jedis = getJedisPool().getResource();
                strRet=jedis.get(key);
            } catch (Exception e) {
                //logger.error(e.getMessage(), e);
            } finally {
                if (jedis != null)
                    jedis.close(); //注意这里不是关闭连接,在JedisPool模式下,Jedis会被归还给资源池。
            }
            return strRet;
        }
    }

    3、Config文件新建RedisConfig

    package com.jgui.config;
    
    import lombok.Data;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    /**
     * @Author: zhaogaojian
     * @Description:
     * @Date: Created in 2020/1/822:51
     */
    @Data
    @Component
    @ConfigurationProperties(prefix = "redis") //把同类的配置信息自动封装成实体类
    public class RedisConfig {
        private String host="127.0.0.1";
        private Integer port=6379;
        private Integer timeout=3;  //
        private String password="123456";
    
        private Integer poolMaxTotal=10;
        private Integer poolMaxIdle=10;
        private Integer poolMaxWait=3;//
    }

    4、application.properties增加配置节

    #--------------------Jedis配置-------------------
    redis.host=127.0.0.1
    redis.port=6379
    #秒
    redis.timeout=5 
    redis.password=123456
    redis.poolMaxTotal=10
    redis.poolMaxIdle=10
    #秒
    redis.poolMaxWait=3

    5、修改hello进行测试

        @Autowired
        private JedisPoolUtil jedisPoolUtil;
        @RequestMapping("/hello")
        public String hello() {
    
            String ret=jedisPoolUtil.set("111","123",60);
            String ret1=jedisPoolUtil.get("111");
            return ret1;
            //return userDao.selectByPrimaryKey(1).getRealname();
            //return "Hello World11";
        }

    6、拦截器增加hello排除

    public void addInterceptors(InterceptorRegistry registry){
            List<String> excludePath = new ArrayList<>();
            excludePath.add("/login"); //登录
            excludePath.add("/hello"); //测试
            registry.addInterceptor(tokenInterceptor)
                    .addPathPatterns("/**")
                    .excludePathPatterns(excludePath);
            WebMvcConfigurer.super.addInterceptors(registry);
    
        }

    7、运行测试,返回123,工作正常

     以上参考

    https://www.jianshu.com/p/df57fefe0ab7

    https://www.jdon.com/51938

    https://blog.csdn.net/MRA__S__/article/details/82051538

    https://blog.csdn.net/damanchen/article/details/103770222

  • 相关阅读:
    一些牛逼的统计SQL
    一个有趣的 SQL 查询(查询7天连续登陆)
    Highcharts-3.0.6
    linux 下载并安装Memcache服务器端
    nginx + tomcat集群和动静资源分离
    C#中使用SendMessage在进程间传递数据的实例
    Wparam与Lparam的区别
    WPARAM和LPARAM的含义
    C# 使用SendMessage 函数
    在WinForm中使用Web Services 来实现 软件 自动升级( Auto Update ) (C#)
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/12169358.html
Copyright © 2020-2023  润新知