springcloud集成redis
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的更多相关文章
- 【springBoot】springBoot集成redis的key,value序列化的相关问题
使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...
- SpringBoot集成redis的key,value序列化的相关问题
使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...
- spring集成redis
redis是一种非关系型数据库,与mongoDB不同的是redis是内存数据库,所以访问速度很快.常用作缓存和发布-订阅式的消息队列.redis官方没有提供windows版本的软件.windows版本 ...
- springboot集成redis(mybatis、分布式session)
安装Redis请参考:<CentOS快速安装Redis> 一.springboot集成redis并实现DB与缓存同步 1.添加redis及数据库相关依赖(pom.xml) <depe ...
- Windows环境下springboot集成redis的安装与使用
一,redis安装 首先我们需要下载Windows版本的redis压缩包地址如下: https://github.com/MicrosoftArchive/redis/releases 连接打开后如下 ...
- Springboot集成Redis步骤
Spring boot 集成Redis的步骤如下: 1.在pom.xml中配置相关的jar依赖: <!--加载spring boot redis包 --> <dependency&g ...
- springcloud集成zookeeper,并使用configserver作为服务的配置中心
1.springcloud集成zookeeper: 做法: 出现问题: 版本不一致导致出现keepError: 解决:服务器的zookeeper要与客户端的zookeeper一致,才可以. 2.使用c ...
- spring boot集成redis的血泪史
首先说明环境不是我搭建的,然后因项目需要添加redis的时候,麻烦来了.springboot 用的是1.5.9因为以前弄过redis,所以直接拿过来,麻烦了首先是莫名的错误,连项目都启动不了.但是最后 ...
- Spring Boot 项目实战(四)集成 Redis
一.前言 上篇介绍了接口文档工具 Swagger 及项目监控工具 JavaMelody 的集成过程,使项目更加健壮.在 JAVA Web 项目某些场景中,我们需要用缓存解决如热点数据访问的性能问题,业 ...
随机推荐
- ISCONF Redis is configured to save RDB snapshots
MISCONF Redis is configured to save RDB snapshots redis报错: (error) MISCONF Redis is configured to sa ...
- 每天3分钟操作系统修炼秘籍(13):两个缓冲空间Kernel Buffer和IO Buffer
两个缓冲空间:kernel buffer和io buffer 先看一张图,稍后将围绕这张图展开描述.图中的fd table.open file table以及两个inode table都可以不用理解, ...
- Hibernate的多对多关系
1.表的关系: 分别有三个表:课程表.学生表.分数表.课程和学生的关系是多对多的,因为一个学生对应多个课程,而一个课程被多个学生选修.如果用一对多.多对一的观点来看待课程和学生的关系显然是不对的,因为 ...
- JavaScript中BOM与DOM的使用
BOM: 概念:Browser Object Model 浏览器对象模型 将浏览器的各个组成部分封装成对象. 组成: Window:窗口对象 Navigator:浏览器对象 Screen:显示器屏幕对 ...
- 使用Rider中搭建specflow+xunit+selenium对web页面进行自动化功能测试环境
运行rider,创建测试解决方案,选择xunit,点击create创建 导入包,由于本人使用chrome浏览器(需先下载好对应的浏览器驱动),所以导入了selenium.webdriver.c ...
- [ASP.NET Core 3框架揭秘] 文件系统[1]:抽象的“文件系统”
ASP.NET Core应用 具有很多读取文件的场景,比如配置文件.静态Web资源文件(比如CSS.JavaScript和图片文件等)以及MVC应用的View文件,甚至是直接编译到程序集中的内嵌资源文 ...
- T-SQL, Part II: IMAGE/TEXT Insert
To insert data to IMAGE/TEXT (both keywords are recommend to replace with nvarbinary(MAX)/nvarchar(M ...
- pdf2eps implement
Well, I used the command pdftops in the LaTeX distribution such as MiKTeX/TeXLive/CTex to implement ...
- UML分析AsyncDisplayKit框架-ASMuplexImageNode异步下载时序图。
PS:博客园图片服务器不正常工作,数据上传后服务器返回http500,园方迟迟还没解决. 我从2016-01-18 05:52向园方反馈问题-请问博客园的图片服务器有在正常运行吗,至此时2016-01 ...
- GeoServer 查询sql视图
说明: 最近项目中遇到一个需求,需要统计管网的长度,但管网数据量非常大,前端用openlayers接口统计直接就奔溃了. 后尝试使用调后台接口查数据库的方式,虽然可行但是又要多一层与后台交互的工作. ...