1在application.yml文件添加redis配置

#redisredis:host: 127.0.0.1port: 6379pool:max-active: 8max-wait: 1max-idle: 8min-idle: 0timeout: 0

2:在pom里面添加依赖

<!-- springboot整合redis -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

3:增加redis工具类:

package com.yougou.util;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.stereotype.Component;
import org.springframework.util.CollectionUtils;import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;/*** @author li.cn* @email chen.mz@belle.com.cn* @nickname 李春南* @version 2019年01月31日 上午11:42:38* @description Redis工具类*/
@Component
public final class RedisUtils {private static final Logger logger = LoggerFactory.getLogger(RedisUtils.class);public static final String JEDIS_PREFIX = "outside_";@Autowiredprivate RedisTemplate<Object, Object> redisTemplate;// =============================common============================/*** 指定缓存失效时间* * @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) {logger.error("设置缓存失效时间,失败:" + e);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) {logger.error("判断key是否存在,失败:" + e);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));}}}// ============================String=============================/*** 普通缓存获取* * @param key*            键* @return 值*/public Object get(String key) {return key == null ? null : redisTemplate.opsForValue().get(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) {logger.error("将object写入缓存,失败:" + e);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) {logger.error("将object写入缓存并设置失效时间,失败:" + e);return false;}}/*** 递增* * @param key*            键* @param delta*            要增加几(大于0)* @return*/public long incr(String key, long delta) {if (delta < 0) {throw new RuntimeException("递增因子必须大于0");}return redisTemplate.opsForValue().increment(key, delta);}/*** 递减* * @param key*            键* @param delta*            要减少几(大于0)* @return*/public long decr(String key, long delta) {if (delta < 0) {throw new RuntimeException("递减因子必须大于0");}return redisTemplate.opsForValue().increment(key, -delta);}// ================================Map=================================/*** HashGet* * @param key*            键 不能为null* @param item*            项 不能为null* @return 值*/public Object hget(String key, String item) {return redisTemplate.opsForHash().get(key, item);}/*** 获取hashKey对应的所有键值* * @param key*            键* @return 对应的多个键值*/public Map<Object, Object> hmget(String key) {return redisTemplate.opsForHash().entries(key);}/*** HashSet* * @param key*            键* @param map*            对应多个键值* @return true 成功 false ,失败*/public boolean hmset(String key, Map<String, Object> map) {try {redisTemplate.opsForHash().putAll(key, map);return true;} catch (Exception e) {logger.error("将map写入缓存,失败:" + e);return false;}}/*** HashSet 并设置时间* * @param key*            键* @param map*            对应多个键值* @param time*            时间(秒)* @return true成功 false,失败*/public boolean hmset(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) {logger.error("将map写入缓存并设置失效时间,失败:" + e);return false;}}/*** 向一张hash表中放入数据,如果不存在将创建* * @param key*            键* @param item*            项* @param value*            值* @return true 成功 false,失败*/public boolean hset(String key, String item, Object value) {try {redisTemplate.opsForHash().put(key, item, value);return true;} catch (Exception e) {logger.error("向hash表中写数据,失败:" + e);return false;}}/*** 向一张hash表中放入数据,并设置过期时间,如果不存在将创建* * @param key*            键* @param item*            项* @param value*            值* @param time*            时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间* @return true 成功 false,失败*/public boolean hset(String key, String item, Object value, long time) {try {redisTemplate.opsForHash().put(key, item, value);if (time > 0) {expire(key, time);}return true;} catch (Exception e) {logger.error("向hash表中写数据并设置过期,失败:" + e);return false;}}/*** 删除hash表中的值* * @param key*            键 不能为null* @param item*            项 可以使多个 不能为null*/public void hdel(String key, Object... item) {redisTemplate.opsForHash().delete(key, item);}/*** 判断hash表中是否有该项的值* * @param key*            键 不能为null* @param item*            项 不能为null* @return true 存在 false不存在*/public boolean hHasKey(String key, String item) {return redisTemplate.opsForHash().hasKey(key, item);}/*** hash递增 如果不存在,就会创建一个 并把新增后的值返回* * @param key*            键* @param item*            项* @param by*            要增加几(大于0)* @return*/public double hincr(String key, String item, double by) {return redisTemplate.opsForHash().increment(key, item, by);}/*** hash递减* * @param key*            键* @param item*            项* @param by*            要减少几(大于0)* @return*/public double hdecr(String key, String item, double by) {return redisTemplate.opsForHash().increment(key, item, -by);}// ============================set=============================/*** 根据key获取Set中的所有值* * @param key*            键* @return*/public Set<Object> sGet(String key) {try {return redisTemplate.opsForSet().members(key);} catch (Exception e) {logger.error("根据key获取Set中的所有值,失败:" + e);return null;}}/*** 根据value从一个set中查询,是否存在* * @param key*            键* @param value*            值* @return true 存在 false不存在*/public boolean sHasKey(String key, Object value) {try {return redisTemplate.opsForSet().isMember(key, value);} catch (Exception e) {logger.error("根据value从一个set中查询是否存在,失败:" + e);return false;}}/*** 将数据放入set缓存* * @param key*            键* @param values*            值 可以是多个* @return 成功个数*/public long sSet(String key, Object... values) {try {return redisTemplate.opsForSet().add(key, values);} catch (Exception e) {logger.error("将数据放入set缓存,失败:" + e);return 0;}}/*** 将set数据放入缓存,并设置失效时间* * @param key*            键* @param time*            时间(秒)* @param values*            值 可以是多个* @return 成功个数*/public long sSetAndTime(String key, long time, Object... values) {try {Long count = redisTemplate.opsForSet().add(key, values);if (time > 0) {expire(key, time);}return count;} catch (Exception e) {logger.error("将数据放入set缓存并设置失效时间,失败:" + e);return 0;}}/*** 获取set缓存的长度* * @param key*            键* @return*/public long sGetSetSize(String key) {try {return redisTemplate.opsForSet().size(key);} catch (Exception e) {logger.error("获取set缓存的长度,失败:" + e);return 0;}}/*** 移除值为value的数据* * @param key*            键* @param values*            值 可以是多个* @return 移除的个数*/public long setRemove(String key, Object... values) {try {return redisTemplate.opsForSet().remove(key, values);} catch (Exception e) {logger.error("移除值为value的数据,失败:" + e);return 0;}}// ===============================list=================================/*** 获取list缓存的内容* * @param key*            键* @param start*            开始* @param end*            结束 0 到 -1代表所有值* @return*/public List<Object> lGet(String key, long start, long end) {try {return redisTemplate.opsForList().range(key, start, end);} catch (Exception e) {logger.error("获取list缓存的内容,失败:" + e);return null;}}/*** 获取list缓存的长度* * @param key*            键* @return*/public long lGetListSize(String key) {try {return redisTemplate.opsForList().size(key);} catch (Exception e) {logger.error("获取list缓存的长度,失败:" + e);return 0;}}/*** 通过索引获取list中的值* * @param key*            键* @param index*            索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推* @return*/public Object lGetIndex(String key, long index) {try {return redisTemplate.opsForList().index(key, index);} catch (Exception e) {logger.error("通过索引获取list中的值,失败:" + e);return null;}}/*** 将set放入缓存* * @param key*            键* @param value*            值* @return*/public boolean lSet(String key, Object value) {try {redisTemplate.opsForList().rightPush(key, value);return true;} catch (Exception e) {logger.error("将set放入缓存,失败:" + e);return false;}}/*** 将set放入缓存,并设置过期 时间* * @param key*            键* @param value*            值* @param time*            时间(秒)* @return*/public boolean lSet(String key, Object value, long time) {try {redisTemplate.opsForList().rightPush(key, value);if (time > 0) {expire(key, time);}return true;} catch (Exception e) {logger.error("将set放入缓存并设置过期 时间,失败:" + e);return false;}}/*** 将set放入缓存* * @param key*            键* @param value*            值* @return*/public boolean lSet(String key, List<Object> value) {try {redisTemplate.opsForList().rightPushAll(key, value);return true;} catch (Exception e) {logger.error("将set放入缓存,失败:" + e);return false;}}/*** 将set放入缓存,并设置过期时间* * @param key*            键* @param value*            值* @param time*            时间(秒)* @return*/public boolean lSet(String key, List<Object> value, long time) {try {redisTemplate.opsForList().rightPushAll(key, value);if (time > 0) {expire(key, time);}return true;} catch (Exception e) {logger.error("将set放入缓存并设置过期时间,失败:" + e);return false;}}/*** 根据索引修改list中的某条数据* * @param key*            键* @param index*            索引* @param value*            值* @return*/public boolean lUpdateIndex(String key, long index, Object value) {try {redisTemplate.opsForList().set(key, index, value);return true;} catch (Exception e) {logger.error("根据索引修改list中的某条数据,失败:" + e);return false;}}/*** 移除N个值为value* * @param key*            键* @param count*            移除多少个* @param value*            值* @return 移除的个数*/public long lRemove(String key, long count, Object value) {try {return redisTemplate.opsForList().remove(key, count, value);} catch (Exception e) {logger.error("移除N个值为value,失败:" + e);return 0;}}public String getKey(String key){return JEDIS_PREFIX + key;}}

spring boot 整合redis相关推荐

