搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
很楠不爱3
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
WindowsAzure Powershell脚本定时启动关机Azure VM
2
腾讯微搭小程序获取微信用户信息_微搭 用微信号登录
3
刷算法时使用PriorityQueue_priorityqueue
pq = new priorityqueue<>((pai
4
Springboot 2.3.4 整合swagger3 支持导出离线文档 再也不需要以后手动编写接口文档了_swagger 离线导出
5
2021软件测试面试题汇总【备战金九银十】内容较长建议收藏_希音软件测试面试题
6
Machine Learning ---- Gradient Descent
7
LG G3 D857 刷机
8
opencv人像(人脸)美颜、磨皮_ffmpeg opencv 图片人像去除
9
poj3744 概率dp+矩阵乘法_概率方法设计计算方法ab=c,均为方阵,且n>100000000
10
简介:KMeans聚类算法
当前位置:
article
> 正文
RedisTemplate通用工具类RedisUtils_redistemplateutils
作者:很楠不爱3 | 2024-03-15 11:47:13
赞
踩
redistemplateutils
import
java.util.List;
import
java.util.Map;
import
java.util.Set;
import
java.util.concurrent.TimeUnit;
import
org.springframework.data.redis.core.RedisTemplate;
import
org.springframework.util.CollectionUtils;
/**
*
* @author yangaliang
* 基于spring和redis的redisTemplate工具类
* 针对所有的hash 都是以h开头的方法
* 针对所有的Set 都是以s开头的方法
* 针对所有的List 都是以l开头的方法
*/
public
class
RedisUtils {
private
RedisTemplate<String, Object> redisTemplate;
public
void
setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {
this
.redisTemplate = redisTemplate;
}
//=============================common============================
/**
* 指定缓存失效时间
* @param key 键
* @param time 时间(秒)
* @return
*/
public
boolean
expire(String key,
long
time){
try
{
if
(time>
0
){
redisTemplate.expire(key, time, TimeUnit.SECONDS);
}
return
true
;
}
catch
(Exception e) {
e.printStackTrace();
return
false
;
}
}
/**
* 根据key 获取过期时间
* @param key 键 不能为null
* @return 时间(秒) 返回0代表为永久有效
*/
public
long
getExpire(String key){
return
redisTemplate.getExpire(key,TimeUnit.SECONDS);
}
/**
* 判断key是否存在
* @param key 键
* @return true 存在 false不存在
*/
public
boolean
hasKey(String key){
try
{
return
redisTemplate.hasKey(key);
}
catch
(Exception e) {
e.printStackTrace();
return
false
;
}
}
/**
* 删除缓存
* @param key 可以传一个值 或多个
*/
@SuppressWarnings
(
"unchecked"
)
public
void
del(String ... key){
if
(key!=
null
&&key.length>
0
){
if
(key.length==
1
){
redisTemplate.delete(key[
0
]);
}
else
{
redisTemplate.delete(CollectionUtils.arrayToList(key));
}
}
}
//============================String=============================
/**
* 普通缓存获取
* @param key 键
* @return 值
*/
public
Object get(String key){
return
key==
null
?
null
:redisTemplate.opsForValue().get(key);
}
/**
* 普通缓存放入
* @param key 键
* @param value 值
* @return true成功 false失败
*/
public
boolean
set(String key,Object value) {
try
{
redisTemplate.opsForValue().set(key, value);
return
true
;
}
catch
(Exception e) {
e.printStackTrace();
return
false
;
}
}
/**
* 普通缓存放入并设置时间
* @param key 键
* @param value 值
* @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
* @return true成功 false 失败
*/
public
boolean
set(String key,Object value,
long
time){
try
{
if
(time>
0
){
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
}
else
{
set(key, value);
}
return
true
;
}
catch
(Exception e) {
e.printStackTrace();
return
false
;
}
}
/**
* 递增
* @param key 键
* @param by 要增加几(大于0)
* @return
*/
public
long
incr(String key,
long
delta){
if
(delta<
0
){
throw
new
RuntimeException(
"递增因子必须大于0"
);
}
return
redisTemplate.opsForValue().increment(key, delta);
}
/**
* 递减
* @param key 键
* @param by 要减少几(小于0)
* @return
*/
public
long
decr(String key,
long
delta){
if
(delta<
0
){
throw
new
RuntimeException(
"递减因子必须大于0"
);
}
return
redisTemplate.opsForValue().increment(key, -delta);
}
//================================Map=================================
/**
* HashGet
* @param key 键 不能为null
* @param item 项 不能为null
* @return 值
*/
public
Object hget(String key,String item){
return
redisTemplate.opsForHash().get(key, item);
}
/**
* 获取hashKey对应的所有键值
* @param key 键
* @return 对应的多个键值
*/
public
Map<Object,Object> hmget(String key){
return
redisTemplate.opsForHash().entries(key);
}
/**
* HashSet
* @param key 键
* @param map 对应多个键值
* @return true 成功 false 失败
*/
public
boolean
hmset(String key, Map<String,Object> map){
try
{
redisTemplate.opsForHash().putAll(key, map);
return
true
;
}
catch
(Exception e) {
e.printStackTrace();
return
false
;
}
}
/**
* HashSet 并设置时间
* @param key 键
* @param map 对应多个键值
* @param time 时间(秒)
* @return true成功 false失败
*/
public
boolean
hmset(String key, Map<String,Object> map,
long
time){
try
{
redisTemplate.opsForHash().putAll(key, map);
if
(time>
0
){
expire(key, time);
}
return
true
;
}
catch
(Exception e) {
e.printStackTrace();
return
false
;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建
* @param key 键
* @param item 项
* @param value 值
* @return true 成功 false失败
*/
public
boolean
hset(String key,String item,Object value) {
try
{
redisTemplate.opsForHash().put(key, item, value);
return
true
;
}
catch
(Exception e) {
e.printStackTrace();
return
false
;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建
* @param key 键
* @param item 项
* @param value 值
* @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间
* @return true 成功 false失败
*/
public
boolean
hset(String key,String item,Object value,
long
time) {
try
{
redisTemplate.opsForHash().put(key, item, value);
if
(time>
0
){
expire(key, time);
}
return
true
;
}
catch
(Exception e) {
e.printStackTrace();
return
false
;
}
}
/**
* 删除hash表中的值
* @param key 键 不能为null
* @param item 项 可以使多个 不能为null
*/
public
void
hdel(String key, Object... item){
redisTemplate.opsForHash().delete(key,item);
}
/**
* 判断hash表中是否有该项的值
* @param key 键 不能为null
* @param item 项 不能为null
* @return true 存在 false不存在
*/
public
boolean
hHasKey(String key, String item){
return
redisTemplate.opsForHash().hasKey(key, item);
}
/**
* hash递增 如果不存在,就会创建一个 并把新增后的值返回
* @param key 键
* @param item 项
* @param by 要增加几(大于0)
* @return
*/
public
double
hincr(String key, String item,
double
by){
return
redisTemplate.opsForHash().increment(key, item, by);
}
/**
* hash递减
* @param key 键
* @param item 项
* @param by 要减少记(小于0)
* @return
*/
public
double
hdecr(String key, String item,
double
by){
return
redisTemplate.opsForHash().increment(key, item,-by);
}
//============================set=============================
/**
* 根据key获取Set中的所有值
* @param key 键
* @return
*/
public
Set<Object> sGet(String key){
try
{
return
redisTemplate.opsForSet().members(key);
}
catch
(Exception e) {
e.printStackTrace();
return
null
;
}
}
/**
* 根据value从一个set中查询,是否存在
* @param key 键
* @param value 值
* @return true 存在 false不存在
*/
public
boolean
sHasKey(String key,Object value){
try
{
return
redisTemplate.opsForSet().isMember(key, value);
}
catch
(Exception e) {
e.printStackTrace();
return
false
;
}
}
/**
* 将数据放入set缓存
* @param key 键
* @param values 值 可以是多个
* @return 成功个数
*/
public
long
sSet(String key, Object...values) {
try
{
return
redisTemplate.opsForSet().add(key, values);
}
catch
(Exception e) {
e.printStackTrace();
return
0
;
}
}
/**
* 将set数据放入缓存
* @param key 键
* @param time 时间(秒)
* @param values 值 可以是多个
* @return 成功个数
*/
public
long
sSetAndTime(String key,
long
time,Object...values) {
try
{
Long count = redisTemplate.opsForSet().add(key, values);
if
(time>
0
) expire(key, time);
return
count;
}
catch
(Exception e) {
e.printStackTrace();
return
0
;
}
}
/**
* 获取set缓存的长度
* @param key 键
* @return
*/
public
long
sGetSetSize(String key){
try
{
return
redisTemplate.opsForSet().size(key);
}
catch
(Exception e) {
e.printStackTrace();
return
0
;
}
}
/**
* 移除值为value的
* @param key 键
* @param values 值 可以是多个
* @return 移除的个数
*/
public
long
setRemove(String key, Object ...values) {
try
{
Long count = redisTemplate.opsForSet().remove(key, values);
return
count;
}
catch
(Exception e) {
e.printStackTrace();
return
0
;
}
}
//===============================list=================================
/**
* 获取list缓存的内容
* @param key 键
* @param start 开始
* @param end 结束 0 到 -1代表所有值
* @return
*/
public
List<Object> lGet(String key,
long
start,
long
end){
try
{
return
redisTemplate.opsForList().range(key, start, end);
}
catch
(Exception e) {
e.printStackTrace();
return
null
;
}
}
/**
* 获取list缓存的长度
* @param key 键
* @return
*/
public
long
lGetListSize(String key){
try
{
return
redisTemplate.opsForList().size(key);
}
catch
(Exception e) {
e.printStackTrace();
return
0
;
}
}
/**
* 通过索引 获取list中的值
* @param key 键
* @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推
* @return
*/
public
Object lGetIndex(String key,
long
index){
try
{
return
redisTemplate.opsForList().index(key, index);
}
catch
(Exception e) {
e.printStackTrace();
return
null
;
}
}
/**
* 将list放入缓存
* @param key 键
* @param value 值
* @param time 时间(秒)
* @return
*/
public
boolean
lSet(String key, Object value) {
try
{
redisTemplate.opsForList().rightPush(key, value);
return
true
;
}
catch
(Exception e) {
e.printStackTrace();
return
false
;
}
}
/**
* 将list放入缓存
* @param key 键
* @param value 值
* @param time 时间(秒)
* @return
*/
public
boolean
lSet(String key, Object value,
long
time) {
try
{
redisTemplate.opsForList().rightPush(key, value);
if
(time >
0
) expire(key, time);
return
true
;
}
catch
(Exception e) {
e.printStackTrace();
return
false
;
}
}
/**
* 将list放入缓存
* @param key 键
* @param value 值
* @param time 时间(秒)
* @return
*/
public
boolean
lSet(String key, List<Object> value) {
try
{
redisTemplate.opsForList().rightPushAll(key, value);
return
true
;
}
catch
(Exception e) {
e.printStackTrace();
return
false
;
}
}
/**
* 将list放入缓存
* @param key 键
* @param value 值
* @param time 时间(秒)
* @return
*/
public
boolean
lSet(String key, List<Object> value,
long
time) {
try
{
redisTemplate.opsForList().rightPushAll(key, value);
if
(time >
0
) expire(key, time);
return
true
;
}
catch
(Exception e) {
e.printStackTrace();
return
false
;
}
}
/**
* 根据索引修改list中的某条数据
* @param key 键
* @param index 索引
* @param value 值
* @return
*/
public
boolean
lUpdateIndex(String key,
long
index,Object value) {
try
{
redisTemplate.opsForList().set(key, index, value);
return
true
;
}
catch
(Exception e) {
e.printStackTrace();
return
false
;
}
}
/**
* 移除N个值为value
* @param key 键
* @param count 移除多少个
* @param value 值
* @return 移除的个数
*/
public
long
lRemove(String key,
long
count,Object value) {
try
{
Long remove = redisTemplate.opsForList().remove(key, count, value);
return
remove;
}
catch
(Exception e) {
e.printStackTrace();
return
0
;
}
}
}
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/很楠不爱3/article/detail/240559
推荐阅读
article
通过
oracle
序列(
sequence
)获取自增值设置给
字符串
(
String
)
类型
的
id
引发
的
问题
_
...
我
的
一个表插入
的
时候是通过实时获取定义
的
序列(
sequence
)来拿到自增值
的
sequence
定义
的
内容如下-- Cre...
赞
踩
article
YDOOK
:
putty
:
putty
使用
密匙
方式链接
云
服务器
访问的详细教程
公钥
配置,私钥
生成
加...
YDOOK
:
putty
:
putty
使用
密匙
方式链接
云
服务器
访问的详细教程1. 成功安装
putty
后,打开安装目录,...
赞
踩
article
24
个
必须掌握
的
数据库
面试
问题!...
一、为什么用自增列作为主键1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。如果...
赞
踩
article
一文理解
神经网络
的
本质
_
神经网络
本质
...
通俗易懂,一文理解
神经网络
的
本质
。_
神经网络
本质
神经网络
本质
...
赞
踩
article
数据库
OVER
(
PARITITON
BY)函数和MySQL排序常用的方法_
rank
paritit...
OVER
(PARTITION BY)开窗函数X 市建了一个新的体育馆,每日人流量信息被记录在这三列信息中:序号 (id)...
赞
踩
article
扫描
指定
的
包中
的
类上
的
注解
,常用
的
注解
有:
_
用于
指定
扫描
包或者
扫描
路径
的
注解
是...
扫描
指定
的
包中
的
类上
的
注解
,常用
的
注解
有:@Controller 声明Action组件@Service 声明Servic...
赞
踩
article
mysql
排序
函数_
mysql
排序
函数...
mysql
获取
排序
序号函数_
mysql
排序
函数
mysql
排序
函数 1、RANK() ...
赞
踩
article
鸿蒙
开发之状态管理
@
Observed
和
@
ObjectLink
_
鸿蒙
observed
...
当对象内引用对象,改变内部对象属性的时候其他状态管理如
@
State、
@
Provide、
@
Consume等是无法触发更新的...
赞
踩
article
SpringBoot
集成
redis
乱码
问题以及工具类
_
java
读取
redis
对象
乱码
...
版本SoringBoot2.1.2 Redis集成
SpringBoot
中产生
乱码
问题,引入下方类可解决(注意扫描该配置)...
赞
踩
article
selectKey
标签详解_
update
selectkey
...
1.为什么要使用
selectKey
数据库主键包括自增和非自增,有时候新增一条数据不仅仅知道成功就行了,后边的逻辑可能还需...
赞
踩
article
oracle
命令大全_
rbbsex
...
内容包括三大项: 1.
oracle
基本操作语句 2.SQLServer基本操作语句 3.各种数据库连接方法*******...
赞
踩
article
主
成分
之综合
竞争力
案例
分析
_
kmofi
...
研究调查100家公司2010-2013年关于财务方面的具体数据,这些财务指标维度分别为盈利能力、偿债能力、运营能力、发展...
赞
踩
article
MySql
窗口
函数
详解-超级细_
mysql
窗口
...
mysql
窗口
函数
详解ROW_NUMBER()OVER()RANK()OVER()DENSE_RANK()OVER()P...
赞
踩
article
桥式
结构
三
坐标
测量
机——超精准的
测量
解决方案
...
桥式
结构
的三
坐标
测量
机具有开敞性好、上下零件方便、运动速度快等优点,适用于高精度
测量
领域。其高精度
测量
系统和稳定
结构
设计...
赞
踩
article
SSM
框架
详解...
SSM
框架
是指将Spring、SpringMVC和MyBatis三个技术
框架
结合起来使用的一种开发模式。它的目标是通过整...
赞
踩
article
IoC
容器
启动
过程_
ioc
容器
启动
的
过程...
初始化BeanFactory,先创建DefaultListableBeanFactory实例,然后将配置信息解析成bea...
赞
踩
article
解决
Flume
出现
Ncat
:
Connection
refused
._
netcat
拒绝连接
flume
...
我在使用
Flume
组件监听本机向端口发送的数据出现 `
Ncat
:
Connection
refused
.`_
netcat
...
赞
踩
article
利用
ChatGPT
如何进行批量长
文本
处理
工具
GPTBAT
_
gpt
处理
长
文本
...
有很多同学最近在网上钻研,说怎么在 GPT 的官方聊天界面里边去输入尽可能多的内容,但事实上呢,如果官方也是后边也是模型...
赞
踩
article
Ubuntu
系统
安装
MySQL
主从
模式
集群
(成功!)...
本人成功在
Ubuntu
系统
安装
MySQL
主从
模式
集群
所总结出来的代码实践
Ubuntu
系统
安装
MySQL
主从
模式
集群
(成功...
赞
踩
article
178.
分数
排名
_
诚志
排名
称
的
分数
有多少
分数
...
编写一个 SQL 查询来实现
分数
排名
。如果两个
分数
相同,则两个
分数
排名
(Rank)相同。请注意,平分后
的
下一个名次应该是...
赞
踩
相关标签
mybatis
oracle
Putty
Puttygen
pem生成putty密钥
访问云服务器
数据库
面试
mysql
java
职场和发展
鸿蒙
SpringBoot
Redis
util
主成分分析
数据分析
案例
3d
三坐标
仪器仪表