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. Python基础语法,他其实很贵!

    # -*- coding:utf-8 -*- # @Time :2019/7/19 11:26# @Author :ITester# @Email :1036881587@qq.com# @File ...

  2. Android Drawable 简析

    Drawable 是开发中经常用到的一个概念,我们经常用它去设置 View 的背景,背景可以一个颜色值,也可以是一张资源图片,还可以是一个自定义的 Drawable等等.这篇文章就简单说下 Drawa ...

  3. ASCALL码对照表

    ASCALL码对照表 目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Inter ...

  4. introduce new products

    Today's the day. I'm giving you the heads up. Our company is rolling up its new line of cell phones. ...

  5. PHP微信授权登录用于多个域名的方法

    PHP微信授权登录用于多个域名的方法appid和 回调地址换下就好了 <pre><!DOCTYPE html><html lang="en">& ...

  6. Git常用命令(基础)

    Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一.新建代码库 # 在当前目录新建一个Git代码库 $ git in ...

  7. nuxt.js 注册全局组件

    plugins 属性配置 src: String (文件的路径) ssr: Boolean (默认为 true) 如果值为 false,该文件只会在客户端被打包引入. 根目录找到 nuxt.confi ...

  8. 结合Spring Security进行web应用会话安全管理

    在本文中,将为大家说明如何结合Spring Security 和Spring Session管理web应用的会话. 一.Spring Security创建使用session的方法 Spring Sec ...

  9. 用安全密钥验证ssh

    1.需要打开两台虚拟机,并保证两台虚拟机可以ping通: 本地主机IP:192.168.8.120 远程主机IP:192.168.8.100 2.在本地主机生成密钥对,输入命令“ssh-keygen” ...

  10. web自动化测试启示篇

    1.首先,对于想学自动化测试的朋友,那么你得懂一种语言,常用的比如Java或者Python.因为没有语言基础,你是写不出自动化脚本的. 我个人选择java 2.有了开发语言的铺垫,那么开始入手Sele ...