  1. Spring boot - 整合 Redis缓存(上)

    一.配置Pom文件 在使用spring boot 2.0整合redis时遇到了好多问题,网上很多例子都是1.x版本的.故2.0没有折腾好所以将2.0降到了1.5.降级后由于thymeleaf版本也会从 ...

  2. Spring Boot基础学习笔记08:Spring Boot整合Redis

    文章目录 零.学习目标 1.熟悉Redis相关概念 2.掌握使用Spring Boot整合Redis 一.Redis概述 1.Redis简介 2.Redis优点 (1)存取速度快 (2)数据类型丰富 ...

  3. 十一、Spring Boot整合Redis(一)

    Spring Boot整合Redis    1. SpringBoot+单例Redis 1)引入依赖 <dependency>     <groupId>org.springf ...

  4. Spring boot整合Redis(入门教程)

    目录 源码分析 jedis VS lettuce 整合测试 导入依赖 配置连接 测试 存入字符串 存入对象 五大数据类型操作 自定义RedisConfig 存入对象 Redis工具类(常用API) 以 ...

  5. 大聪明教你学Java | Spring Boot 整合 Redis 实现访问量统计

    前言 之前开发系统的时候客户提到了一个需求:需要统计某些页面的访问量,记得当时还纠结了一阵子,不知道怎么去实现这个功能,后来还是在大佬的带领下借助 Redis 实现了这个功能.今天又回想起了这件事,正 ...

  6. Spring Boot 整合Redis 包含Java操作Redis哨兵 作者:哇塞大嘴好帥(哇塞大嘴好帅)

    Spring Boot 整合Redis 包含Java操作Redis哨兵 作者:哇塞大嘴好帥(哇塞大嘴好帅) 1. 配置环境 在SpringBoot2.0版本以后,原来使用的jedis被替换成为了let ...

  7. Spring boot整合Redis实现发布订阅(超详细)

    Redis发布订阅 基础知识 相关命令 订阅者/等待接收消息 发布者/发送消息 订阅者/成功接收消息 常用命令汇总 原理 Spring boot整合redis 导入依赖 Redis配置 消息封装类(M ...

  8. 微服务Spring Boot 整合 Redis 实现 好友关注

    文章目录 ⛅引言 一.Redis 实现好友关注 -- 关注与取消关注 二.Redis 实现好友关注 -- 共同关注功能 ⛵小结 ⛅引言 本博文参考 黑马 程序员B站 Redis课程系列 在点评项目中, ...

  9. 猿创征文 | 微服务 Spring Boot 整合Redis 实战开发解决高并发数据缓存

    文章目录 一.什么是 缓存? ⛅为什么用缓存? ⚡如何使用缓存 二.实现一个商家缓存 ⌛环境搭建 ♨️核心源码 ✅测试接口 三.采用 微服务 Spring Boot 注解开启缓存 ✂️@CacheEn ...

  10. [由零开始]Spring boot 整合redis集群

    Spring boot 整合redis集群 一.环境搭建 Redis集群环境搭建:https://blog.csdn.net/qq497811258/article/details/108124697 ...

最新文章

  1. Uva 3767 Dynamic len(set(a[L:R])) 树套树
  2. output_buffering详细介绍
  3. nvme驱动_耗时3天2夜,搞定了macbook pro(2015款)更换nvme固态,经验分享一下,希望能帮到有需要的人!...
  4. 海信FW3010-5000H千兆防火墙
  5. 2021-03-06JAVA大数据Week1
  6. springMVC3学习(八)--全球异常处理
  7. 概率论从入门到放弃?布朗学霸火到宕机的毕业作品,让统计“看得见”
  8. 软件构造第一篇博客(“可变形与不可变性”)
  9. iOS手势识别的工作原理
  10. Ubuntu安装教程
  11. 2、图片亮度,对比度,饱和度,明度调整 transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
  12. 百度、太一云、趣链、星合、达令共议什么是真区块链【区块链打假】
  13. 进程控制-创建、退出、等待、替换
  14. 数据结构:使用链栈实现回文判断
  15. 思科无线认证服务器,思科服务器认证配置
  16. windows环境中Python中调用matlab
  17. CTF-Web入门-get_post
  18. 分布式持久内存文件系统Octopus(ATC-17 )分析(一)
  19. 【HBase】HBase的环境搭建及基本使用
  20. CityEngine中的坐标系统

热门文章

  1. 一文看懂互动视频的发展、应用及创新
  2. 从入门到大神,表弟的Python 开发进击之路
  3. 解决 白鹭引擎 egret 龙骨动画 Deprecated 已废弃
  4. 持续有效的风险指标:动荡指数
  5. 7 片段Fragment:模块化
  6. 不可见字符​​​“​\u200b“的坑
  7. es6(二) 解构赋值
  8. 全自动绕线机系统绕线单元的设计
  9. 中文顿号怎么输入_如何打顿号?详细教您键盘上的顿号怎么打出来
  10. C++面试题(一)——基础概念篇