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