redis定义
redis是一个基于内存运行的高性能,单线程的已key_value形式存储数据的nosql数据库,支持分布式,操作具有原子性,持久性。
Redis的应用场景有哪些?
- 存储热点数据(热点数据:高频读,低频写)
- 计数器,限流器
- 排行榜,发布订阅
- 分布式锁,共享session,消息队列系统
Redis的数据类型
String
操作:
get/mget
set/mset
getset
哈希类型
链表类型(list)
集合类型(sets)
zset有序集合
项目中使用redis
引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置redis配置类
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
RedisSerializer<String> redisKeySerializer = new StringRedisSerializer();//Long类型不可以会出现异常信息;
ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om);
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
template.setKeySerializer(redisKeySerializer);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.setHashKeySerializer(jackson2JsonRedisSerializer);
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
配置文件中配置:
spring:
redis:
database: 0
password:
pool:
#最大连接数(负值表示没有限制)
max-active: 300
#最大阻塞等待时间(负值表示没有限制)
max-wait: 1000
#最大空闲链接
max-idle: 100
#最小空闲链接
min-idle: 10
#链接超时时间(毫秒)
timeout: 6000
sentinel:
nodes: aa:8000,aa:8001,aa:8002
master: hcfc-master
使用redis:
@Autowired
public RedisTemplate redisTemplate;
.........................................
if(args == null){
String isExecute=getJobType().fileNamePrefix+"-"+getDefaultBegin()+"-"+getDefaultEnd();
String readFlag = (String)redisTemplate.opsForValue().get(isExecute);
if(StringUtils.isNotBlank(readFlag)){
return new ReturnT(ReturnT.FAIL_CODE,isExecute+"相同的任务时间已经执行过");
}
//redis中做标记
redisTemplate.opsForValue().set(isExecute,"SC");
}