spring boot redis整合
2017-12-09 15:26
603 查看
spring boot整合redis 添加jar maven
这里注意我们spring boot 整合redis,使用的是spring cache 与redis整合,RedisCacheManager即是spring cache实现具体的缓存 感兴趣的同学可以了解一下spring cache
application.properties配置文件如下:
redis工具类RedisUtil:
测试类:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>配置类如下:
package com.zyc.springboot.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; import redis.clients.jedis.JedisPoolConfig; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { @Value("${spring.redis.hostName}") private String hostName; @Value("${spring.redis.port}") private int port; @Value("${spring.redis.timeOut}") private int timeOut; @Value("${spring.redis.maxIdle}") private int maxIdle;// 最大空闲连接数, 默认8个 @Value("${spring.redis.maxWaitMillis}") private int maxWaitMillis;// 获取连接时的最大等待毫秒数 @Value("${spring.redis.testOnBorrow}") private boolean testOnBorrow;// 在获取连接的时候检查有效性, 默认false @Value("${spring.redis.testWhileIdle}") private boolean testWhileIdle;// 空闲是否检查是否有效,默认为false @Bean("jedisPoolConfig") public JedisPoolConfig jedisPoolConfig() { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(maxIdle); jedisPoolConfig.setMaxWaitMillis(maxWaitMillis); jedisPoolConfig.setTestOnBorrow(true); jedisPoolConfig.setTestWhileIdle(false); return jedisPoolConfig; } @Bean public JedisConnectionFactory redisConnectionFactory( JedisPoolConfig jedisPoolConfig) { JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(); redisConnectionFactory.setPoolConfig(jedisPoolConfig); redisConnectionFactory.setHostName(hostName); redisConnectionFactory.setPort(port); redisConnectionFactory.setTimeout(timeOut); return redisConnectionFactory; } /** * RedisTemplate配置 * * @param factory * @return */ @Bean public RedisTemplate<String, Object> redisTemplate( JedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>(); redisTemplate.setConnectionFactory(redisConnectionFactory); RedisSerializer<String> redisSerializer = new StringRedisSerializer(); redisTemplate.setKeySerializer(redisSerializer); Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>( Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); return redisTemplate; } @Bean public CacheManager cacheManager(RedisTemplate<String, Object> redisTemplate) { RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate); // Number of seconds before expiration. Defaults to unlimited (0) // cacheManager.setDefaultExpiration(10); //设置key-value超时时间 return cacheManager; } }
这里注意我们spring boot 整合redis,使用的是spring cache 与redis整合,RedisCacheManager即是spring cache实现具体的缓存 感兴趣的同学可以了解一下spring cache
application.properties配置文件如下:
spring.redis.hostName=127.0.0.1 spring.redis.port=63791 spring.redis.timeOut=1000 spring.redis.maxIdle=10 spring.redis.maxWaitMillis=15000 spring.redis.testOnBorrow=true spring.redis.testWhileIdle=false
redis工具类RedisUtil:
package com.zyc.springboot.util; import java.util.Set; import java.util.concurrent.TimeUnit; import javax.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; @Service("redisUtil") public class RedisUtil { private Logger logger = LoggerFactory.getLogger(RedisUtil.class); private RedisTemplate<String, Object> redisTemplate; /** * 批量删除对应的value * * @param keys */ public void remove(final String... keys) { for (String key : keys) { remove(key); } } /** * 批量删除key * * @param pattern */ public void removePattern(final String pattern) { Set<String> keys = redisTemplate.keys(pattern); if (keys.size() > 0) redisTemplate.delete(keys); } /** * 删除对应的value * * @param key */ public void remove(final String key) { if (exists(key)) { redisTemplate.delete(key); } } /** * 判断缓存中是否有对应的value * * @param key * @return */ public boolean exists(final String key) { return redisTemplate.hasKey(key); } /** * 获取所有的key * * @return */ public Set<String> keys() { return redisTemplate.keys("*"); } /** * 读取缓存 * * @param key * @return */ public Object get(final String key) { Object result = null; ValueOperations<String, Object> operations = redisTemplate .opsForValue(); result = operations.get(key); return result; } /** * 写入缓存 * * @param key * @param value * @return */ public boolean set(final String key, Object value) { boolean result = false; try { ValueOperations<String, Object> operations = redisTemplate .opsForValue(); operations.set(key, value); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 写入缓存 * * @param key * @param value * @return */ public boolean set(final String key, Object value, Long expireTime) { boolean result = false; try { ValueOperations<String, Object> operations = redisTemplate .opsForValue(); operations.set(key, value); redisTemplate.expire(key, expireTime, TimeUnit.DAYS); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } public void setRedisTemplate( RedisTemplate<String, Object> redisTemplate) { this.redisTemplate = redisTemplate; } }
测试类:
package com.zyc.test; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import com.zyc.springboot.ApplicationRun; import com.zyc.springboot.util.RedisUtil; @RunWith(SpringRunner.class) @SpringBootTest(classes={ApplicationRun.class}) public class RedisTest { @Autowired private RedisUtil redisUtil; @Test public void redisTest(){ redisUtil.set("abc", "zyc"); System.out.println(redisUtil.get("abc")); } }
相关文章推荐
- SpringBoot非官方教程 | 第九篇: springboot整合Redis
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)
- spring-boot整合redis作为缓存(1)——redis的设置
- Spring Boot 整合 Redis 实现缓存操作
- spring boot整合redis
- Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo
- SpringBoot整合Redis
- Spring Boot+Shiro+Redis(redisson)整合时,采用内嵌tomcat启动错误原因分析
- springboot与redis整合案例(下)
- spring boot中spring cache 整合redis
- Redis---------springboot整合Redis实例
- SpringBoot2.0整合Redis
- spring-boot 整合redis作为数据缓存
- spring boot整合redis(单机+集群)
- java springboot与redis整合
- Springboot整合Redis
- spring boot整合redis
- spring-boot 整合redis作为数据缓存
- spring-boot整合redis作为mysql二级缓存
- springboot整合spring-data-redis遇到的坑