转自:http://www.icnws.com/2017/146-spring-boot-with-redis/
终于还是用了Spring Boot,主要跑定时任务。上一次写的那个定时任务就是要用的。这次主要是在定时任务中更新缓存(Redis)数据。
添加依赖
当前版本是SpringBoot 1.5.4.RELEASE
<!-- Redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> |
这里只需要添加这一个依赖就好了,点进去可以看到相关依赖的信息:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> </dependencies> |
调整配置
application.properties增加参数
# REDIS (RedisProperties) # Redis数据库索引(默认为0) spring.redis.database=0 # Redis服务器地址 spring.redis.host=localhost # Redis服务器连接端口 spring.redis.port=6379 # Redis服务器连接密码(默认为空) spring.redis.password=m7ua80gbm7cdm # 连接池最大连接数(使用负值表示没有限制) spring.redis.pool.max-active=10 # 连接池最大阻塞等待时间(使用负值表示没有限制) spring.redis.pool.max-wait=10000 # 连接池中的最大空闲连接 spring.redis.pool.max-idle=200 # 连接池中的最小空闲连接 spring.redis.pool.min-idle=3 # 连接超时时间(毫秒) spring.redis.timeout=6000 |
使用
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; @Autowired private StringRedisTemplate stringRedisTemplate; |
然后通过这个类操作Redis,通过阅读源码我们发现,该类是RedisTemplate的子类,具有以下数据操作对象:
// cache singleton objects (where possible) private ValueOperations<K, V> valueOps;//操作String类型的键值 private ListOperations<K, V> listOps;//操作List集合类型的键值 private SetOperations<K, V> setOps;//操作Set集合类型的键值 private ZSetOperations<K, V> zSetOps;//操作有序Set集合类型的键值 private GeoOperations<K, V> geoOps;//操作GEO类型的键值 private HyperLogLogOperations<K, V> hllOps;//这个没有关注 |
比如
操作String类型的键值可以:stringRedisTemplate.opsForValue().set(key,value);
操作Zset集合类型的键值可以:stringRedisTemplate.opsForZSet().add(key,value,double);
这里需要注意,不要使用import org.springframework.data.redis.core.RedisTemplate;这个类,虽然上面的StringRedisTemplate是其子类,但是它操作的redis数据会产生一些额外的二进制数值,如果其他项目读取该数据会略有不便。