springboot整合redis

2019-03-21  本文已影响0人  Jerry_Liang

一、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
上一篇下一篇

猜你喜欢

热点阅读