1、application.properties/application.yml配置:

  redis:
# redis数据库索引(默认为0),我们使用索引为3的数据库,避免和其他数据库冲突
database: 3
# redis服务器地址(默认为localhost)
host: localhost
# redis端口(默认为6379)
port: 6379
# redis访问密码(默认为空)
password:
# redis连接超时时间(单位为毫秒)
timeout: 1000
# redis连接池配置
jedis:
pool:
# 最大可用连接数(默认为8,负数表示无限)
max-active: 8
# 最大空闲连接数(默认为8,负数表示无限)
max-idle: 8
# 最小空闲连接数(默认为0,该值只有为正数才有作用)
min-idle: 0
# 从连接池中获取连接最大等待时间(默认为-1,单位为毫秒,负数表示无限)
max-wait: -1

2、pom.xml配置

<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>
</dependency>
<dependency>
<groupId>com.alicp.jetcache</groupId>
<artifactId>jetcache-starter-redis</artifactId>
<version>2.5.9</version>
</dependency>

3、代码中通用的redis工具类

package com.tianque.xueliang.controlalarm.common.redis;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.geo.Circle;
import org.springframework.data.geo.Distance;
import org.springframework.data.geo.GeoResults;
import org.springframework.data.geo.Point;
import org.springframework.data.redis.connection.RedisGeoCommands;
import org.springframework.data.redis.core.GeoOperations;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations; import java.util.concurrent.TimeUnit; /**
* @Author: sunxuesong@hztianque.com
* @Description:
* @Date: Created in 9:33 2019/3/15
* @Modifired by:
*/
public class RedisUtil {
private static final Logger logger = LoggerFactory.getLogger(RedisUtil.class); static private RedisTemplate redisTemplate; static private RedisTemplate getRedisTemplate() {
if (redisTemplate == null) {
redisTemplate = ApplicationContextHolder.getBean("redisTemplate");
}
return redisTemplate;
} /**
* Clears this cache instance
*/
public static void clear() {
RedisTemplate redisTemplate = getRedisTemplate();
redisTemplate.execute((RedisCallback) connection -> {
connection.flushDb();
return null;
});
} /**
* Remove cached query result from redis
*
* @param key
* @return
*/
@SuppressWarnings("unchecked")
public static Object removeObject(Object key) {
try {
RedisTemplate redisTemplate = getRedisTemplate();
redisTemplate.delete(key);
logger.debug("Remove cached query result from redis");
}
catch (Throwable t) {
logger.error("Redis remove failed", t);
}
return null;
} /**
* Put query result to redis
*
* @param key
* @param value
*/
@SuppressWarnings("unchecked")
public static void putObject(Object key, Object value, long EXPIRE_TIME, TimeUnit timeUnit) {
try {
RedisTemplate redisTemplate = getRedisTemplate();
ValueOperations opsForValue = redisTemplate.opsForValue();
opsForValue.set(key, value, EXPIRE_TIME, timeUnit);
logger.debug("Put query result to redis");
}
catch (Throwable t) {
logger.error("Redis put failed", t);
}
} /**
* Put geo result to redis
*
* @param key
* @param m
*/
@SuppressWarnings("unchecked")
public static Long geoAdd(Object key, Point point, Object m) {
try {
RedisTemplate redisTemplate = getRedisTemplate();
GeoOperations geoValue = redisTemplate.opsForGeo();
logger.debug("geoAdd result to redis");
return geoValue.geoAdd(key,point,m); }
catch (Throwable t) {
logger.error("geoAdd failed", t);
}
return null;
} /**
* geo dist result to redis
*
* @param key
* @param m1,m2
*/
@SuppressWarnings("unchecked")
public static Distance geoDist(Object key, Object m1, Object m2) {
try {
RedisTemplate redisTemplate = getRedisTemplate();
GeoOperations geoValue = redisTemplate.opsForGeo();
logger.debug("geoAdd result to redis");
return geoValue.geoDist(key,m1,m1);
}
catch (Throwable t) {
logger.error("geoAdd failed", t);
}
return null;
} /**
* nearDist
* @param key
* @param circle
* @param args
* @return
*/
public static GeoResults<RedisGeoCommands.GeoLocation> nearDist(Object key, Circle circle, RedisGeoCommands.GeoRadiusCommandArgs args) {
try {
RedisTemplate redisTemplate = getRedisTemplate();
GeoOperations geoValue = redisTemplate.opsForGeo();
logger.debug("geoAdd result to redis");
return geoValue.geoRadius(key,circle,args);
}
catch (Throwable t) {
logger.error("geoAdd failed", t);
}
return null;
} public static double zscore(String key, Object member) {
double value = 0;
RedisTemplate redisTemplate = getRedisTemplate();
value = redisTemplate.opsForZSet().score(key,member);
return value;
} /***
* <p>
* Description: 得到值
* </p>
*
* @param key
*/
public static Object get(String key) {
Object value = null;
RedisTemplate redisTemplate = getRedisTemplate();
value = redisTemplate.opsForValue().get(key);
return value;
} /***
* <p>
* Description: 设置键值
* </p>
* @param key
* value
*/
public static void set(String key, Object value) {
RedisTemplate redisTemplate = getRedisTemplate();
redisTemplate.opsForValue().set(key,value);
} /***
* <p>
* Description: 设置键值 并同时设置有效期
* </p>
* @param key
* seconds秒数 value
*/
public static void setex(String key, String value) {
RedisTemplate redisTemplate = getRedisTemplate();
redisTemplate.opsForValue().setIfAbsent(key,value);
} /**
*判断redis中是否已存在key对应的value
* @param key
* @return true/false
*
*/
public static boolean isExistValue(String key){
if (StringUtils.isBlank(key)){
return false;
} // 根据key获取redis的value
RedisTemplate redisTemplate = getRedisTemplate();
Object value = redisTemplate.opsForValue().get(key); if (value == null){
return false;
}
return true;
} /**
*判断redis中是否已存在key
* @param key
* @return true/false
*
*/
public static boolean isExistKey(String key){
if (StringUtils.isBlank(key)){
return false;
}
RedisTemplate redisTemplate = getRedisTemplate();
return redisTemplate.hasKey(key);
}
}

