package cn.zwz.basics.redis;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.DataType;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.Cursor;
import org.springframework.data.redis.core.ScanOptions;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Component;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
/**
* Redis工具类
*/
@Component
public class RedisTemplateHelper {
@Autowired
private StringRedisTemplate redisTemplate;
@ApiOperation(value = "scan实现")
private void scan(String wayForScan, Consumer<byte[]> consumableList) {
redisTemplate.execute((RedisConnection connection) -> {
try (Cursor<byte[]> cursor = connection.scan(ScanOptions.scanOptions().count(Long.MAX_VALUE).match(wayForScan).build())) {
cursor.forEachRemaining(consumableList);
return null;
} catch (Exception exception) {
throw new RuntimeException(exception);
}
});
}
@ApiOperation(value = "scan获取符合条件的key")
public Set<String> scan(String pattern) {
Set<String> keys = new HashSet<>();
this.scan(pattern, item -> {
String key = new String(item, StandardCharsets.UTF_8);
keys.add(key);
});
return keys;
}
@ApiOperation(value = "通过通配符表达式删除所有")
public void deleteByPattern(String pattern) {
Set<String> keys = this.scan(pattern);
redisTemplate.delete(keys);
}
@ApiOperation(value = "删除key")
public void delete(String key) {
redisTemplate.delete(key);
}
@ApiOperation(value = "批量删除key")
public void delete(Collection<String> keys) {
redisTemplate.delete(keys);
}
@ApiOperation(value = "序列化key")
public byte[] dump(String key) {
return redisTemplate.dump(key);
}
@ApiOperation(value = "是否存在key")
public Boolean hasKey(String key) {
return redisTemplate.hasKey(key);
}
@ApiOperation(value = "设置过期时间")
public Boolean expire(String key, long timeout, TimeUnit unit) {
return redisTemplate.expire(key, timeout, unit);
}
@ApiOperation(value = "设置过期时间")
public Boolean expireAt(String key, Date date) {
return redisTemplate.expireAt(key, date);
}
@ApiOperation(value = "查找匹配的key")
public Set<String> keys(String pattern) {
return redisTemplate.keys(pattern);
}
@ApiOperation(value = "将当前数据库的 key 移动到给定的数据库 db 当中")
public Boolean move(String key, int dbIndex) {
return redisTemplate.move(key, dbIndex);
}
@ApiOperation(value = "移除 key 的过期时间,key 将持久保持")
public Boolean persist(String key) {
return redisTemplate.persist(key);
}
@ApiOperation(value = "返回 key 的剩余的过期时间")
public Long getExpire(String key, TimeUnit unit) {
return redisTemplate.getExpire(key, unit);
}
@ApiOperation(value = "返回 key 的剩余的过期时间")
public Long getExpire(String key) {
return redisTemplate.getExpire(key);
}
@ApiOperation(value = "从当前数据库中随机返回一个 key")
public String randomKey() {
return redisTemplate.randomKey();
}
@ApiOperation(value = "修改 key 的名称")
public void rename(String oldKey, String newKey) {
redisTemplate.rename(oldKey, newKey);
}
@ApiOperation(value = "仅当 newkey 不存在时,将 oldKey 改名为 newkey")
public Boolean renameIfAbsent(String oldKey, String newKey) {
return redisTemplate.renameIfAbsent(oldKey, newKey);
}
@ApiOperation(value = "返回 key 所储存的值的类型")
public DataType type(String key) {
return redisTemplate.type(key);
}
/** -------------------string相关操作--------------------- */
@ApiOperation(value = "设置指定 key 的值")
public void set(String key, String value) {
redisTemplate.opsForValue().set(key, value);
}
@ApiOperation(value = "将值 value 关联到 key ,并将 key 的过期时间设为 timeout")
public void set(String key, String value, long timeout, TimeUnit unit) {
redisTemplate.opsForValue().set(key, value, timeout, unit);
}
@ApiOperation(value = "获取指定 key 的值")
public String get(String key) {
return redisTemplate.opsForValue().get(key);
}
@ApiOperation(value = "返回 key 中字符串值的子字符")
public String getRange(String key, long start, long end) {
return redisTemplate.opsForValue().get(key, start, end);
}
@ApiOperation(value = "将给定 key 的值设为 value ,并返回 key 的旧值(old value)")
public String getAndSet(String key, String value) {
return redisTemplate.opsForValue().getAndSet(key, value);
}
@ApiOperation(value = "对 key 所储存的字符串值,获取指定偏移量上的位(bit)")
public Boolean getBit(String key, long offset) {
return redisTemplate.opsForValue().getBit(key, offset);
}
@ApiOperation(value = "批量获取")
public List<String> multiGet(Collection<String> keys) {
return redisTemplate.opsForValue().multiGet(keys);
}
@ApiOperation(value = "设置ASCII码, 字符串'a'的ASCII码是97, 转为二进制是'01100001', 此方法是将二进制第offset位值变为value",notes = "offset 位置, value: 值,true为1, false为0")
public boolean setBit(String key, long offset, boolean value) {
return redisTemplate.opsForValue().setBit(key, offset, value);
}
@ApiOperation(value = "只有在 key 不存在时设置 key 的值",notes = "之前已经存在返回false, 不存在返回true")
public boolean setIfAbsent(String key, String value) {
return redisTemplate.opsForValue().setIfAbsent(key, value);
}
@ApiOperation(value = "用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始",notes = "offset:从指定位置开始覆写")
public void setRange(String key, String value, long offset) {
redisTemplate.opsForValue().set(key, value, offset);
}
@ApiOperation(value = "获取字符串的长度")
public Long size(String key) {
return redisTemplate.opsForValue().size(key);
}
@ApiOperation(value = "批量添加")
public void multiSet(Map<String, String> maps) {
redisTemplate.opsForValue().multiSet(maps);
}
@ApiOperation(value = "同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在")
public boolean multiSetIfAbsent(Map<String, String> maps) {
return redisTemplate.opsForValue().multiSetIfAbsent(maps);
}
@ApiOperation(value = "增加(自增长), 负数则为自减")
public Long incrBy(String key, long increment) {
return redisTemplate.opsForValue().increment(key, increment);
}
@ApiOperation(value = "增加(自增长)")
public Double incrByFloat(String key, double increment) {
return redisTemplate.opsForValue().increment(key, increment);
}
@ApiOperation(value = "追加到末尾")
public Integer append(String key, String value) {
return redisTemplate.opsForValue().append(key, value);
}
// hash表
@ApiOperation(value = "获取存储在哈希表中指定字段的值")
public Object hGet(String key, String field) {
return redisTemplate.opsForHash
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于SpringBoot+vue的学生就业信息管理系统源码+数据库(高分项目).zip 高分设计项目,代码完整下载可用,纯手打高分设计,也可作为毕业设计、期末大作业和课程设计,小白也可实战。 基于SpringBoot+vue的学生就业信息管理系统源码+数据库(高分项目).zip 高分设计项目,代码完整下载可用,纯手打高分设计,也可作为毕业设计、期末大作业和课程设计,小白也可实战。 基于SpringBoot+vue的学生就业信息管理系统源码+数据库(高分项目).zip 高分设计项目,代码完整下载可用,纯手打高分设计,也可作为毕业设计、期末大作业和课程设计,小白也可实战。 基于SpringBoot+vue的学生就业信息管理系统源码+数据库(高分项目).zip 高分设计项目,代码完整下载可用,纯手打高分设计,也可作为毕业设计、期末大作业和课程设计,小白也可实战。 基于SpringBoot+vue的学生就业信息管理系统源码+数据库(高分项目).zip 高分设计项目,代码完整下载可用,纯手打高分设计,也可作为毕业设计、期末大作业和课程设计,小白也可实战。基于SpringBoot+v
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringBoot+vue的学生就业信息管理系统源码+数据库(高分项目).zip (370个子文件)
tree.btl 26KB
table.btl 26KB
tableIndex.btl 18KB
add.btl 9KB
edit.btl 9KB
mpController.btl 4KB
entity.btl 3KB
mplus.btl 1KB
mpServiceImpl.btl 844B
api.btl 839B
treeApi.btl 739B
mapper.btl 327B
mpService.btl 312B
mapperXml.btl 225B
loading2.gif 13KB
vaptcha-loading.gif 1KB
.gitignore 106B
index.html 4KB
RedisTemplateHelper.java 26KB
UserController.java 20KB
PermissionController.java 15KB
ZwzVueGenerator.java 13KB
ZwzWxNoticeUtils.java 11KB
MyBatisPlusCodeUtils.java 11KB
DepartmentController.java 11KB
CreateVerifyCode.java 9KB
FileController.java 8KB
RoleController.java 7KB
EmploymentStatusController.java 7KB
SecurityUtil.java 6KB
WeiChatUtils.java 6KB
RedisController.java 6KB
SystemLogAspect.java 6KB
TeacherController.java 6KB
RedisInfo.java 5KB
MessageBoardController.java 5KB
DictDataController.java 5KB
MyDoorController.java 5KB
PageUtil.java 5KB
WebSecurityConfig.java 5KB
JwtRoleFilter.java 5KB
StudentController.java 5KB
AuthenticationFailHandler.java 4KB
LimitRaterInterceptor.java 4KB
RedisExceptionThrowsConfig.java 4KB
IpInfoUtil.java 4KB
AuthenticationSuccessHandler.java 4KB
DictController.java 4KB
CertificateController.java 4KB
QwVerificationCodeController.java 4KB
HonorController.java 4KB
WeChatUploadMeidaUtils.java 3KB
ZwzFileUtils.java 3KB
User.java 3KB
MyMetaObjectHandler.java 3KB
MySecurityMetadataSource.java 3KB
ZwzBaseController.java 3KB
ResultUtil.java 3KB
Base64DecodeMultipartFile.java 3KB
ImageValidateFilter.java 3KB
SecurityUserDetails.java 3KB
EmploymentStatus.java 3KB
UploadController.java 3KB
Permission.java 2KB
ResponseUtil.java 2KB
ZwzBaseEntity.java 2KB
RedisRaterLimiter.java 2KB
MyFilterSecurityInterceptor.java 2KB
UserDetailsServiceImpl.java 2KB
LogController.java 2KB
MyAccessDecisionManager.java 2KB
HibernateProxyTypeAdapter.java 2KB
ZwzLoginProperties.java 2KB
SettingConstant.java 2KB
SettingController.java 2KB
MyUserController.java 2KB
Log.java 2KB
Department.java 2KB
ZwzBaseService.java 2KB
CaptchaController.java 2KB
File.java 2KB
DictData.java 1KB
CommonUtil.java 1KB
Field.java 1KB
Teacher.java 1KB
Entity.java 1KB
InterceptConfiguration.java 1KB
MenuVo.java 1KB
Role.java 1KB
BeansConfiguration.java 1KB
UserRole.java 1KB
CommonConstant.java 1KB
MessageBoard.java 1KB
Dict.java 1KB
ThreadPoolUtil.java 1KB
IpInfoController.java 1KB
DepartmentHeader.java 1023B
Certificate.java 1021B
Student.java 1016B
ZwzAccessDeniedHandler.java 1008B
共 370 条
- 1
- 2
- 3
- 4
盈梓的博客
- 粉丝: 9560
- 资源: 2308
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (35734838)信号与系统实验一实验报告
- (175797816)华南理工大学信号与系统Signal and Systems期末考试试卷及答案
- BLDC 无刷电机 脉冲注入 启动法 启动过程持续插入正反向短时脉冲;定位准,启动速度快; Mcu:华大hc32f030; 功能:脉冲定位,脉冲注入,开环,速度环,电流环,运行中启动,过零检测; 保护
- (3662218)学生宿舍管理系统数据库
- (4427850)编译原理 词法分析器
- (10675456)编译原理的词法分析语法分析
- (7964012)编译原理实验报告及源码
- (3913042)编译原理编译原理词法分析实验.rar
- (26198606)VUE.js高仿饿了么商城实战项目源码(未打包文件)
- 盘式电机 maxwell 电磁仿真模型 双转单定结构,halbach 结构,双定单转 24 槽 20 极,18槽 1 2 极,18s16p(可做其他槽极配合) 参数化模型,内外径,叠厚等所有参数均可调
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页