Springboot集成redis
今天给大家分享一个java代码集成redis的知识点,项目我们使用简单的springboot;
首先我们先在pom.xml文件引入我们需要的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>com.alicp.jetcache</groupId>
<artifactId>jetcache-starter-redis</artifactId>
<version>2.5.9</version>
</dependency>
然后在application.yml配置文件中加入我们redis配置信息
spring:
redis:
#使用 ID为0的数据库 redis默认有16个数据库 0-15 可不写默认启动ID为0的库
#可在redis配置文件redis.windows.conf 下修改 databases 16
database: 0
host: localhost
port: 6379
#密码没有直接空着就可以 , 有密码写上连接密码
password:
timeout: 1000
jedis:
pool:
max-active: 8
max-idle: 8
min-idle: 0
max-wait: -1
对于springboot项目其实导入依赖写好配置就直接可以注入RedisTemplate进行操作了,这是springboot为我们完成的。在RedisAutoConfiguration类下,
现在就可以直接封装我们的工具类了:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@Component
public class RedisUtil {
@Autowired
private RedisTemplate<Object, Object> redisTemplate;
/**
* 指定缓存失效时间
* @author xaiobaicai
* @date 2021/1/15 10:40
* @param key 键
* @param time 过期时间 秒
* @return boolean true false
*/
public boolean expire(String key , long time){
try{
redisTemplate.expire(key , time , TimeUnit.SECONDS);
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
/**
* 根据key获取过期时间
* @author xaiobaicai
* @date 2021/1/15 10:43
* @param key 键
* @return long 过期时间
*/
public long getExpire(String key){
Long expire = redisTemplate.getExpire(key);
return expire;
}
/**
* 判断 key 是都存在
* @author xaiobaicai
* @date 2021/1/15 10:47
* @param key 键
* @return boolean true 存在 false不存在
*/
public boolean haskey(String key){
return redisTemplate.hasKey(key);
}
/**
* 删除缓存(单个)
* @author xaiobaicai
* @date 2021/1/15 11:00
* @param key 键
* @return
*/
public void del(String key){
if(null != key){
redisTemplate.delete(key);
}
}
/**
* 删除缓存(多个)
* @author xaiobaicai
* @date 2021/1/15 10:52
* @param key 键的集合
* @return
*/
public void delMore(List<String> key){
if(null != key && key.size()>0){
redisTemplate.delete(key);
}
}
/**
* 存放数据
* @author xaiobaicai
* @date 2021/1/15 11:13
* @param key 键
* @param value 值
* @return boolean true 成功 false 失败
*/
public boolean set(String key , Object value){
try{
redisTemplate.opsForValue().set(key , value);
return true;
}catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 取出数据
* @author xaiobaicai
* @date 2021/1/15 11:19
* @param key 键
* @return Object 值
*/
public Object get(String key){
if(null == key){
return null;
}
return redisTemplate.opsForValue().get(key);
}
/**
* 存放数据并设置失效时间
* @author xaiobaicai
* @date 2021/1/15 11:23
* @param
* @return
*/
public boolean set(String key , Object value , long time){
try{
redisTemplate.opsForValue().set(key , value , time , TimeUnit.SECONDS);
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
/**
*
* @author xaiobaicai
* @date 2021/1/18 10:17
* @param key 键
* @param field hash键
* @param value 值
* @return boolean true 成功 false 失败
*/
public boolean hput(String key , String field , Object value){
try{
redisTemplate.opsForHash().put(key , field , value);
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
/**
* 存放map
* @author xaiobaicai
* @date 2021/1/18 10:21
* @param key 键
* @param value Map键值对
* @return Boolean true 成功 false 失败
*/
public boolean hputAll(String key , Map<String , Object> value){
try{
redisTemplate.opsForHash().putAll(key , value);
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
/**
* 根据key和field获取值
* @author xaiobaicai
* @date 2021/1/18 14:31
* @param key 键
* @param field hash键
* @return Object 值
*/
public Object hGet(String key , String field){
return redisTemplate.opsForHash().get(key , field );
}
/**
* 获取键值对集合
* @author xaiobaicai
* @date 2021/1/18 14:42
* @param key 键
* @return Map<Object , Object> 键下的所有hash键值
*/
public Map<Object , Object> getAll(String key){
return redisTemplate.opsForHash().entries(key);
}
/**
* 获取指定hash键的值
* @author xaiobaicai
* @date 2021/1/18 15:36
* @param key 键
* @param field hash键
* @return List<Object> 值集合
*/
public List<Object> hmultiGet(String key , List<String> field){
return redisTemplate.opsForHash().multiGet(key , CollectionUtils.arrayToList(field));
}
/**
* 存储集合 存储在集合最左端
* @author xaiobaicai
* @date 2021/1/18 10:56
* @param key 键
* @param value 值
* @return boolean true 成功 false 失败
*/
public boolean lpush(String key , Object value){
try{
redisTemplate.opsForList().leftPush(key , value);
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
/**
* 通过key 和集合下标获取值
* @author xaiobaicai
* @date 2021/1/18 13:31
* @param key 键
* @param index 索引
* @return Object 返回对象
*/
public Object getIndex(String key , long index){
return redisTemplate.opsForList().index(key , index);
}
/**
* 通过key和集合起始下标获取值
* @author xaiobaicai
* @date 2021/1/18 13:44
* @param key 键
* @param start 开始位置 0为第一个值开始
* @param end 结束位置 -1最后一个值
* @return List<Object> 结果集
*/
public List<Object> getRange(String key , long start , long end){
return redisTemplate.opsForList().range(key , start , end);
}
}
这里简单的写了几个,大家可以在工具类里接着写自己要用到的。