4、举例说明:

if (RedisUtil.isExistKey(job.getJob_id() + job.getLive_id() + f.getId())){
logger.info("已存在预警信息,不需要重复发送!,redisKey:{}",job.getJob_id() + job.getLive_id() + f.getId());
return ;
}else {
String value = sysConfigService.getValueByKey(Constant.ALARM_RIDDING_TIME);
logger.info("该预警不在redis中,可以发送预警..key:{},去重时间value:{}",job.getJob_id() + job.getLive_id(),value);
RedisUtil.putObject(job.getJob_id() + job.getLive_id() + f.getId(), Constant.PROCESS_METHOD_ADMISSBILITY_CENTER,Long.parseLong(value), TimeUnit.MINUTES); }

springcloud集成redis的更多相关文章

  1. 【springBoot】springBoot集成redis的key,value序列化的相关问题

    使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...

  2. SpringBoot集成redis的key,value序列化的相关问题

    使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...

  3. spring集成redis

    redis是一种非关系型数据库,与mongoDB不同的是redis是内存数据库,所以访问速度很快.常用作缓存和发布-订阅式的消息队列.redis官方没有提供windows版本的软件.windows版本 ...

  4. springboot集成redis(mybatis、分布式session)

    安装Redis请参考:<CentOS快速安装Redis> 一.springboot集成redis并实现DB与缓存同步 1.添加redis及数据库相关依赖(pom.xml) <depe ...

  5. Windows环境下springboot集成redis的安装与使用

    一,redis安装 首先我们需要下载Windows版本的redis压缩包地址如下: https://github.com/MicrosoftArchive/redis/releases 连接打开后如下 ...

  6. Springboot集成Redis步骤

    Spring boot 集成Redis的步骤如下: 1.在pom.xml中配置相关的jar依赖: <!--加载spring boot redis包 --> <dependency&g ...

  7. springcloud集成zookeeper,并使用configserver作为服务的配置中心

    1.springcloud集成zookeeper: 做法: 出现问题: 版本不一致导致出现keepError: 解决:服务器的zookeeper要与客户端的zookeeper一致,才可以. 2.使用c ...

  8. spring boot集成redis的血泪史

    首先说明环境不是我搭建的,然后因项目需要添加redis的时候,麻烦来了.springboot 用的是1.5.9因为以前弄过redis,所以直接拿过来,麻烦了首先是莫名的错误,连项目都启动不了.但是最后 ...

  9. Spring Boot 项目实战(四)集成 Redis

    一.前言 上篇介绍了接口文档工具 Swagger 及项目监控工具 JavaMelody 的集成过程,使项目更加健壮.在 JAVA Web 项目某些场景中,我们需要用缓存解决如热点数据访问的性能问题,业 ...

