引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
applicaton.yml配置 连接redis
server:
port: 9000
spring:
redis:
database: 0 //redis有16个数据库 我们这里默认下表为0的
host: localhost //连接本机的redis
port: 6379 //redis端口
自定义一个RedisTemplate
/**
* @title: RedisConfig
* @Author Tan
* @Date: 2020/7/30 11:09
* @Version 1.0
*/
@Configuration
public class RedisConfig {
// 这是我给大家写好的一个固定模板,大家在企业中,拿去就可以直接使用!
// 自己定义了一个 RedisTemplate
@Bean
@SuppressWarnings("all")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory)
{
// 我们为了自己开发方便,一般直接使用 <String, Object>
RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(factory);
// Json序列化配置
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
// String 的序列化
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// key采用String的序列化方式
template.setKeySerializer(stringRedisSerializer);
// hash的key也采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
// value序列化方式采用jackson
template.setValueSerializer(jackson2JsonRedisSerializer);
// hash的value序列化方式采用jackson
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
这里手写一个接口 这样方便我们使用
@Component
public class RedisMapper {
@Autowired
private RedisTemplate redisTemplate;
final String LAST_TO_DB_TIME = "last_to_db_time";
/**
* 功能描述:
* 将Map类型的数据存入Redis
* @param map 需要存入redis的map集合
* @return : void
* @author :
* @date : 2020/7/23 13:38
*/
public void setDataToRedis(Map map){
redisTemplate.opsForValue().multiSet(map);
}
/**
* 功能描述:
* 通过keys批量从Redis取值
* @param keys 批量获取redis值的键集合
* @return : java.lang.Object
* @author :
* @date : 2020/7/23 13:41
*/
public Object getDataFromRedis(List keys){
return redisTemplate.opsForValue().multiGet(keys);
}
/**
* 功能描述:
* 通过key从Redis取值
* @param key 获取redis值的键
* @return : java.lang.Object
* @author :
* @date : 2020/7/23 13:42
*/
public Object getDataFromRedis(Object key){
return redisTemplate.opsForValue().get(key);
}
/**
* 功能描述:
* 从redis读取数据后设置有效时间
* @param keys 1 需要设置有效时间的key集合
* @param timeout 2 有效时间 单位分钟
* @return : void
* @author :
* @date : 2020/7/24 11:17
*/
public void setExpire(List keys,Integer timeout){
for (Object key : keys) {
redisTemplate.expire(key,timeout, TimeUnit.MINUTES);
}
}
/**
* 功能描述:
* 根据key删除redis内数据
* @param keys key集合
* @return : void
* @author :
* @date : 2020/7/24 22:53
*/
public void delRedisByKeys(List keys){
redisTemplate.delete(keys);
}
/**
* 功能描述:
* 保存最后一次存入数据库的时间
* @param date 1 已经入库的时间段
* @return : void
* @author :
* @date : 2020/7/25 20:48
*/
public void setLastToDBTime(Date date){
redisTemplate.opsForValue().set(LAST_TO_DB_TIME,date);
}
/**
* 功能描述:
* 获取最后一次入库时间
* @return : java.util.Date
* @author :
* @date : 2020/7/25 20:50
*/
public Date getLastToDBTime(){
return (Date)redisTemplate.opsForValue().get(LAST_TO_DB_TIME);
}
/**
* 功能描述:
* redis存值
* @param key 键
* @param value 值
* @return : void
* @author :
* @date : 2020/7/25 23:33
*/
public void setDataToRedis(Object key,Object value){
redisTemplate.opsForValue().set(key,value);
}
}
写一个Contorller一点看看能不能用
public class StudentController {
@Autowired
RedisMapper redisMapper;
@RequestMapping("/set")
public String set(){
redisMapper.setDataToRedis("王五","王五今年25");
return "success";
}
@RequestMapping("/get")
public Object get(){
Object ww = redisMapper.getDataFromRedis("王五");
return ww;
}
}
先调set 存一个值到redis里
然后调get读取
ok到这里可以看到 redis使用成功