package com.las.nogu.utils;
import com.alibaba.fastjson.support.spring.GenericFastJsonRedisSerializer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@Component
public class RedisUtils {
private static RedisTemplate<String, Object> redisTemplate;
// 不返回template,里面的方法难用的要死,直接工具类后面都封装就行了
// public static RedisTemplate<String, Object> getRedisTemplate() {
// return redisTemplate;
// }
@Autowired
private RedisUtils(@Qualifier("redisConnectionFactory") RedisConnectionFactory redisConnectionFactory) {
// redisTemplate模板初始化
redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
// String的序列化
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// json序列化配置
GenericFastJsonRedisSerializer jackson2JsonRedisSerializer = new GenericFastJsonRedisSerializer();
//key采用String的序列化方式
redisTemplate.setKeySerializer(stringRedisSerializer);
//hash的key也采用String 的序列化方式
redisTemplate.setHashKeySerializer(stringRedisSerializer);
//value的序列化方式采用jackson的方式
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
//hash的value序列化方式采用jackson
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
}
/**
* 指定缓存失效时间
*
* @param key 键
* @param time 时间(秒)
*/
public static 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 static long getExpire(String key) {
return redisTemplate.getExpire(key, TimeUnit.SECONDS);
}
/**
* 判断key是否存在
*
* @param key 键
* @return true 存在 false不存在
*/
public static boolean hasKey(String key) {
try {
return redisTemplate.hasKey(key);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 删除缓存
*
* @param key 可以传一个值 或多个
*/
public static void del(String... key) {
if (key != null && key.length > 0) {
if (key.length == 1) {
redisTemplate.delete(key[0]);
} else {
redisTemplate.delete(Arrays.asList(key));
}
}
}
/**
* 获取并删除缓存
*
* @param key 键
* @return 值
*/
public static Object getAndDelete(String key) {
try {
return key == null ? null : get(key);
} finally {
del(key);
}
}
/**
* 普通缓存获取
*
* @param key 键
* @return 值
*/
public static Object get(String key) {
return key == null ? null : redisTemplate.opsForValue().get(key);
}
/**
* 普通缓存放入
*
* @param key 键
* @param value 值
* @return true成功 false失败
*/
public static 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 static boolean set(String key, Object value, long time) {
try {
if (time > 0) {
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 递增
*
* @param key 键
* @param delta 要增加几(大于0)
*/
public static long incr(String key, long delta) {
if (delta < 0) {
throw new RuntimeException("递增因子必须大于0");
}
return redisTemplate.opsForValue().increment(key, delta);
}
/**
* 递减
*
* @param key 键
* @param delta 要减少几(小于0)
*/
public static long decr(String key, long delta) {
if (delta < 0) {
throw new RuntimeException("递减因子必须大于0");
}
return redisTemplate.opsForValue().increment(key, -delta);
}
/**
* HashGet
*
* @param key 键 不能为null
* @param item 项 不能为null
*/
public static Object hget(String key, String item) {
return redisTemplate.opsForHash().get(key, item);
}
/**
* 获取hashKey对应的所有键值
*
* @param key 键
* @return 对应的多个键值
*/
public static Map<Object, Object> hmget(String key) {
return redisTemplate.opsForHash().entries(key);
}
/**
* HashSet
*
* @param key 键
* @param map 对应多个键值
*/
public static 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 static boolean hmset(String key, Map<String, Object> map, long time) {
try {
if (time > 0) {
redisTemplate.opsForHash().putAll(key, map);
expire(key, time);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建
*
* @param key 键
* @param item 项
* @param value 值
* @return true 成功 false失败
*/
public static 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 static boolean hset(String key, String item, Object value, long time) {
try {
if (time > 0) {
redisTemplate.opsForHash().put(key, item, value);
expire(key, time);
}
return true;
} catch (Except
没有合适的资源?快使用搜索试试~ 我知道了~
AI算法-语音网站.zip
共1241个文件
svg:536个
mtn:140个
js:95个
需积分: 1 0 下载量 130 浏览量
2023-09-01
20:53:21
上传
评论
收藏 81.73MB ZIP 举报
温馨提示
AI算法-语音网站.zip
资源推荐
资源详情
资源评论
收起资源包目录
AI算法-语音网站.zip (1241个子文件)
bootstrap.min.css 119KB
bootstrap.css 118KB
layui.css 110KB
app.css 69KB
flag-icons.css 31KB
flag-icons.min.css 27KB
bootstrap-theme.css 25KB
bootstrap-theme.min.css 23KB
live2d.css 21KB
admin.css 21KB
font-awesome.min.css 17KB
animate.css 16KB
layer.css 14KB
style.css 13KB
epiceditor.css 12KB
stylesheet.css 11KB
simple-line-icons.css 11KB
fullcalendar.css 11KB
template.css 11KB
chosen.css 10KB
alpha.css 9KB
datepicker.css 5KB
jplayer.flat.css 3KB
nestable.css 3KB
home.css 3KB
bartik.css 2KB
login.css 2KB
normalize.min.css 2KB
datatables.css 2KB
slider.css 2KB
bootstrap_calendar.css 1KB
reset.css 1KB
jquery-jvectormap-1.2.2.css 755B
theme.css 683B
font.css 679B
my.css 549B
epic-light.css 502B
community.css 153B
search.css 139B
growthrate.csv 24KB
Thumbs.db 707KB
TorusBiline-SemiBold.eot 173KB
TorusBiline-Bold.eot 172KB
TorusBiline-Regular.eot 171KB
TorusOutline-SemiBold.eot 167KB
TorusOutline-Bold.eot 166KB
TorusBiline-Heavy.eot 166KB
TorusOutline-Regular.eot 165KB
TorusInline-SemiBold.eot 164KB
TorusInline-Regular.eot 164KB
TorusInline-Bold.eot 161KB
TorusOutline-Heavy.eot 159KB
TorusOutline-Light.eot 157KB
TorusBiline-Light.eot 156KB
TorusInline-Heavy.eot 155KB
TorusInline-Light.eot 155KB
TorusBiline-Thin.eot 150KB
TorusOutline-Thin.eot 149KB
TorusInline-Thin.eot 148KB
TorusNotched-SemiBold.eot 118KB
TorusNotched-Bold.eot 117KB
TorusNotched-Heavy.eot 116KB
TorusNotched-Regular.eot 115KB
TorusNotched-Light.eot 110KB
TorusNotched-Thin.eot 107KB
iconfont.eot 50KB
fontawesome-webfont.eot 37KB
Simple-Line-Icons.eot 35KB
loading-0.gif 6KB
loading-2.gif 2KB
loading-1.gif 701B
.gitignore 423B
demo.html 49KB
home.html 24KB
index.html 8KB
modellist.html 4KB
publish.html 4KB
index.html 4KB
index.html 1KB
favicon.ico 15KB
nogu.jar 50.28MB
RedisUtils.java 15KB
VitsController.java 12KB
DateUtils.java 11KB
GenVideoConsumer.java 8KB
VitsManager.java 8KB
RabbitProducerConfig.java 6KB
MikanIndexController.java 6KB
SendMessageAfterHandler.java 4KB
InterceptionActionAspect.java 4KB
HttpUtils.java 4KB
BaseinIntercept.java 4KB
StrUtils.java 4KB
LoginController.java 3KB
AdminController.java 3KB
IndexController.java 3KB
MikanIntercept.java 3KB
VitsRoleServiceImpl.java 3KB
AdminIntercept.java 2KB
ActionLog.java 2KB
共 1241 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13
资源评论
wzxue1984
- 粉丝: 18
- 资源: 913
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功