ylbtech-Java-Class-C:com.ylbtech.api.platfrom.util.RedisUtils.class
1.返回顶部
 
2.返回顶部
 
3.返回顶部
 
4.返回顶部
1、
package com.ylbtech.api.platform.util;

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.TimeUnit; /**
* Redis工具
* */
@Component
public class RedisUtils {
@Resource private RedisTemplate<String, Object> redisTemplate; // =============================common============================ /**
* 设置缓存失效时间
*
* @param key 键
* @param timeout 时间
* @return {Boolean}
*/
public Boolean setExpire(@NotBlank final String key, @NotBlank final Duration timeout) {
if (timeout.getSeconds() > 0) {
return this.redisTemplate.expire(key, timeout.getSeconds(), TimeUnit.SECONDS);
}
return false;
} /**
* 获取缓存失效时间
*
* @param key 键
* @return 时间(秒) 0为永久有效
*/
public Long getExpire(@NotBlank final String key) {
return this.redisTemplate.getExpire(key, TimeUnit.SECONDS);
} /**
* key 是否存在
*
* @param key 键
* @return {Boolean}
*/
public Boolean hasKey(@NotBlank final String key) {
return this.redisTemplate.hasKey(key);
} /**
* 删除缓存
*
* @param keys 键
*/
public Boolean delete(@NotBlank final String... keys) {
return keys.length
== Optional.ofNullable(this.redisTemplate.delete(Arrays.asList(keys))).orElse(-1L);
} // ============================String============================= /**
* 获取普通缓存
*
* @param key 键
* @return 值
*/
public Object getValue(@NotBlank final String key) {
return this.redisTemplate.opsForValue().get(key);
} /**
* 设置普通缓存
*
* @param key 键
* @param value 值
*/
public void setValue(@NotBlank final String key, @NotBlank final Object value) {
this.redisTemplate.opsForValue().set(key, value);
} /**
* 设置普通缓存
*
* @param key 键
* @param value 值
* @param timeout 时间 小于等于0时将设为无限期
*/
public void setValue(
@NotBlank final String key, @NotBlank final Object value, @NotBlank final Duration timeout) {
this.redisTemplate.opsForValue().set(key, value, timeout);
} /**
* 递增
*
* @param key 键
* @param delta 要增加几(大于0)
* @return 加上指定值之后 key 的值
*/
public Long incrementValue(@NotBlank final String key, @NotBlank final long delta) {
if (delta > 0) {
throw new RuntimeException("递增因子必须大于0");
}
return this.redisTemplate.opsForValue().increment(key, delta);
} /**
* 递减
*
* @param key 键
* @param delta 要减少几(小于0)
* @return 减少指定值之后 key 的值
*/
public Long decrementValue(@NotBlank final String key, @NotBlank final long delta) {
if (delta < 0) {
throw new RuntimeException("递减因子必须大于0");
}
return this.redisTemplate.opsForValue().increment(key, -delta);
} // ================================Map================================= /**
* HashGet
*
* @param key 键
* @param item 项
* @return 值
*/
public Object getHash(@NotBlank final String key, @NotBlank final String item) {
return this.redisTemplate.opsForHash().get(key, item);
} /**
* 获取hashKey对应的所有键值
*
* @param key 键
* @return 对应的多个键值
*/
public Map<Object, Object> getHash(@NotBlank final String key) {
return this.redisTemplate.opsForHash().entries(key);
} /**
* HashSet
*
* @param key 键
* @param map 对应多个键值
*/
public void putHash(@NotBlank final String key, @NotBlank final Map<String, Object> map) {
this.redisTemplate.opsForHash().putAll(key, map);
} /**
* HashSet 并设置时间
*
* @param key 键
* @param map 对应多个键值
* @param timeout 时间
*/
public void putHash(
@NotBlank final String key,
@NotBlank final Map<String, Object> map,
@NotBlank final Duration timeout) {
this.redisTemplate.opsForHash().putAll(key, map);
this.setExpire(key, timeout);
} /**
* 向一张hash表中放入数据,如果不存在将创建
*
* @param key 键
* @param item 项
* @param value 值
*/
public void putHash(
@NotBlank final String key, @NotBlank final String item, @NotBlank final Object value) {
this.redisTemplate.opsForHash().put(key, item, value);
} /**
* 向一张hash表中放入数据,如果不存在将创建
*
* @param key 键
* @param item 项
* @param value 值
* @param timeout 时间 注意:如果已存在的hash表有时间,这里将会替换原有的时间
*/
public void putHash(
@NotBlank final String key,
@NotBlank final String item,
@NotBlank final Object value,
@NotBlank final Duration timeout) {
this.redisTemplate.opsForHash().put(key, item, value);
this.setExpire(key, timeout);
} /**
* 删除hash表中的值
*
* @param key 键
* @param item 项
*/
public void deleteHash(@NotBlank final String key, @NotBlank final Object... item) {
this.redisTemplate.opsForHash().delete(key, item);
} /**
* 判断hash表中是否有该项的值
*
* @param key 键
* @param item 项
* @return {Boolean}
*/
public Boolean hasKeyHash(@NotBlank final String key, @NotBlank final String item) {
return this.redisTemplate.opsForHash().hasKey(key, item);
} /**
* hash递增 如果不存在,就会创建一个 并把新增后的值返回
*
* @param key 键
* @param item 项
* @param by 要增加几(大于0)
* @return 加上指定值之后 key 的值
*/
public Double incrementHash(
@NotBlank final String key, @NotBlank final String item, @NotBlank final double by) {
return this.redisTemplate.opsForHash().increment(key, item, by);
} /**
* hash递减
*
* @param key 键
* @param item 项
* @param by 要减少记(小于0)
* @return 减少指定值之后 key 的值
*/
public Double decrementHash(
@NotBlank final String key, @NotBlank final String item, @NotBlank final double by) {
return this.redisTemplate.opsForHash().increment(key, item, -by);
} // ============================set============================= /**
* 根据 key 获取 Set 中的所有值
*
* @param key 键
* @return Set<Object>
*/
public Set<Object> getSet(@NotBlank final String key) {
return this.redisTemplate.opsForSet().members(key);
} /**
* 根据 value 从一个 set 中查询,是否存在
*
* @param key 键
* @param value 值
* @return {Boolean}
*/
public Boolean hasKeySet(@NotBlank final String key, @NotBlank final Object value) {
return this.redisTemplate.opsForSet().isMember(key, value);
} /**
* 将数据放入set缓存
*
* @param key 键
* @param values 值
* @return 放入个数
*/
public Long addSet(@NotBlank final String key, @NotBlank final Object... values) {
return this.redisTemplate.opsForSet().add(key, values);
} /**
* 将set数据放入缓存
*
* @param key 键
* @param timeout 时间
* @param values 值
* @return 放入个数
*/
public Long addSet(
@NotBlank final String key,
@NotBlank final Duration timeout,
@NotBlank final Object... values) {
final Long num = this.redisTemplate.opsForSet().add(key, values);
this.setExpire(key, timeout);
return num;
} /**
* 获取set缓存的长度
*
* @param key 键
* @return 缓存的长度
*/
public Long getSetSize(@NotBlank final String key) {
return this.redisTemplate.opsForSet().size(key);
} /**
* 移除值为value的
*
* @param key 键
* @param values 值
* @return 移除个数
*/
public Long removeSet(@NotBlank final String key, @NotBlank final Object... values) {
return this.redisTemplate.opsForSet().remove(key, values);
}
// ===============================list================================= /**
* 获取list缓存的内容
*
* @param key 键
* @param start 开始
* @param end 结束 0 到 -1代表所有值
* @return list缓存的内容
*/
public List<Object> getList(
@NotBlank final String key, @NotBlank final Long start, @NotBlank final Long end) {
return this.redisTemplate.opsForList().range(key, start, end);
} /**
* 获取list缓存的长度
*
* @param key 键
* @return list缓存的长度
*/
public Long getListSize(@NotBlank final String key) {
return this.redisTemplate.opsForList().size(key);
} /**
* 通过索引 获取list中的值
*
* @param key 键
* @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推
* @return list中的值
*/
public Object getListIndex(@NotBlank final String key, @NotBlank final Long index) {
return this.redisTemplate.opsForList().index(key, index);
} /**
* 将list放入缓存
*
* @param key 键
* @param value 值
* @return 放入个数
*/
public Long pushList(@NotBlank final String key, @NotBlank final Object value) {
return this.redisTemplate.opsForList().rightPush(key, value);
} /**
* 将list放入缓存
*
* @param key 键
* @param value 值
* @param timeout 时间
*/
public Long pushList(
@NotBlank final String key, @NotBlank final Object value, @NotBlank final Duration timeout) {
final Long num = this.redisTemplate.opsForList().rightPush(key, value);
this.setExpire(key, timeout);
return num;
} /**
* 将list放入缓存
*
* @param key 键
* @param value 值
* @return 放入个数
*/
public Long pushList(@NotBlank final String key, @NotBlank final List<Object> value) {
return this.redisTemplate.opsForList().rightPushAll(key, value);
} /**
* 将list放入缓存
*
* @param key 键
* @param value 值
* @param timeout 时间
* @return 放入个数
*/
public Long pushList(
@NotBlank final String key,
@NotBlank final List<Object> value,
@NotBlank final Duration timeout) {
final Long num = this.redisTemplate.opsForList().rightPushAll(key, value);
this.setExpire(key, timeout);
return num;
} /**
* 根据索引修改 list 中的某条数据
*
* @param key 键
* @param index 索引
* @param value 值
*/
public void updateListIndex(
@NotBlank final String key, @NotBlank final Long index, @NotBlank final Object value) {
this.redisTemplate.opsForList().set(key, index, value);
} /**
* 移除N个值为value
*
* @param key 键
* @param count 移除多少个
* @param value 值
* @return 移除个数
*/
public Long removeList(
@NotBlank final String key, @NotBlank final Long count, @NotBlank final Object value) {
return this.redisTemplate.opsForList().remove(key, count, value);
}
}
2、
5.返回顶部
 
 
6.返回顶部
 
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

