Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-cloud-core
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-cloud-core
Commits
6f8f9387
Commit
6f8f9387
authored
Sep 07, 2025
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
yd-common公共模块 -> redis工具类和redis前缀常量
parent
67d2c821
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
475 additions
and
0 deletions
+475
-0
yd-common/pom.xml
+5
-0
yd-common/src/main/java/com/yd/common/constant/RedisConstants.java
+12
-0
yd-common/src/main/java/com/yd/common/utils/RedisUtil.java
+458
-0
No files found.
yd-common/pom.xml
View file @
6f8f9387
...
...
@@ -44,5 +44,10 @@
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-lang3
</artifactId>
</dependency>
<!-- redis 缓存操作 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-redis
</artifactId>
</dependency>
</dependencies>
</project>
yd-common/src/main/java/com/yd/common/constant/RedisConstants.java
0 → 100644
View file @
6f8f9387
package
com
.
yd
.
common
.
constant
;
/**
* redis的key前缀常量
*/
public
class
RedisConstants
{
/**
* 后端登录用户缓存信息redis前缀
*/
public
static
final
String
LOGIN_USER
=
"login:user:"
;
}
yd-common/src/main/java/com/yd/common/utils/RedisUtil.java
0 → 100644
View file @
6f8f9387
package
com
.
yd
.
common
.
utils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.HashOperations
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.ValueOperations
;
import
org.springframework.data.redis.core.ZSetOperations
;
import
org.springframework.data.redis.core.script.DefaultRedisScript
;
import
org.springframework.data.redis.core.script.RedisScript
;
import
org.springframework.stereotype.Component
;
import
java.time.Duration
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
/**
* spring redis 工具类
**/
@SuppressWarnings
(
value
=
{
"unchecked"
,
"rawtypes"
})
@Component
public
class
RedisUtil
{
@Autowired
public
RedisTemplate
redisTemplate
;
/**
* 缓存基本的对象,Integer、String、实体类等
*
* @param key 缓存的键值
* @param value 缓存的值
*/
public
<
T
>
void
setCacheObject
(
final
String
key
,
final
T
value
)
{
redisTemplate
.
opsForValue
().
set
(
key
,
value
);
}
/**
* 缓存基本的对象,Integer、String、实体类等
*
* @param key 缓存的键值
* @param value 缓存的值
* @param timeout 时间
* @param timeUnit 时间颗粒度
*/
public
<
T
>
void
setCacheObject
(
final
String
key
,
final
T
value
,
final
Integer
timeout
,
final
TimeUnit
timeUnit
)
{
redisTemplate
.
opsForValue
().
set
(
key
,
value
,
timeout
,
timeUnit
);
}
/**
* 设置有效时间
*
* @param key Redis键
* @param timeout 超时时间
* @return true=设置成功;false=设置失败
*/
public
boolean
expire
(
final
String
key
,
final
long
timeout
)
{
return
expire
(
key
,
timeout
,
TimeUnit
.
SECONDS
);
}
/**
* 设置有效时间
*
* @param key Redis键
* @param timeout 超时时间
* @param unit 时间单位
* @return true=设置成功;false=设置失败
*/
public
boolean
expire
(
final
String
key
,
final
long
timeout
,
final
TimeUnit
unit
)
{
return
redisTemplate
.
expire
(
key
,
timeout
,
unit
);
}
/**
* 获取超时时间
* @param key Redis键
* @param unit 时间单位
* @return
*/
public
Long
getExpire
(
final
String
key
,
final
TimeUnit
unit
)
{
return
redisTemplate
.
getExpire
(
key
,
unit
);
}
/**
* 获得缓存的基本对象。
*
* @param key 缓存键值
* @return 缓存键值对应的数据
*/
public
<
T
>
T
getCacheObject
(
final
String
key
)
{
ValueOperations
<
String
,
T
>
operation
=
redisTemplate
.
opsForValue
();
return
operation
.
get
(
key
);
}
/**
* 删除单个对象
*
* @param key
*/
public
boolean
deleteObject
(
final
String
key
)
{
return
redisTemplate
.
delete
(
key
);
}
/**
* 删除集合对象
*
* @param collection 多个对象
* @return
*/
public
long
deleteObject
(
final
Collection
collection
)
{
return
redisTemplate
.
delete
(
collection
);
}
/**
* 缓存List数据
*
* @param key 缓存的键值
* @param dataList 待缓存的List数据
* @return 缓存的对象
*/
public
<
T
>
long
setCacheList
(
final
String
key
,
final
List
<
T
>
dataList
)
{
Long
count
=
redisTemplate
.
opsForList
().
rightPushAll
(
key
,
dataList
);
return
count
==
null
?
0
:
count
;
}
/**
* 获得缓存的list对象
*
* @param key 缓存的键值
* @return 缓存键值对应的数据
*/
public
<
T
>
List
<
T
>
getCacheList
(
final
String
key
)
{
return
redisTemplate
.
opsForList
().
range
(
key
,
0
,
-
1
);
}
/**
* 缓存Set
*
* @param key 缓存键值
* @param dataSet 缓存的数据
* @return 缓存数据的对象
*/
public
<
T
>
long
setCacheSet
(
final
String
key
,
final
Set
<
T
>
dataSet
)
{
Long
count
=
redisTemplate
.
opsForSet
().
add
(
key
,
dataSet
);
return
count
==
null
?
0
:
count
;
}
/**
* 获得缓存的set
*
* @param key
* @return
*/
public
<
T
>
Set
<
T
>
getCacheSet
(
final
String
key
)
{
return
redisTemplate
.
opsForSet
().
members
(
key
);
}
/**
* 缓存Map
*
* @param key
* @param dataMap
*/
public
<
T
>
void
setCacheMap
(
final
String
key
,
final
Map
<
String
,
T
>
dataMap
)
{
if
(
dataMap
!=
null
)
{
redisTemplate
.
opsForHash
().
putAll
(
key
,
dataMap
);
}
}
/**
* 获得缓存的Map
*
* @param key
* @return
*/
public
<
T
>
Map
<
String
,
T
>
getCacheMap
(
final
String
key
)
{
return
redisTemplate
.
opsForHash
().
entries
(
key
);
}
/**
* 往Hash中存入数据
*
* @param key Redis键
* @param hKey Hash键
* @param value 值
*/
public
<
T
>
void
setCacheMapValue
(
final
String
key
,
final
String
hKey
,
final
T
value
)
{
redisTemplate
.
opsForHash
().
put
(
key
,
hKey
,
value
);
}
/**
* 获取Hash中的数据
*
* @param key Redis键
* @param hKey Hash键
* @return Hash中的对象
*/
public
<
T
>
T
getCacheMapValue
(
final
String
key
,
final
String
hKey
)
{
HashOperations
<
String
,
String
,
T
>
opsForHash
=
redisTemplate
.
opsForHash
();
return
opsForHash
.
get
(
key
,
hKey
);
}
/**
* 获取多个Hash中的数据
*
* @param key Redis键
* @param hKeys Hash键集合
* @return Hash对象集合
*/
public
<
T
>
List
<
T
>
getMultiCacheMapValue
(
final
String
key
,
final
Collection
<
Object
>
hKeys
)
{
return
redisTemplate
.
opsForHash
().
multiGet
(
key
,
hKeys
);
}
/**
* 获得缓存的基本对象列表
*
* @param pattern 字符串前缀
* @return 对象列表
*/
public
Collection
<
String
>
keys
(
final
String
pattern
)
{
return
redisTemplate
.
keys
(
pattern
);
}
/**
* 将给定的消息发布到给定的频道
*
* @param channel 要发布到的频道
* @param message 消息内容
*/
public
void
convertAndSend
(
String
channel
,
Object
message
)
{
redisTemplate
.
convertAndSend
(
channel
,
message
);
}
/**
* 添加一个元素, zset与set最大的区别就是每个元素都有一个score,因此有个排序的辅助功能;
*
* @param key
* @param value
* @param score
*/
public
Boolean
setCacheZSet
(
String
key
,
String
value
,
double
score
)
{
return
redisTemplate
.
opsForZSet
().
add
(
key
,
value
,
score
);
}
/**
* 删除元素 zrem
*
* @param key
* @param start
* @param end
*/
public
Long
removeRangeCacheZSet
(
String
key
,
long
start
,
long
end
)
{
return
redisTemplate
.
opsForZSet
().
removeRange
(
key
,
start
,
end
);
}
/**
* 删除元素 zrem
*
* @param key
* @param value
*/
public
long
removeCacheZSet
(
String
key
,
String
value
)
{
return
redisTemplate
.
opsForZSet
().
remove
(
key
,
value
);
}
/**
* score的增加or减少 zincrby
*
* @param key
* @param value
* @param score
*/
public
Double
incrScoreCacheZSet
(
String
key
,
String
value
,
double
score
)
{
return
redisTemplate
.
opsForZSet
().
incrementScore
(
key
,
value
,
score
);
}
/**
* 查询value对应的score zscore
*
* @param key
* @param value
* @return
*/
public
Double
getCacheZSetScore
(
String
key
,
String
value
)
{
return
redisTemplate
.
opsForZSet
().
score
(
key
,
value
);
}
/**
* 判断value在zset中的排名 zrank
*
* @param key
* @param value
* @return
*/
public
Long
rankCacheZSet
(
String
key
,
String
value
)
{
return
redisTemplate
.
opsForZSet
().
rank
(
key
,
value
);
}
/**
* 返回集合的长度
*
* @param key
* @return
*/
public
Long
getCacheZSetSize
(
String
key
)
{
return
redisTemplate
.
opsForZSet
().
zCard
(
key
);
}
/**
* 查询集合中指定顺序的值, 0 -1 表示获取全部的集合内容 zrange
* <p>
* 返回有序的集合,score小的在前面
*
* @param key
* @param start
* @param end
* @return
*/
public
Set
<
String
>
rangeCacheZSet
(
String
key
,
int
start
,
int
end
)
{
return
redisTemplate
.
opsForZSet
().
range
(
key
,
start
,
end
);
}
/**
* 查询集合中指定顺序的值和score,0, -1 表示获取全部的集合内容
*
* @param key
* @param start
* @param end
* @return
*/
public
Set
<
ZSetOperations
.
TypedTuple
<
String
>>
rangeWithScore
(
String
key
,
int
start
,
int
end
)
{
return
redisTemplate
.
opsForZSet
().
rangeWithScores
(
key
,
start
,
end
);
}
/**
* 查询集合中指定顺序的值 zrevrange
* <p>
* 返回有序的集合中,score大的在前面
*
* @param key
* @param start
* @param end
* @return
*/
public
Set
<
String
>
revRangeCacheZSet
(
String
key
,
int
start
,
int
end
)
{
return
redisTemplate
.
opsForZSet
().
reverseRange
(
key
,
start
,
end
);
}
/**
* 根据score的值,来获取满足条件的集合 zrangebyscore
*
* @param key
* @param min
* @param max
* @return
*/
public
Set
<
String
>
sortRangeCacheZSet
(
String
key
,
double
min
,
double
max
)
{
return
redisTemplate
.
opsForZSet
().
rangeByScore
(
key
,
min
,
max
);
}
/**
* 根据score的值,来获取满足条件的集合
*
* @param key
* @param min
* @param max
* @return
*/
public
Set
<
ZSetOperations
.
TypedTuple
<
String
>>
sortRangeWithScoresCacheZSet
(
String
key
,
double
min
,
double
max
)
{
return
redisTemplate
.
opsForZSet
().
rangeByScoreWithScores
(
key
,
min
,
max
);
}
/**
* 判断 key是否存在
*
* @param key 键
* @return true 存在 false不存在
*/
public
Boolean
hasKey
(
String
key
)
{
return
redisTemplate
.
hasKey
(
key
);
}
//判断key存在
public
boolean
keyIsExists
(
String
key
)
{
return
Boolean
.
TRUE
.
equals
(
redisTemplate
.
hasKey
(
key
));
}
/**
* 自增
* @param key
* @return
*/
public
Long
increment
(
String
key
){
return
redisTemplate
.
opsForValue
().
increment
(
key
);
}
/**
* 自减
* @param key
* @return
*/
public
Long
decrement
(
String
key
){
return
redisTemplate
.
opsForValue
().
decrement
(
key
);
}
/**
* HyperLogLog计数
* @param key
* @param value
*/
public
Long
hyperLogLogAdd
(
String
key
,
Object
...
value
)
{
return
redisTemplate
.
opsForHyperLogLog
().
add
(
key
,
value
);
}
/**
* HyperLogLog获取总数
* @param key
*/
public
Long
hyperLogLogCount
(
String
...
key
)
{
return
redisTemplate
.
opsForHyperLogLog
().
size
(
key
);
}
/**
* 加锁
* @param key 键
* @param value 值
* @param second 秒
**/
public
Boolean
tryLock
(
String
key
,
String
value
,
Long
second
){
Boolean
lockStatus
=
this
.
redisTemplate
.
opsForValue
().
setIfAbsent
(
key
,
value
,
Duration
.
ofSeconds
(
second
));
return
lockStatus
;
}
/**
* 加锁
* @param key 键
* @param value 值
* @param timeout 时间
* @param unit 时间类型
**/
public
Boolean
tryLock
(
String
key
,
String
value
,
long
timeout
,
TimeUnit
unit
){
Boolean
lockStatus
=
this
.
redisTemplate
.
opsForValue
().
setIfAbsent
(
key
,
value
,
timeout
,
unit
);
return
lockStatus
;
}
/**
* 释放锁
* @param key 键
* @param value 值
**/
public
Long
unLock
(
String
key
,
String
value
){
String
luaScript
=
"if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end"
;
RedisScript
<
Long
>
redisScript
=
new
DefaultRedisScript
<>(
luaScript
,
Long
.
class
);
Long
releaseStatus
=
(
Long
)
this
.
redisTemplate
.
execute
(
redisScript
,
Collections
.
singletonList
(
key
),
value
);
return
releaseStatus
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment