搜索
查看
编辑修改
首页
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
macOS Beta 系统 / 更新系统后「意外退出」及「崩溃闪退」问题修复方法_mac 客户端更新完后 shipit quitting
2
acp认证考试费用多少?
3
uniCloud开发公众号:五、开通/配置/初始化uniPush2.0_uni-cloud-push
4
python3.4+pyInstaller实现可执行exe文件(包含ico图标)的生成_pyinstaller ico
5
SpringBoot-学习-4-全局配置文件_use-legacy-processing
6
Python实现蚁群算法图像边缘检测_基于蚁群算法的边缘检测
7
Leetcode-二叉树oj题
8
Flutter笔记: 在Flutter中的操作文件
9
Prism研究(for WPF & Silverlight)【转载】
10
【工具】Android|Android Studio 长颈鹿版本安装下载使用详解_android studio giraffe下载安装
当前位置:
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博客】
推荐阅读
article
HarmonyOS
开发
:探索
组件
化
模式
开发
_鸿蒙
组件
化
开发
...
我们知道
组件
化
和模块
化
是类似的,只不过多了一个独立运行的功能,别小看这个独立运行的能力,在实际的
开发
中,能大大减少我们的...
赞
踩
article
eagle Oracle中
row
_
number
()、
rank
()、
dense
_
rank
() 的区别
_
...
row
_
number
的用途非常广泛,排序最好用它,它会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意使用r...
赞
踩
article
论文
AI
率多少正常:揭秘
学术
写作
中的
智能
辅助
...
在
学术
写作
中,我们应充分利用
AI
技术的优势,同时保持对原创性的关注和维护。未来,我们可能会看到更加
智能
、高效的
写作
工具出...
赞
踩
article
自定义
注解
之
源码
注解
(
RetentionPolicy
.
SOURCE
)_
自定义
注解
源码
级...
源码
注解
(
RetentionPolicy
.
SOURCE
)的生命周期只存在Java源文件这一阶段,是3种生命周期中最短的注...
赞
踩
article
android
通知
点击
关闭
,
android
-
通知
点击
-如果应用
关闭
了
打开
的活动,如果应用
打开
了,则...
这个问题已经在这里有了答案:????????????>????????????Resume application an...
赞
踩
article
Android14
之报错:
error
:add its
name
to the
whitelist
(一...
本篇目的:解决
Android14
添加binder接口报错问题。Binder,全称为Android Binder IPC(...
赞
踩
article
mysql
排序
函数_
mysql
排序
函数...
mysql
获取
排序
序号函数_
mysql
排序
函数
mysql
排序
函数 1、RANK() ...
赞
踩
article
Android
延迟
执行...
1.直接休眠,只能用于次线程中//sleep设置的是时长Thread.sleep(1000);2.定时器,适用范围比较广...
赞
踩
article
人工智能
与
道路交通
:如何
提高
交通安全
和效率...
1.背景介绍随着人口增长和经济发展,交通拥堵和交通事故成为了城市
道路交通
的主要问题。根据世界卫生组织(WHO)数据,交通...
赞
踩
article
Hadoop
ConnectException
:
Connection
refused
的一种
解决办法
...
跟着视频学习天气案例,把代码敲好,准备提交运行时才发现集群没启动。然后在node02、node03、node04使用zk...
赞
踩
article
java
注解
完整实例
_
java
自定义
注解
案例...
背景
java
注解
,网上的实例千篇一律,感觉大多都没有抓到重点。最糟糕的是,示例不全,不能完全让别人把示例做出来。起因:希...
赞
踩
article
关于
Android
中
Handler
+
postDelayed
实现
定时器
_
adpter
+
定时器
...
初始化
Handler
对象;final
Handler
m
Handler
Data = new
Handler
(); 初...
赞
踩
article
【网站项目】
基于
SSM
架构
的
网上
书城
系统
...
网络的广泛应用给生活带来了十分的便利。所以把
网上
书城
管理与现在网络相结合,利用java技术建设
网上
书城
系统
,实现
网上
书城
...
赞
踩
article
深度
学习各指标计算(
Jaccard
,
Dice
,
Sensitive
,
Specificity
,PPv,N...
深度
学习各指标计算(
Jaccard
,
Dice
,
Sensitive
,
Specificity
,PPv,NPV,Accurac...
赞
踩
article
什么
叫
跨平台
语言
_
跨平台
语言
指
的
是
什么
...
什么
叫
跨平台
语言
呢?今天就个人理解简单谈一下,还望指正。 简单
的
说,就像插座和插头,这世界上有没有完全通用
的
插座呢?没有...
赞
踩
article
oracle
分析
函数
over
(Partition
by
...
)及开窗
函数
详解_
oracle
part...
说明:聚合
函数
(如sum()、max()等)可以计算基于组的某种聚合值,但是聚合
函数
对于某个组只能返回一行记录。若想对于...
赞
踩
article
ORACLE
+
mybatis
insert
all
批量插入使用序列unique constrain...
使用
insert
all
into
向oracle数据表中一次性插入多条数据的时候,使用序列号生成主键
insert
al...
赞
踩
article
vscode
配置
clang
d和
clang
-
format
...
my_project|-- a.h|-- b.h|-- c.hpp|-- source|-- a.cpp|-- b.cp...
赞
踩
article
面试必备之
数据库
知识点
总结
_
数据库
知识点
总结
归纳...
原文地址:https://github.com/DmrfCoder/interview/blob/master/Data...
赞
踩
article
adb
设置
_
配置
adb
密码
登录
...
一、把
adb
的路径配置到环境变量中jianguoliao@jianguoliao-OptiPlex-380:~$ ech...
赞
踩
相关标签
鸿蒙组件化
鸿蒙模块化
HarmonyOS组件化
HarmonyOS模块化
人工智能
深度学习
Java注解
源码注解
RetentionPolicy.SOUR
android 通知点击关闭
Android14
Binder
mysql
android
java
Android延迟执行
大数据
架构
spring
vue.js
vue
python