美文网首页
springboot整合redis

springboot整合redis

作者: Jerry_Liang | 来源:发表于2019-03-21 11:05 被阅读0次

    一、redis服务器安装与配置

    1.redis安装

    #下载相应相应的tar.gz包
    wget http://download.redis.io/releases/redis-5.0.3.tar.gz
    #解压
    tar -zxvf redis-5.0.3.tar.gz
    #到解压出来的目录下执行编译与安装
    cd redis-5.0.3
    make 
    #安装至/usr/local/redis这个文件夹底下
    make install PREFIX=/usr/local/redis
    #若执行了上一步的指定相应目录,可以将redis.conf也移过去,方便启动的时候使用,其实也可以不在那位置,我们可以在启动的时候指定想要使用的配置文件
    

    2.开启远程访问redis服务:
    修改redis.conf配置文件,修改部分如下:

    1)注释掉bind 127.0.0.1
    2)redis在目前的版本中单纯注释上一步的内容还是不行的,需要将protected-mode yes改为protected-mode no
    3)若服务器开启了防火墙的话,需要开放6379这个端口号,开放端口号指令如下:
    firewall-cmd --zone=public --add-port=6379/tcp --permanent
    4)重新加载firewalld:
    firewall-cmd --reload
    

    3.后台启动redis、关闭redis

    1)需要修改redis.conf文件中的daemonize no 的no改为daemonize yes;
    //其中后面的./etc/redis.conf为加载配置文件
    2)进入redis目录下执行  bin/redis-server  ./etc/redis.conf  开始后端执行redis
    3)执行 ps -ef | grep -i redis 来查看redis运行的进程号
    //若要关闭redis服务,可执行如下指令
    4)bin/redis-cli shutdown
    

    二、springboot整合redis

    1.引入依赖包:

    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
    

    2.配置application.yml中配置redis:

    spring:
      redis: 
        host: localhost
        port: 6379
        password:          # redis默认不使用密码,即空。若有,输入对应密码即可
        database: 0
        pool:
          max-active: 8   # 连接池最大连接数(-1表示无没有限制)
          min-idle: 0     # 连接池中最小空闲连接
          max-idle: 8     # 连接池最大空闲连接
          max-wait: -1    # 连接池最大阻塞时间(-1表示无没有限制)
    

    3.在springboot启动类上加上注解@EnableCaching,如下图:


    image

    4.创建RedisUtil.java类:

    package com.spring.boot.demo.Util;
    
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.stereotype.Component;
    
    import javax.annotation.Resource;
    import java.util.concurrent.TimeUnit;
    
    /**
     * @Author: JerryLiang
     * @Date: 2019/3/20 21:33
     **/
    @Component
    public class RedisUtil {
    
        @Resource
        private RedisTemplate<String, Object> redisTemplate;
    
        public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate){
            this.redisTemplate = redisTemplate;
        }
    
        /**
         * 指定缓存失效时间
         * @param key 键
         * @param time 时间(秒)
         */
        public boolean expire(String key, long time) {
            try{
                if(time > 0){
                    redisTemplate.expire(key, time, TimeUnit.SECONDS);
                }
                return true;
            }catch (Exception e){
                e.printStackTrace();
                return false;
            }
        }
    
     /**
         * 普通缓存获取
         *
         * @param key 键
         * @return 值
         */
        public Object get(String key) {
            return key == null ? null : redisTemplate.opsForValue().get(key);
        }
    
        /**
         *  判断key是否存在
         * @param key 键
         * @return true 存在 false 不存在
         */
        public boolean hasKey(String key){
            try{
                System.out.println(key);
                return redisTemplate.hasKey(key);
            }catch (Exception e){
                e.printStackTrace();
                return false;
            }
        }
    
        /**
         *  删除缓存
         * @param key
         */
        @SuppressWarnings("unchecked")
        public boolean del(String key){
            if (key.equals("")|| key==null) {
                return false;
            }else{
                redisTemplate.delete(key);
                return true;
            }
        }
    
        /**
         * 普通缓存放入
         *
         * @param key   键
         * @param value 值
         * @return true成功 false失败
         */
        public boolean set(String key, String value) {
            try {
                System.out.println(key);
                redisTemplate.opsForValue().set(key, value);
                return true;
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
    
        }
    
        /**
         * 普通缓存放入并设置时间
         *
         * @param key   键
         * @param value 值
         * @param time  时间(秒) time要大于0 如果time小于等于0 将设置无限期
         * @return true成功 false 失败
         */
        public boolean set(String key, String value, long time) {
            try {
                if (time > 0) {
                    redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
                } else {
                    set(key, value);
                }
                return true;
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
    
    
    }
    
    

    5.在需要使用RedisUtil的类中注入RedisUtil:

    @Autowired
    private RedisUtil redisUtil;
    

    6.测试使用:

    redisUtil.set("jerry","liang");
    

    7.查看redis:


    image

    相关文章

      网友评论

          本文标题:springboot整合redis

          本文链接:https://www.haomeiwen.com/subject/xqxqvqtx.html