package com.zhuhodor.app.common.utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.StringRedisConnection;
import org.springframework.data.redis.core.*;
import org.springframework.stereotype.Component;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@Component
public class RedisUtil {
@Autowired
private StringRedisTemplate redisTemplate;
/**
* 是否有此键
*/
public boolean hasKey(String key){
return redisTemplate.hasKey(key);
}
/**
* 实现命令:TTL key,以秒为单位,返回给定 key的剩余生存时间(TTL, time to live)。
*/
public long ttl(String key) {
return redisTemplate.getExpire(key);
}
/**
* 实现命令:expire 设置过期时间,单位秒
*/
public void expire(String key, long timeout) {
redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
}
/**
* 实现命令:expire 设置过期时间
*/
public void expire(String key, long timeout, TimeUnit unit) {
redisTemplate.expire(key, timeout, unit);
}
/**
* 实现命令:INCR key
*/
public long incr(String key, long delta) {
return redisTemplate.opsForValue().increment(key, delta);
}
/**
* 实现命令:KEYS pattern,查找所有符合给定模式 pattern的 key
*/
public Set<String> keys(String pattern) {
return redisTemplate.keys(pattern);
}
/**
* 实现命令:DEL key,删除一个key
*/
public void del(String key) {
redisTemplate.delete(key);
}
// set 数据结构
public void sadd(String key, String val){
redisTemplate.opsForSet().add(key, val);
}
/**
* set的成员数
*/
public Long snum(String key){
return redisTemplate.opsForSet().size(key);
}
/**
* set中是否存在
*/
public boolean sisSetMem(String key, Object val){
return redisTemplate.opsForSet().isMember(key, val);
}
/**
* scan所有符合条件的set
*/
public Set<String> sScan(String pattern){
Set<String> keys = redisTemplate.execute((RedisCallback<Set<String>>) con -> {
HashSet<String> set = new HashSet<>();
Cursor<byte[]> cursor = con.sScan(pattern.getBytes(), new ScanOptions.ScanOptionsBuilder().match(pattern).count(1000).build());
while (cursor.hasNext()) {
set.add(new String(cursor.next()));
}
return set;
});
return keys;
}
/**
* 获取set所有元素
*/
public Set<String> sget(String key){
return redisTemplate.opsForSet().members(key);
}
/**
* 删除set元素
*/
public long srem(String key, Object... o){
String[] param = new String[o.length];
for (int i = 0; i < o.length; i++){
param[i] = String.valueOf(o[i]);
}
return redisTemplate.opsForSet().remove(key, param);
}
/**
* 删除set元素
*/
public long sSize(String key){
return redisTemplate.opsForSet().size(key);
}
//zset数据结构
/**
* 增加score
* @param key
* @param val
* @param score
*/
public void zincr(String key, String val, Double score){
redisTemplate.opsForZSet().incrementScore(key, val, score);
}
/**
* 返回set中member的score值,没有返回null
*/
public void zScore(String key, String val){
Double score = redisTemplate.opsForZSet().score(key, val);
}
/**
* 倒序排序显示分数
* @param key
* @param start
* @param end
*/
public Set zrevRangeWithScore(String key, Long start, Long end){
Set<ZSetOperations.TypedTuple<String>> typedTuples = redisTemplate.opsForZSet().reverseRangeWithScores(key, start, end);
return typedTuples;
}
/**
* 排序显示分数
* @param key
* @param start
* @param end
*/
public Set<ZSetOperations.TypedTuple<String>> zrangeWithScore(String key, Long start, Long end){
Set<ZSetOperations.TypedTuple<String>> typedTuples = redisTemplate.opsForZSet().rangeWithScores(key, start, end);
return typedTuples;
}
/**
* zset添加
*/
public Boolean zadd(String key, String value, Double score){
return redisTemplate.opsForZSet().add(key, value, score);
}
/**
* 删除key的所有
* @param key
*/
public void zremAll(String key){
redisTemplate.opsForZSet().removeRange(key, 0, -1);
}
// String(字符串)
/**
* 实现命令:SET key value,设置一个key-value(将字符串值 value关联到 key)
*
* @param key
* @param value
*/
public void set(String key, String value) {
redisTemplate.opsForValue().set(key, value);
}
/**
* 实现命令:SET key value EX seconds,设置key-value和超时时间(秒)
*
* @param key
* @param value
* @param timeout(以秒为单位)
*/
public void set(String key, String value, long timeout) {
redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);
}
/**
* 实现命令:GET key,返回 key所关联的字符串值。
*
* @param key
* @return value
*/
public String get(String key) {
return (String)redisTemplate.opsForValue().get(key);
}
/**
* 批量查询,对应mget
* @param keys
* @return
*/
public List<String> mget(List<String> keys) {
return redisTemplate.opsForValue().multiGet(keys);
}
/**
* 批量查询,管道pipeline
* @param keys
* @return
*/
public List<Object> batchGet(List<String> keys) {
// nginx -> keepalive
// redis -> pipeline
List<Object> result = redisTemplate.executePipelined(new RedisCallback<String>() {
@Override
public String doInRedis(RedisConnection connection) throws DataAccessException {
StringRedisConnection src = (StringRedisConnection)connection;
for (String k : keys) {
src.get(k);
}
return null;
}
});
return result;
}
// Hash(哈希表)
/**
* 实现命令:HSET key field value,将哈希表 key中的域 field的值设为 value
*
* @param key
* @param field
* @param value
*/
public void hset(String key, String field, Object value) {
redisTemplate.opsForHash().put(key, field, value);
}
/**
* 实现命令:HGET key field,返回哈希表 key中给定域 field的值
*
* @param key
* @param field
* @return
*/
public String hget(String key, String field) {
return (String) redisTemplate.opsForHash().get(key, field);
}
/**
* 实现命令:HDEL key field [field ...],删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
*
* @param key
* @param fields
*/
public void hdel(String key, Object... fields) {
redisTemplate.opsForHash().delete(key, fields);
}
/**
* 实现命令:HGETALL key,返回哈希表 key中,所有的域和值。
*
* @param key
* @return
*/
public Map<Object, Object> hgetall(String key) {
return redisTemplate.opsForHash().entries(key);
}
/**
* 判断有无hash field
* @param key
* @param field
* @return
*/
public boolean hexists(String key, String field){
return redisTemplate.opsForHash().hasKey(key, field);
}
没有合适的资源?快使用搜索试试~ 我知道了~
Java毕业设计项目:一个高校宿舍管理与交流系统源码.zip
共477个文件
java:158个
vue:75个
js:71个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 4 浏览量
2023-01-06
17:54:06
上传
评论 1
收藏 66.15MB ZIP 举报
温馨提示
Java毕业设计项目:一个高校宿舍管理与交流系统源码.zip
资源推荐
资源详情
资源评论
收起资源包目录
Java毕业设计项目:一个高校宿舍管理与交流系统源码.zip (477个子文件)
LeaveRequest.class 10KB
PostVo.class 10KB
User.class 10KB
SecurityConfig.class 9KB
CheckLogVo.class 8KB
Image.class 8KB
Bed.class 7KB
Post.class 7KB
Dorm.class 7KB
RabbitMqConfig.class 6KB
CheckLog.class 6KB
PostCommentVo.class 6KB
Fix.class 6KB
CheckItemLogVo.class 6KB
Menu.class 5KB
CheckItem.class 5KB
BedInfo.class 5KB
Swagger2Config.class 5KB
Announcement.class 5KB
Ip2CityEntity.class 5KB
RedisConfig.class 4KB
CustomFilter.class 4KB
CheckLogAnalysisVo.class 4KB
ChatMsg.class 4KB
MyUserDetails.class 4KB
JwtAuthenticationFilter.class 4KB
CheckItemUpdateDTO.class 4KB
UserVo.class 4KB
CustomUrlDecisionManager.class 3KB
Role.class 3KB
LogSearchVo.class 3KB
PostSearchVo.class 3KB
LineVo.class 3KB
DormVo.class 3KB
UserSearchVo.class 3KB
FixCatPieVo.class 3KB
LoginDto.class 2KB
PieVo.class 2KB
GraphVo.class 2KB
ImageVo.class 2KB
PostComment.class 2KB
SecurityConfig$1.class 2KB
RestAuthorizationEntryPoint.class 2KB
RestAccessDeniedHandler.class 2KB
RedissionConfig.class 2KB
FixCat.class 2KB
GlobalCorsConfig.class 2KB
UserRole.class 2KB
MenuRole.class 2KB
MybatisPlusConfig.class 1KB
TencentConfig.class 1KB
PetsServerApplication.class 872B
ColumnVo.class 866B
border.css 5KB
reset.css 2KB
.env.development 122B
Dockerfile 974B
.editorconfig 243B
.eslintignore 34B
.gitignore 231B
.gitignore 190B
.gitignore 130B
.gitignore 69B
index.html 891B
index.html 620B
favicon.ico 66KB
favicon.ico 4KB
pets.iml 195B
RedisUtil.java 10KB
UserServiceImpl.java 8KB
ExcelUtils.java 7KB
PostController.java 7KB
RabbitMqConfig.java 6KB
AnnouncementController.java 5KB
LeaveRequestController.java 5KB
UserController.java 5KB
WebSocketConfig.java 5KB
BedServiceImpl.java 5KB
ImageController.java 4KB
SecurityConfig.java 4KB
CheckLogController.java 4KB
CheckLogServiceImpl.java 4KB
IEChartsServiceImpl.java 4KB
ScheduleTask.java 4KB
PostServiceImpl.java 4KB
LeaveRequest.java 4KB
FixController.java 3KB
JwtUtil.java 3KB
MybatisRedisCache.java 3KB
RedissionLockAspect.java 3KB
TencentCos.java 3KB
DormController.java 3KB
User.java 3KB
MybatisPlusGenerator.java 3KB
Fix.java 3KB
CheckItemController.java 3KB
Swagger2Config.java 3KB
RedisConfig.java 3KB
JwtAuthenticationFilter.java 3KB
GeoIpUtil.java 3KB
共 477 条
- 1
- 2
- 3
- 4
- 5
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6649
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功