Java-Class-C:com.ylbtech.api.platfrom.util.RedisUtils.class的更多相关文章

  1. Java魔法堂:深入正则表达式API

    目录 一.前言 二.正则表达式的使用诉求 三.java.util.regex包 四.java.lang.String实例 五.最短路径实现诉求 六.Java支持的正则表达式功能语法 七.总结 八.参考 ...

  2. Expo大作战(二十七)--expo sdk api之Util(expo自带工具类),tackSnapshotAsync,Svg,SQLite

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  3. BMap:WEB 服务API

    ylbtech-Map-Baidu: WEB 服务API 百度地图Web服务API为开发者提供http/https接口,即开发者通过http/https形式发起检索请求,获取返回json或xml格式的 ...

  4. Java-Class-Miniprogram:com.ylbtech.common.utils.miniprogram.TemplateMessage

    ylbtech-Java-Class-Miniprogram:com.ylbtech.common.utils.miniprogram.TemplateMessage 1.返回顶部 1.1. pack ...

  5. Java并发编程:线程池的使用

    Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, ...

  6. Java设计模式4:单例模式

    前言 非常重要,单例模式是各个Java项目中必不可少的一种设计模式.本文的关注点将重点放在单例模式的写法以及每种写法的线程安全性上.所谓"线程安全性"的意思就是保证在创建单例对象的 ...

  7. Atitit 实现java的linq 以及与stream api的比较

    Atitit 实现java的linq 以及与stream api的比较 1.1. Linq 和stream api的关系,以及主要优缺点1 1.2. Linq 与stream api的适用场景1 1. ...

  8. Java魔法堂:类加载器入了个门

    一.前言 <Java魔法堂:类加载机制入了个门>中提及整个类加载流程中只有加载阶段作为码农的我们可以入手干预,其余均由JVM处理.本文将记录加载阶段的核心组件——类加载器的相关信息,以便日 ...

  9. Java并发编程:如何创建线程?

    Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务.下面先讲述一下Java中的应用程序和进程相关的概念知识, ...

