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 项目某些场景中,我们需要用缓存解决如热点数据访问的性能问题,业 ...
随机推荐
- 「Usaco2008 Jan」人工湖O(∩_∩)O 纯属的模拟+栈
题目描述 夏日那让人喘不过气的酷热将奶牛们的烦躁情绪推到了最高点.最终,约翰决定建一个人工湖供奶牛消暑之用. 为了使湖看起来更加真实,约翰决定将湖的横截面建成N(1≤N≤105)个连续的平台高低错落的 ...
- 『图论』LCA最近公共祖先
概述篇 LCA(Least Common Ancestors),即最近公共祖先,是指这样的一个问题:在一棵有根树中,找出某两个节点 u 和 v 最近的公共祖先. LCA可分为在线算法与离线算法 在线算 ...
- Kubernetes(k8s)集群安装
一:简介 二:基础环境安装 1.系统环境 os Role ip Memory Centos 7 master01 192.168.25.30 4G Centos 7 node01 192.168.25 ...
- Apache Jmeter进行服务器压力测试
1.前言 最近项目遇到一个问题:其他公司对接我们系统,请求量太大的时候,返回单给对方就是丢失格式,大概十几万中总有那么十几单会出现格式错误! 所以我们老大就叫我用apache jmeter来进行并发测 ...
- 【Linux系列】Centos 7安装以及网络配置(一)
目的 本文主要介绍以下两点: 一. 如何在Oracle VM VirtualBox安装centos(已有VirtualBox) 二. 如何在内网里实现虚拟机访问外网.物理主机以及物理主机访问虚拟机 一 ...
- 配置SElinux环境,将SELinux设置为enforcing
SELinux是 美国国家安全局 (NSA) 对于 强制访问控制的实现 =>可以使root受限的权限 关闭SELinux=>修改配置文件,永久生效; sed -i 's/SELINUX=e ...
- lqb 基础练习 数列排序 (sort的使用)
基础练习 数列排序 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列.1<=n<=200 输入格式 第一行为一个整 ...
- webpack3、4的基本的使用方法
webpack的基本使用 webpack的安装 webpack的使用时需要借助 node 的环境的 在 node 中自动下载了 npm 这个包管理工具,之后的操作我们需要使用npm包管理工具进行相关操 ...
- CentOs虚拟机配置
1.打开“VMware”,点击“主页”,点“创建新的虚拟机”: 2.会弹出一个“新建虚拟机向导”,类型选择“典型”,点击“下一步”: 3.选择“稍后安装操作系统”,点击“下一步”: 4.我们用的是Li ...
- vant-ui的van-uploader上传图片
移动端上传图片是很常用的功能,这里使用vant-ui实现. 效果如图 上传图片的vue页面:Customer.vue html <div :class="postData.length ...