1、第一步:在springboot项目里面引入redis的依赖,可以在创建的时候勾选redis,maven如下:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis-reactive</artifactId></dependency>勾选如图:
2、第二步:写一个redis配置类文件,词配置类主要是定义存储数据序列化的格式,代码如下:@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); // 配置连接工厂 template.setConnectionFactory(factory); //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式) Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常 om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jacksonSeial.setObjectMapper(om); // 值采用json序列化 template.setValueSerializer(jacksonSeial); //使用StringRedisSerializer来序列化和反序列化redis的key值 template.setKeySerializer(new StringRedisSerializer()); // 设置hash key 和value序列化模式 template.setHashKeySerializer(new StringRedisSerializer()); template.setHashValueSerializer(jacksonSeial); template.afterPropertiesSet(); return template;}
3、第三步:获取redisTemplate的返回的数据类型,代码如下:/** * 对hash类蕞瞀洒疸型的数据操作 * * @param redisTemplate * @return */@Be锾攒揉敫anpublic HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForHash();}/** * 对redis字符串类型数据操作 * * @param redisTemplate * @return */@Beanpublic ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForValue();}/** * 对链表类型的数据操作 * * @param redisTemplate * @return */@Beanpublic ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForList();}/** * 对无序集合类型的数据操作 * * @param redisTemplate * @return */@Beanpublic SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForSet();}/** * 对有序集合类型的数据操作 * * @param redisTemplate * @return */@Beanpublic ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForZSet();}
4、第四步:编写一个redis工具类,方便对数据的操作,代码如下:@Autowiredprivate R髫潋啜缅edisTemplate<String, Object> redisTemplate;public RedisUtil(RedisTemplate<String, Object> redisTemplate) { this.redisTemplate = redisTemplate;}/** * 指定缓存失效时间 * @param key 键 * @param time 时间(秒) * @return */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 获取过期时间 * @param key 键 不能为null * @return 时间(秒) 返回0代表为永久有效 */public long getExpire(String key){ return redisTemplate.getExpire(key,TimeUnit.SECONDS);}/** * 判断key是否存在 * @param key 键 * @return true 存在 false不存在 */public boolean hasKey(String key){ try { return redisTemplate.hasKey(key); } catch (Exception e) { e.printStackTrace(); return false; }}/** * 删除缓存 * @param key 可以传一个值 或多个 */@SuppressWarnings("unchecked")public void del(String ... key){ if(key!=null&&key.length>0){ if(key.length==1){ redisTemplate.delete(key[0]); }else{ redisTemplate.delete(CollectionUtils.arrayToList(key)); } }}/** * 普通缓存放入 * @param key 键 * @param value 值 * @return true成功 false失败 */public boolean set(String key,Object value) { try { redisTemplate.opsForValue().set(key, value); return true; } catch (Exception e) { e.printStackTrace(); return false; }}/** * 普通缓存放入并设置时间 * @param key 键 * @param value 值 * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 * @return true成功 false 失败 */public boolean set(String key,Object value,long time){ try { if(time>0){ redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); }else{ set(key, value); } return true; } catch (Exception e) { e.printStackTrace(); return false; }}
5、第五步:redis的操作,比如set一个数据,删除一个数据,代码如下:redisUtil.set("xx", "oo");redisUtil.del("xx");
6、第五步:设置一个有过期时间的数据,和判断Key是否存在,代码如下:// 设置数据过期时间redisUtil.set("aaa", "xxx", 10000);// 判断key是否存在redisUtil.hasKey("aaa");
7、第七步:redis的方法很多,功能也很多,可以参考官方给出的文档