1.引入pom依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <version>1.4.1.RELEASE</version> </dependency>
2.application.yml 配置
redis: host: 127.0.0.1 port: 6379 jedis: pool: max-idle: 8 min-idle: 0 max-active: 8 max-wait: -1 timeout: 30000
3.RedisConfig工具类
package com.example.demo.framework.config; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 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.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; import redis.clients.jedis.JedisPoolConfig; import java.io.Serializable; @Configuration @EnableCaching @EnableAutoConfiguration public class RedisConfig extends CachingConfigurerSupport { @Value("${spring.redis.host}") private String hostName; @Value("${spring.redis.port}") private int port; @Value("${spring.redis.jedis.pool.max-idle}") private int maxIdl; @Value("${spring.redis.jedis.pool.min-idle}") private int minIdl; @Value("${spring.redis.jedis.pool.max-wait}") private long maxWait; @Value("${spring.redis.jedis.pool.max-active}") private int maxTotal; @Bean JedisConnectionFactory connectionFactory() { JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxIdle(maxIdl); poolConfig.setMinIdle(minIdl); poolConfig.setMaxWaitMillis(maxWait); poolConfig.setMaxTotal(maxTotal); poolConfig.setTestOnBorrow(true); poolConfig.setTestOnReturn(true); poolConfig.setTestWhileIdle(true); poolConfig.setNumTestsPerEvictionRun(100); poolConfig.setTimeBetweenEvictionRunsMillis(60000); JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(poolConfig); jedisConnectionFactory.setHostName(hostName); jedisConnectionFactory.setPort(port); return jedisConnectionFactory; } @Bean ValueOperations<String, String> strOperations(RedisTemplate<String, String> redisTemplate) { return redisTemplate.opsForValue(); } @Bean RedisTemplate<String, Integer> intRedisTemplate(JedisConnectionFactory connectionFactory) { RedisTemplate<String, Integer> redisTemplate = new RedisTemplate<String, Integer>(); redisTemplate.setConnectionFactory(connectionFactory); return redisTemplate; } @Bean ValueOperations<String, Integer> intOperations(RedisTemplate<String, Integer> redisTemplate) { return redisTemplate.opsForValue(); } @Bean Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer(ObjectMapper objectMapper) { Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>( Object.class); jackson2JsonRedisSerializer.setObjectMapper(objectMapper); return jackson2JsonRedisSerializer; } @Bean RedisTemplate<Serializable, Object> objRedisTemplate(JedisConnectionFactory connectionFactory, Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer) { RedisTemplate<Serializable, Object> redisTemplate = new RedisTemplate<Serializable, Object>(); redisTemplate.setConnectionFactory(connectionFactory); redisTemplate.setDefaultSerializer(jackson2JsonRedisSerializer); StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); redisTemplate.setKeySerializer(stringRedisSerializer); redisTemplate.setHashKeySerializer(stringRedisSerializer); return redisTemplate; } @Bean RedisTemplate<Serializable, Serializable> SerializeRedisTemplate(JedisConnectionFactory connectionFactory, Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer) { RedisTemplate<Serializable, Serializable> redisTemplate = new RedisTemplate<Serializable, Serializable>(); redisTemplate.setConnectionFactory(connectionFactory); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer()); redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer()); return redisTemplate; } @Bean ValueOperations<Serializable, Object> objOperations(RedisTemplate<Serializable, Object> redisTemplate) { return redisTemplate.opsForValue(); } }
4.RedisUtils工具类
private static final Logger log = LoggerFactory.getLogger(RedisUtils.class); @Autowired private RedisTemplate<Serializable, Object> redisTemplate; @Autowired private RedisTemplate<Serializable, Serializable> serializeRedisTemplate; public boolean set(final String key, Object value) { boolean result = false; try { ValueOperations<Serializable, Object> operations = redisTemplate .opsForValue(); operations.set(key, value); result = true; } catch (Exception e) { log.error("redisUtils set error,cause:" + e.getMessage(), e); } return result; } public Object get(final String key) { Object result = null; ValueOperations<Serializable, Object> operations = redisTemplate .opsForValue(); result = operations.get(key); return result; }
public boolean remove(final String key) { boolean result = false; if (StringUtils.isNotEmpty(key) && exists(key)) { redisTemplate.delete(key); result = true; } return result; }
public boolean exists(final String key) { return redisTemplate.hasKey(key); }
public String getType(final String key) { DataType dataType = redisTemplate.type(key); return dataType.code(); }
5.测试案例
@Autowired private RedisUtils redisUtils; @RequestMapping("/") public String index(){ boolean flag = redisUtils.set("demo", "hello redis"); log.info("flag:"+flag); Object name = redisUtils.get("demo"); log.info("name:"+name); Object type = redisUtils.getType("demo"); log.info("type:"+type); boolean remove = redisUtils.remove("demo"); log.info("remove:"+remove); return "index"; }