随机推荐

  1. ISCONF Redis is configured to save RDB snapshots

    MISCONF Redis is configured to save RDB snapshots redis报错: (error) MISCONF Redis is configured to sa ...

  2. 每天3分钟操作系统修炼秘籍(13):两个缓冲空间Kernel Buffer和IO Buffer

    两个缓冲空间:kernel buffer和io buffer 先看一张图,稍后将围绕这张图展开描述.图中的fd table.open file table以及两个inode table都可以不用理解, ...

  3. Hibernate的多对多关系

    1.表的关系: 分别有三个表:课程表.学生表.分数表.课程和学生的关系是多对多的,因为一个学生对应多个课程,而一个课程被多个学生选修.如果用一对多.多对一的观点来看待课程和学生的关系显然是不对的,因为 ...

  4. JavaScript中BOM与DOM的使用

    BOM: 概念:Browser Object Model 浏览器对象模型 将浏览器的各个组成部分封装成对象. 组成: Window:窗口对象 Navigator:浏览器对象 Screen:显示器屏幕对 ...

  5. 使用Rider中搭建specflow+xunit+selenium对web页面进行自动化功能测试环境

    运行rider,创建测试解决方案,选择xunit,点击create创建 ​   导入包,由于本人使用chrome浏览器(需先下载好对应的浏览器驱动),所以导入了selenium.webdriver.c ...

  6. [ASP.NET Core 3框架揭秘] 文件系统[1]:抽象的“文件系统”

    ASP.NET Core应用 具有很多读取文件的场景,比如配置文件.静态Web资源文件(比如CSS.JavaScript和图片文件等)以及MVC应用的View文件,甚至是直接编译到程序集中的内嵌资源文 ...

  7. T-SQL, Part II: IMAGE/TEXT Insert

    To insert data to IMAGE/TEXT (both keywords are recommend to replace with nvarbinary(MAX)/nvarchar(M ...

  8. pdf2eps implement

    Well, I used the command pdftops in the LaTeX distribution such as MiKTeX/TeXLive/CTex to implement ...

  9. UML分析AsyncDisplayKit框架-ASMuplexImageNode异步下载时序图。

    PS:博客园图片服务器不正常工作,数据上传后服务器返回http500,园方迟迟还没解决. 我从2016-01-18 05:52向园方反馈问题-请问博客园的图片服务器有在正常运行吗,至此时2016-01 ...

  10. GeoServer 查询sql视图

    说明: 最近项目中遇到一个需求,需要统计管网的长度,但管网数据量非常大,前端用openlayers接口统计直接就奔溃了. 后尝试使用调后台接口查数据库的方式,虽然可行但是又要多一层与后台交互的工作. ...