package com.heima.common.redis;
import org.apache.ibatis.ognl.Token;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.*;
import org.springframework.data.redis.core.*;
import org.springframework.data.redis.core.ZSetOperations.TypedTuple;
import org.springframework.data.redis.core.types.Expiration;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.TimeUnit;
@Component
public class CacheService extends CachingConfigurerSupport {
@Autowired
private StringRedisTemplate stringRedisTemplate;
public StringRedisTemplate getstringRedisTemplate() {
return this.stringRedisTemplate;
}
public String tryLock(String name, Long expire) {
String LockName = name + "_lock";
String token = UUID.randomUUID().toString();
RedisConnectionFactory connectionFactory = stringRedisTemplate.getConnectionFactory();
RedisConnection connection = connectionFactory.getConnection();
try {
Boolean set = connection.set(
LockName.getBytes(),
token.getBytes(),
Expiration.from(expire, TimeUnit.MILLISECONDS),
RedisStringCommands.SetOption.SET_IF_ABSENT
);
if (set != null && set) {
return token;
}
} finally {
RedisConnectionUtils.
releaseConnection(connection, connectionFactory, false);
}
return null;
}
/** -------------------key相关操作--------------------- */
/**
* 删除key
*
* @param key
*/
public void delete(String key) {
stringRedisTemplate.delete(key);
}
/**
* 批量删除key
*
* @param keys
*/
public void delete(Collection<String> keys) {
stringRedisTemplate.delete(keys);
}
/**
* 序列化key
*
* @param key
* @return
*/
public byte[] dump(String key) {
return stringRedisTemplate.dump(key);
}
/**
* 是否存在key
*
* @param key
* @return
*/
public Boolean exists(String key) {
return stringRedisTemplate.hasKey(key);
}
/**
* 设置过期时间
*
* @param key
* @param timeout
* @param unit
* @return
*/
public Boolean expire(String key, long timeout, TimeUnit unit) {
return stringRedisTemplate.expire(key, timeout, unit);
}
/**
* 设置过期时间
*
* @param key
* @param date
* @return
*/
public Boolean expireAt(String key, Date date) {
return stringRedisTemplate.expireAt(key, date);
}
/**
* 查找匹配的key
*
* @param pattern
* @return
*/
public Set<String> keys(String pattern) {
return stringRedisTemplate.keys(pattern);
}
/**
* 将当前数据库的 key 移动到给定的数据库 db 当中
*
* @param key
* @param dbIndex
* @return
*/
public Boolean move(String key, int dbIndex) {
return stringRedisTemplate.move(key, dbIndex);
}
/**
* 移除 key 的过期时间,key 将持久保持
*
* @param key
* @return
*/
public Boolean persist(String key) {
return stringRedisTemplate.persist(key);
}
/**
* 返回 key 的剩余的过期时间
*
* @param key
* @param unit
* @return
*/
public Long getExpire(String key, TimeUnit unit) {
return stringRedisTemplate.getExpire(key, unit);
}
/**
* 返回 key 的剩余的过期时间
*
* @param key
* @return
*/
public Long getExpire(String key) {
return stringRedisTemplate.getExpire(key);
}
/**
* 从当前数据库中随机返回一个 key
*
* @return
*/
public String randomKey() {
return stringRedisTemplate.randomKey();
}
/**
* 修改 key 的名称
*
* @param oldKey
* @param newKey
*/
public void rename(String oldKey, String newKey) {
stringRedisTemplate.rename(oldKey, newKey);
}
/**
* 仅当 newkey 不存在时,将 oldKey 改名为 newkey
*
* @param oldKey
* @param newKey
* @return
*/
public Boolean renameIfAbsent(String oldKey, String newKey) {
return stringRedisTemplate.renameIfAbsent(oldKey, newKey);
}
/**
* 返回 key 所储存的值的类型
*
* @param key
* @return
*/
public DataType type(String key) {
return stringRedisTemplate.type(key);
}
/** -------------------string相关操作--------------------- */
/**
* 设置指定 key 的值
*
* @param key
* @param value
*/
public void set(String key, String value) {
stringRedisTemplate.opsForValue().set(key, value);
}
/**
* 获取指定 key 的值
*
* @param key
* @return
*/
public String get(String key) {
return stringRedisTemplate.opsForValue().get(key);
}
/**
* 返回 key 中字符串值的子字符
*
* @param key
* @param start
* @param end
* @return
*/
public String getRange(String key, long start, long end) {
return stringRedisTemplate.opsForValue().get(key, start, end);
}
/**
* 将给定 key 的值设为 value ,并返回 key 的旧值(old value)
*
* @param key
* @param value
* @return
*/
public String getAndSet(String key, String value) {
return stringRedisTemplate.opsForValue().getAndSet(key, value);
}
/**
* 对 key 所储存的字符串值,获取指定偏移量上的位(bit)
*
* @param key
* @param offset
* @return
*/
public Boolean getBit(String key, long offset) {
return stringRedisTemplate.opsForValue().getBit(key, offset);
}
/**
* 批量获取
*
* @param keys
* @return
*/
public List<String> multiGet(Collection<String> keys) {
return stringRedisTemplate.opsForValue().multiGet(keys);
}
/**
* 设置ASCII码, 字符串'a'的ASCII码是97, 转为二进制是'01100001', 此方法是将二进制第offset位值变为value
*
* @param key
* @param
* @param value 值,true为1, false为0
* @return
*/
public boolean setBit(String key, long offset, boolean value) {
return stringRedisTemplate.opsForValue().setBit(key, offset, value);
}
/**
* 将值 value 关联到 key ,并将 key 的过期时间设为 timeout
*
* @param key
* @param value
* @param timeout 过期时间
* @param unit 时间单位, 天:TimeUnit.DAYS 小时:TimeUnit.HOURS 分钟:TimeUnit.MINUTES
* 秒:TimeUnit.SECONDS 毫秒:TimeUnit.MILLISECONDS
*/
public void setEx(String key, String value, long timeout, TimeUnit unit) {
stringRedisTemplate.opsForValue().set(key, value, timeout, unit);
}
/**
* 只有在 key 不存在时设置 key 的值
*
* @param key
* @param value
* @return 之前已经存在返回false, 不存在返回true
*/
public boolean setIfAbsent(String key, String value) {
return stringRedisTemplate.opsForValue().setIfAbsent(key, value);
}
/**
* 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始
*
* @param key
* @param value
* @param offset 从指定位置开始覆写
*/
public void setRange(String key, String value, long offset) {
stringRedisTemplate.opsForValue().set(key, value, offset);
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本项目为“基于Java的资讯项目设计源码”,包含879个文件,其中包括452个XML配置文件、188个字节码文件、185个Java源文件、22个YAML配置文件、20个Idea项目配置文件、4个Factories配置文件、2个FTL模板文件、1个Gitignore忽略配置文件、1个Markdown文档、1个XHTML文件。该项目利用Java语言开发,旨在为用户提供一个资讯聚合和分享的平台,支持新闻浏览、文章发布、用户互动等功能,适用于新闻网站、资讯平台等场景。项目结构清晰,代码注释详尽,易于理解和集成。
资源推荐
资源详情
资源评论
收起资源包目录
基于Java的资讯项目设计源码 (879个子文件)
CacheService.class 34KB
BCrypt.class 22KB
WmNewsServiceImpl.class 18KB
TaskServiceImpl.class 13KB
ApArticle.class 13KB
ReflectUtils.class 10KB
WmMaterialServiceImpl.class 10KB
WmUser.class 9KB
WmNews.class 9KB
WmChannelServiceImpl.class 9KB
WmNewsAutoScanServiceImpl.class 9KB
ApArticleServiceImpl.class 9KB
ApUserRealname.class 8KB
ApUserRealnameServiceImpl.class 7KB
DateUtils.class 7KB
ApUser.class 7KB
ArticleSearchServiceImpl.class 7KB
ArticleFreemarkerTest.class 7KB
WmNewsDto.class 7KB
ArticleFreemarkerServiceImpl.class 6KB
SimHashUtils.class 6KB
AdUser.class 6KB
MinIOFileStorageService.class 6KB
ResponseResult.class 6KB
AdChannelServiceImpl.class 5KB
WmUserServiceImpl.class 5KB
AuthorizeFilter.class 5KB
AuthorizeFilter.class 5KB
SearchArticleVo.class 5KB
SearchArticleVo.class 5KB
ApUserServiceImpl.class 5KB
AppJwtUtil.class 5KB
AppJwtUtil.class 5KB
AppJwtUtil.class 5KB
AppJwtUtil.class 5KB
WmChannel.class 5KB
HistoryServiceImpl.class 5KB
WmSensitiveServiceImpl.class 5KB
TaskinfoLogs.class 5KB
ZipUtils.class 5KB
AdUserServiceImpl.class 5KB
DESUtils.class 5KB
ApArticleConfig.class 4KB
WmMaterial.class 4KB
WmNewsTaskServiceImpl.class 4KB
SensitiveWordUtil.class 4KB
Taskinfo.class 4KB
WmNewsMaterial.class 4KB
NewsAuthDto.class 4KB
redisTest.class 4KB
WmNewsPageReqDto.class 4KB
ApArticleConfigServiceImpl.class 3KB
IdsUtils.class 3KB
MinIOConfigProperties.class 3KB
AuthorizeFilter.class 3KB
WmChannelDto.class 3KB
AssociateServiceImpl.class 3KB
Task.class 3KB
AppHttpCodeEnum.class 3KB
UrlSignUtils.class 3KB
ApUserSearch.class 3KB
Compute.class 3KB
ArticleHomeDto.class 3KB
AdSensitive.class 3KB
ApArticleContent.class 3KB
ApUserRealnamerDto.class 3KB
MinIOConfig.class 3KB
UserSearchDto.class 3KB
SearchListener.class 3KB
ProtostuffUtil.class 3KB
ApAssociateWords.class 3KB
SnowflakeIdWorker.class 3KB
ApArticleTest.class 3KB
ScheduleClient.class 3KB
WmNeswController.class 2KB
Swagger2Configuration.class 2KB
SwaggerConfiguration.class 2KB
PageRequestDto.class 2KB
WmMaterialController.class 2KB
AdChannelDto.class 2KB
WmTokenInterceptor.class 2KB
AdUserDto.class 2KB
MinIOTest.class 2KB
LoginDto.class 2KB
AdSensitiveDto.class 2KB
CacheService$2.class 2KB
MD5Utils.class 2KB
ExceptionCatch.class 2KB
ArticleHomeController.class 2KB
WemediaApplication.class 2KB
WmLoginDto.class 2KB
WmChannelController.class 2KB
JdkSerializeUtil.class 2KB
ArticleApplication.class 2KB
CacheService$1.class 2KB
WmNews$Status.class 2KB
a.class 2KB
ApUserTokenInterceptor.class 2KB
ElasticSearchConfig.class 2KB
TaskTypeEnum.class 2KB
共 879 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
lsx202406
- 粉丝: 350
- 资源: 36
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功