【Redis】SpringBoot 整合 Redis
阿新 • • 發佈:2018-12-31
1、pom依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>1.5.1.RELEASE</version> </dependency>
2、redis.properties配置
spring.redis.host=www.zbbro.com
spring.redis.password=liweizhong
spring.redis.port=16379
spring.redis.pool.max-idle=100
spring.redis.pool.min-idle=1
spring.redis.pool.max-active=1000
spring.redis.pool.max-wait=-1
3、RedisConfig.java
//package com.lwz.redis.config; // //import com.fasterxml.jackson.annotation.JsonAutoDetect; //import com.fasterxml.jackson.annotation.PropertyAccessor; //import com.fasterxml.jackson.databind.ObjectMapper; //import org.springframework.cache.CacheManager; //import org.springframework.cache.annotation.EnableCaching; //import org.springframework.cache.interceptor.KeyGenerator; //import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Configuration; //import org.springframework.data.redis.cache.RedisCacheConfiguration; //import org.springframework.data.redis.cache.RedisCacheManager; //import org.springframework.data.redis.cache.RedisCacheWriter; //import org.springframework.data.redis.connection.RedisConnectionFactory; //import org.springframework.data.redis.core.RedisTemplate; //import org.springframework.data.redis.core.StringRedisTemplate; //import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; //import org.springframework.data.redis.serializer.StringRedisSerializer; // //import java.lang.reflect.Method; //import java.time.Duration; // //@Configuration //@EnableCaching //public class RedisConfig { // // // // @Bean // public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) { // RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig() // .entryTtl(Duration.ofHours(1)); // 設定快取有效期一小時 // return RedisCacheManager // .builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory)) // .cacheDefaults(redisCacheConfiguration).build(); // } // // @Bean // public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) { // RedisTemplate<Object, Object> template = new RedisTemplate<>(); // template.setConnectionFactory(connectionFactory); // // //使用Jackson2JsonRedisSerializer來序列化和反序列化redis的value值(預設使用JDK的序列化方式) // Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class); // // ObjectMapper mapper = new ObjectMapper(); // mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); // mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); // serializer.setObjectMapper(mapper); // // template.setValueSerializer(serializer); // //使用StringRedisSerializer來序列化和反序列化redis的key值 // template.setKeySerializer(new StringRedisSerializer()); // template.afterPropertiesSet(); // return template; // } // @Bean // public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory factory) { // StringRedisTemplate stringRedisTemplate = new StringRedisTemplate(); // stringRedisTemplate.setConnectionFactory(factory); // return stringRedisTemplate; // } //}
4、RedisService.java
package com.lwz.redis.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.*; import org.springframework.stereotype.Service; import java.io.Serializable; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; @Service public class RedisService { @Autowired private RedisTemplate redisTemplate; /** * 寫入快取 * @param key * @param value * @return */ 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) { e.printStackTrace(); } return result; } /** * 寫入快取設定時效時間 * @param key * @param value * @return */ public boolean set(final String key, Object value, Long expireTime) { boolean result = false; try { ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); operations.set(key, value); redisTemplate.expire(key, expireTime, TimeUnit.SECONDS); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 批量刪除對應的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<Serializable> 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); } /** * 讀取快取 * @param key * @return */ public Object get(final String key) { Object result = null; ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); result = operations.get(key); return result; } /** * 雜湊 新增 * @param key * @param hashKey * @param value */ public void hmSet(String key, Object hashKey, Object value){ HashOperations<String, Object, Object> hash = redisTemplate.opsForHash(); hash.put(key,hashKey,value); } /** * 雜湊獲取資料 * @param key * @param hashKey * @return */ public Object hmGet(String key, Object hashKey){ HashOperations<String, Object, Object> hash = redisTemplate.opsForHash(); return hash.get(key,hashKey); } /** * 列表新增 * @param k * @param v */ public void lPush(String k,Object v){ ListOperations<String, Object> list = redisTemplate.opsForList(); list.rightPush(k,v); } /** * 列表獲取 * @param k * @param l * @param l1 * @return */ public List<Object> lRange(String k, long l, long l1){ ListOperations<String, Object> list = redisTemplate.opsForList(); return list.range(k,l,l1); } /** * 集合新增 * @param key * @param value */ public void add(String key,Object value){ SetOperations<String, Object> set = redisTemplate.opsForSet(); set.add(key,value); } /** * 集合獲取 * @param key * @return */ public Set<Object> setMembers(String key){ SetOperations<String, Object> set = redisTemplate.opsForSet(); return set.members(key); } /** * 有序集合新增 * @param key * @param value * @param scoure */ public void zAdd(String key,Object value,double scoure){ ZSetOperations<String, Object> zset = redisTemplate.opsForZSet(); zset.add(key,value,scoure); } /** * 有序集合獲取 * @param key * @param scoure * @param scoure1 * @return */ public Set<Object> rangeByScore(String key,double scoure,double scoure1){ ZSetOperations<String, Object> zset = redisTemplate.opsForZSet(); return zset.rangeByScore(key, scoure, scoure1); } }