在springboot中使用redis
基于spring.data.redis,springboot中加入依赖(gradle)
compile group: 'org.springframework.boot', name: 'spring-boot-starter-redis', version: '1.4.7.RELEASE'
yml配置文件加入redis配置:
spring:
redis:
# Redis数据库索引(默认为15)
database: 15
host: (redis的地址)
port: 6379(redis的端口号,这里是默认)
password: (redis的密码)
pool:
# 连接池最大连接数(使用负值表示没有限制)
max-active: 8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1
# 连接池中的最大空闲连接
max-idle: 8
# 连接池中的最小空闲连接
min-idle: 0
# 连接超时时间(毫秒)
timeout: 0
在service层中@Autowired(自动注入)
@Autowired
StringRedisTemplate stringRedisTemplate;
使用redis,本例子添加zset类型数据,并使用重写SessionCallback的方法处理事务,redis事务解析,参考以下:
Spring Data Redis 二:RedisTemplate实现事物问题剖析和解决
@Override
public Boolean saveRedisBykeyToSet(TopDataModel topDataModel, String key) {
//redis重写事务
SessionCallback<Object> sessionCallback = new SessionCallback<Object>() {
@Override
public Object execute(RedisOperations operations) throws DataAccessException {
operations.multi();
ZSetOperations zSet = operations.opsForZSet();
zSet.add(key, JSON.toJSONString(topDataModel), 1);
Object val = operations.exec();
return val;
}
};
stringRedisTemplate.execute(sessionCallback);
stringRedisTemplate.expire(key, 2, TimeUnit.HOURS);//设置有效时间
return true;
}
通过key获取数据
@Override
public List<TopDataModel> listRedisBykey(String key) {
ZSetOperations zSet = stringRedisTemplate.opsForZSet();
Set set = zSet.range(key, 0, zSet.size(key));
List<TopDataModel> topDataModelList = new ArrayList<>();
set.stream().forEach(s -> topDataModelList.add(JSON.parseObject(s.toString(), TopDataModel.class)));
return topDataModelList;
}
ok;