在idea中集成redis
导入pom依赖
<!-- rdeis-data--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!--jedis配置 官方推荐,现在项目一般不适应--> <!-- <dependency>--> <!-- <groupId>redis.clients</groupId>--> <!-- <artifactId>jedis</artifactId>--> <!-- <version>3.3.0</version>--> <!-- </dependency>-->
配置application,根据需求添加
spring.redis.host=127.0.0.1
spring.redis.port=6379
配置redis自动序列化
@Configuration public class RedisConfig { // 编写redistamle @Bean @SuppressWarnings("all") public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownException { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); // json序列号 Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<Object>(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); serializer.setObjectMapper(om); // string序列号 StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); // key 采用string的序列化方式 template.setKeySerializer(stringRedisSerializer); // Hash的key 采用string的序列化方式 template.setHashKeySerializer(stringRedisSerializer); // value采用Jackson2JsonRedisSerializer的序列化方式 template.setValueSerializer(serializer); // Hash的value 采用Jackson2JsonRedisSerializer的序列化方式 template.setHashValueSerializer(serializer); // 配置具体的序列化方式 template.afterPropertiesSet(); return template; } }
编写一个工具类,这个公司一般都会集成有。
@Component public class RedisUtils { @Autowired private RedisTemplate<String, Object> redisTemplate; /* *指定缓存实习时间 */ public Boolean expire(String key, long time){ try { if (time > 0){ redisTemplate.expire(key, time, TimeUnit.SECONDS); } return true; }catch (Exception e){ e.printStackTrace(); return false; } } /* *获取过期时间 判断key是否存在 * 返回0代表永久有效 */ public long getExpire(String key){ return redisTemplate.getExpire(key, TimeUnit.SECONDS); } /** * 判断key是否存在 */ public boolean hasKey(String key){ try { return redisTemplate.hasKey(key); }catch (Exception e){ e.printStackTrace(); return false; } } /** * 删除缓存 key可以传多个或者一个 */ public void delKey(String... key){ if (key != null && key.length > 0){ if (key.length == 1){ redisTemplate.delete(key[1]); }else { for (int i = 0; i < key.length; i++){ redisTemplate.delete(key[i]); } } } } /** * 普通缓存获取 */ public Object getObject(String key){ return key == null ? null : redisTemplate.opsForValue().get(key); } /** * 普通缓存存入 */ public boolean setObject(String key, Object value){ try{ redisTemplate.opsForValue().set(key, value); return true; }catch (Exception e){ e.printStackTrace(); return false; } } /** * 普通缓存存入并设置时间 * 如果time小于或等于0则设置无限期 */ public boolean setObjectTime(String key, Object value, long time){ try{ if (time > 0){ redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); }else { redisTemplate.opsForValue().set(key, value); } return true; }catch (Exception e){ e.printStackTrace(); return false; } } /** *递增 * key 键 * data 值 要增加几大于0 */ public long incr(String key, long data){ if (data < 0){ throw new RuntimeException("递增因子必须大于0"); } return redisTemplate.opsForValue().increment(key, data); } /** *递减 * key 键 * data 值 要减少几大于0 */ public long decr(String key, long data){ if (data < 0){ throw new RuntimeException("递减因子必须大于0"); } return redisTemplate.opsForValue().decrement(key, -data); } /** * 获取hashMap * key 键 * item 项 */ public Object hashGet(String key, String item){ return redisTemplate.opsForHash().get(key, item); } /** * 获取hashMap对应的所有键值 * key 键 */ public Map<Object, Object> hashGetAll(String key){ return redisTemplate.opsForHash().entries(key); } /** * 存储hashMap * key 键 * item 项 */ public boolean hashSet(String key, Map<String, Object> map){ try{ redisTemplate.opsForHash().putAll(key, map); return true; }catch (Exception e){ e.printStackTrace(); return false; } } /** * 存入hash并设置时间 */ public boolean hashSetTime(String key, Map<String, Object> map, long time){ try{ redisTemplate.opsForHash().putAll(key, map); if (time > 0){ expire(key, time); } return true; }catch (Exception e){ e.printStackTrace(); return false; } } // /** // * 获取list // */ // public Object lGet(String key){ // return redisTemplate.opsForList().leftPop(key); // } // // /** // * 设置list // */ // // public boolean lSet(String key, List<Object> list, long time){ // try{ // if (time > 0){ // redisTemplate.opsForList().set(key,time, list); // }else { // redisTemplate.opsForList().leftPushAll(key, list); // } // return true; // }catch (Exception e){ // e.printStackTrace(); // return false; // } // } }