随机推荐

  1. I/O 优化

    数字的读入优化: /* I/O * Au: GG */ #include <cstdio> #include <cstdlib> #include <cmath> ...

  2. PHP浮点计算结果返回异常问题

    php中如果直接小数点进行计算的话.比如16.8*3var_dump是50.4.但是return就变成了50.400000000000006.至于是什么原因本人尚不得而知.解决方法是用把计算放入下面的 ...

  3. linux搭建集群

    磁盘分布 /boot 系统启动时需要的内存(200m) / 系统的可用磁盘大小(10240m) swap 交换内存 建议和内存一致(200m) 名字统一设置: 虚拟机名字 计算机名字 网络中的名字 默 ...

  4. linux(Ubuntu) 搭建LAMP环境

    1.更新源 sudo apt- get update 2.安装常用软件 SSH.Vim.Git.Tree ①SSH sudo apt-get install openssh-server 管理命令:s ...

  5. 点读系列《流畅的python》

    第1章 python数据模型 python的写法是由背后的魔法方法实现的,比如obj[key],解释器实际调用的是obj.__getitem__(key) 作者把魔法方法叫做双下方法,因为有两个下划线 ...

  6. Django 自定义模型管理器(Manager)及方法

    转载自:https://www.cnblogs.com/sui776265233/p/11571418.html 1.自定义管理器(Manager) 在语句Book.objects.all()中,ob ...

  7. ACM_ICPC_Team

    题目: There are a number of people who will be attending ACM-ICPC World Finals. Each of them may be we ...

  8. 七牛云关联Windows图床

    1. 注册七牛云 七牛云 地址,需要在这里进行注册 2.完成实名认证 需要上传身份证的正反面以及支付宝做一下认证即可. 首先进入个人中心 然后进行实名认证 由于我已经认证过了,所以显示认证完成,未认证 ...

  9. 使用SQLiteOpenHelper管理SD卡中的数据库

    本人在网上找了好多大牛的资料,研究了几天终于调试出来了.以下是笔记: SQLiteOpenHelper是Android框架为我们提供的一个非常好的数据库打开.升级与关闭的工具类.但是这个工具类会自动把 ...

  10. codeforces1213F Unstable String Sort 思维

    题目传送门 题意:a和b都代表字符串的下标,至少用k个字符,构造一个长度为n的字符串,将这个字符串中的字符按无论是按$a$写还是按$b$写,字典序都非递减. 思路:如果将$a[l,r]=b[l,r]$ ...