package name404.study.face.utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@Component
public class RedisUtil {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
/**
* 指定缓存失效时间
*
* @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((Collection<String>) CollectionUtils.arrayToList(key));
}
}
}
/**
* 普通缓存获取
*
* @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 delta 要增加几(大于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 delta 要减少几(小于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 (Except
没有合适的资源?快使用搜索试试~ 我知道了~
基于springboot+jpa+Erupt框架开发的综合签到打卡系统,支持人脸识别.zip
共88个文件
java:42个
js:11个
png:10个
0 下载量 10 浏览量
2023-08-16
15:29:00
上传
评论
收藏 2.09MB ZIP 举报
温馨提示
基于springboot+jpa+Erupt框架开发的综合签到打卡系统,支持人脸识别.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于springboot+jpa+Erupt框架开发的综合签到打卡系统,支持人脸识别.zip (88个子文件)
code_resource_1
pom.xml 5KB
.gitattributes 31B
src
face_sign_in.sql 174KB
test
java
name404
study
face
FaceApplicationTests.java 138B
main
resources
application-dev.yml 2KB
templates
register.html 5KB
search.html 3KB
face.html 393B
updateface.html 5KB
application-prod.yml 2KB
public
uni_modules
face-bio-assay
static
images
cover.png 3KB
app.js 2KB
app.module.js 0B
home.html 16KB
amis
sdk.js 2.24MB
charts.js 1.19MB
tinymce.js 1.39MB
sdk.css 859KB
helper.css 909KB
app.css 704B
images
cover.png 3KB
static
js
pages-sign-face.0362ee0f.js 1012B
pages-admin-admin.37321e56.js 1006B
pages-index-index.6c61eb70.js 169KB
chunk-vendors.1ba13cd2.js 757KB
pages-data-data.1d93afa4.js 1013B
index.497cf4ae.js 18KB
style
thorui.min.css 30KB
thorui.css 37KB
images
tabbar
admin_active.png 7KB
data.png 3KB
face_active.png 5KB
face.png 4KB
admin.png 7KB
index.png 6KB
index_active.png 4KB
data_active.png 3KB
baidu.html 15KB
index.5841170f.css 94KB
fonts
thorui.ttf 50KB
front.html 792B
application-docker.yml 2KB
application.yml 99B
java
name404
study
face
FaceApplication.java 696B
controllers
RouteController.java 828B
FaceController.java 8KB
VisitorContorller.java 2KB
UserContorller.java 2KB
SignInController.java 6KB
hander
FetchHandlerImpl.java 3KB
GlobalExceptionHandler.java 520B
utils
Result.java 2KB
Base64Utils.java 643B
RedisUtil.java 14KB
OkHttpClientUtil.java 8KB
dao
UserDao.java 419B
SignLogDao.java 655B
SignLogDetailDao.java 321B
SystemVariablesDao.java 275B
GroupDao.java 278B
UserDetailDao.java 421B
service
UserService.java 1KB
BaiduFaceService.java 1KB
SystemVariablesService.java 2KB
GroupService.java 1KB
SignLogService.java 3KB
impl
BaiduFaceServiceImpl.java 5KB
SystemVariablesServiceImpl.java 2KB
UserServiceImpl.java 2KB
SignLogServiceImpl.java 9KB
GroupServiceImpl.java 2KB
VisitorServiceImpl.java 1KB
VisitorService.java 712B
entity
Group.java 2KB
SignLogDetail.java 831B
SignLog.java 6KB
UserDetail.java 761B
User.java 6KB
SystemVariables.java 2KB
aop
WxPush.java 326B
LogAspect.java 3KB
config
Swagger2.java 2KB
RedisConfig.java 2KB
CompleteScheduleConfig.java 2KB
.erupt
upms.loaded 5B
generator.loaded 5B
REA1DME.md 26KB
.gitignore 333B
共 88 条
- 1
资源评论
LeapMay
- 粉丝: 3w+
- 资源: 2305
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功