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
没有合适的资源?快使用搜索试试~ 我知道了~
基于Vue和SpringBoot的房屋租赁信息系统(源码+数据库)
共386个文件
java:187个
vue:101个
js:48个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 6 下载量 76 浏览量
2023-01-09
09:52:55
上传
评论 5
收藏 1.4MB ZIP 举报
温馨提示
本资源是基于Vue和SpringBoot的房屋租赁信息系统,包含源代码+数据库)。文件预览贴:https://bbs.csdn.net/topics/611842330,你可以预览压缩包内的所有内容,欢迎下载。 系统支持买家、卖家、管理员三个角色使用,还包括基础的用户管理、文件管理、角色管理、日志管理等。 买家:支持浏览房屋租赁/房屋出售信息、报价预定房屋租赁/房屋出售信息、查询我的房屋租赁/房屋出售交易信息。 卖家:支持查询我的销售/租赁订单、同意/驳回买家的报价预定。 管理员:全局监控系统所有的交易订单,以及买家/卖家所没有的全部功能。 高分毕业设计项目,也可作为课程设计、大作业,下载即可使用,无需修改,确保可以直接运行,主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java学习者,也可作为课程设计、期末大作业。
资源推荐
资源详情
资源评论
收起资源包目录
基于Vue和SpringBoot的房屋租赁信息系统(源码+数据库) (386个子文件)
tree.btl 27KB
table.btl 26KB
tableIndex.btl 19KB
add.btl 10KB
edit.btl 9KB
mpController.btl 4KB
entity.btl 3KB
mplus.btl 1KB
mpServiceImpl.btl 866B
api.btl 861B
treeApi.btl 758B
mapper.btl 340B
mpService.btl 323B
mapperXml.btl 229B
loading2.gif 13KB
vaptcha-loading.gif 1KB
index.html 4KB
RedisTemplateHelper.java 27KB
UserController.java 21KB
PermissionController.java 15KB
ZwzVueGenerator.java 13KB
ZwzWxNoticeUtils.java 11KB
MyBatisPlusCodeUtils.java 11KB
DepartmentController.java 11KB
CreateVerifyCode.java 9KB
CustomerLeaseController.java 9KB
CustomerSellController.java 9KB
FileController.java 8KB
RoleController.java 7KB
SecurityUtil.java 6KB
WeiChatUtils.java 6KB
HouseLeaseOrderController.java 6KB
HouseSellOrderController.java 6KB
RedisController.java 6KB
SystemLogAspect.java 6KB
TeacherController.java 6KB
RedisInfo.java 5KB
DictDataController.java 5KB
HouseLeaseController.java 5KB
MyDoorController.java 5KB
HouseSellController.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
QwVerificationCodeController.java 4KB
WeChatUploadMeidaUtils.java 4KB
ZwzFileUtils.java 3KB
User.java 3KB
MyMetaObjectHandler.java 3KB
MySecurityMetadataSource.java 3KB
ZwzBaseController.java 3KB
ResultUtil.java 3KB
Base64DecodeMultipartFile.java 3KB
SecurityUserDetails.java 3KB
ImageValidateFilter.java 3KB
UploadController.java 3KB
HouseVoChangeUtils.java 3KB
Permission.java 3KB
CustomerLease.java 3KB
CustomerSell.java 2KB
ResponseUtil.java 2KB
ZwzBaseEntity.java 2KB
MyFilterSecurityInterceptor.java 2KB
RedisRaterLimiter.java 2KB
HouseOrderChangeUtils.java 2KB
HouseLeaseOrder.java 2KB
UserDetailsServiceImpl.java 2KB
LogController.java 2KB
MyAccessDecisionManager.java 2KB
SettingConstant.java 2KB
HibernateProxyTypeAdapter.java 2KB
HouseSellOrder.java 2KB
ZwzLoginProperties.java 2KB
SettingController.java 2KB
Log.java 2KB
MyUserController.java 2KB
Department.java 2KB
ZwzBaseService.java 2KB
CaptchaController.java 2KB
File.java 2KB
DictData.java 2KB
CommonUtil.java 1KB
HouseLease.java 1KB
Field.java 1KB
Teacher.java 1KB
Entity.java 1KB
InterceptConfiguration.java 1KB
MenuVo.java 1KB
HouseSell.java 1KB
Role.java 1KB
BeansConfiguration.java 1KB
UserRole.java 1KB
CommonConstant.java 1KB
共 386 条
- 1
- 2
- 3
- 4
Designer小郑
- 粉丝: 8w+
- 资源: 156
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- js基础但是这个烂怂东西要求标题不能少于10个字才能上传然后我其实还没有写完之后再修订吧.md
- electron-tabs-master
- Unity3D 布朗运动算法插件 Brownian Motion
- 鼎微R16中控升级包R16-4.5.10-20170221及强制升级方法
- 鼎微R16中控升级包公版UI 2015及强制升级方法,救砖包
- 基于CSS与JavaScript的积分系统设计源码
- 生物化学作业_1_生物化学作业资料.pdf
- 基于libgdx引擎的Java开发连连看游戏设计源码
- 基于MobileNetV3的SSD目标检测算法PyTorch实现设计源码
- 基于Java JDK的全面框架设计源码学习项目
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页