package com.imooc.o2o.cache;
import java.util.List;
import java.util.Map;
import java.util.Set;
import redis.clients.jedis.BinaryClient.LIST_POSITION;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.SortingParams;
import redis.clients.util.SafeEncoder;
public class JedisUtil {
/**
* 缓存生存时间
*/
private final int expire = 60000;
/** 操作Key的方法 */
public Keys KEYS;
/** 对存储结构为String类型的操作 */
public Strings STRINGS;
/** 对存储结构为List类型的操作 */
public Lists LISTS;
/** 对存储结构为Set类型的操作 */
public Sets SETS;
/** 对存储结构为HashMap类型的操作 */
public Hash HASH;
/** Redis连接池对象 */
private JedisPool jedisPool;
/**
* 获取redis连接池
*
* @return
*/
public JedisPool getJedisPool() {
return jedisPool;
}
/**
* 设置redis连接池
*
* @return
*/
public void setJedisPool(JedisPoolWriper jedisPoolWriper) {
this.jedisPool = jedisPoolWriper.getJedisPool();
}
/**
* 从jedis连接池中获取获取jedis对象
*
* @return
*/
public Jedis getJedis() {
return jedisPool.getResource();
}
/**
* 设置过期时间
*
* @author xiangze
* @param key
* @param seconds
*/
public void expire(String key, int seconds) {
if (seconds <= 0) {
return;
}
Jedis jedis = getJedis();
jedis.expire(key, seconds);
jedis.close();
}
/**
* 设置默认过期时间
*
* @author xiangze
* @param key
*/
public void expire(String key) {
expire(key, expire);
}
// *******************************************Keys*******************************************//
public class Keys {
/**
* 清空所有key
*/
public String flushAll() {
Jedis jedis = getJedis();
String stata = jedis.flushAll();
jedis.close();
return stata;
}
/**
* 更改key
*
* @param String
* oldkey
* @param String
* newkey
* @return 状态码
*/
public String rename(String oldkey, String newkey) {
return rename(SafeEncoder.encode(oldkey), SafeEncoder.encode(newkey));
}
/**
* 更改key,仅当新key不存在时才执行
*
* @param String
* oldkey
* @param String
* newkey
* @return 状态码
*/
public long renamenx(String oldkey, String newkey) {
Jedis jedis = getJedis();
long status = jedis.renamenx(oldkey, newkey);
jedis.close();
return status;
}
/**
* 更改key
*
* @param String
* oldkey
* @param String
* newkey
* @return 状态码
*/
public String rename(byte[] oldkey, byte[] newkey) {
Jedis jedis = getJedis();
String status = jedis.rename(oldkey, newkey);
jedis.close();
return status;
}
/**
* 设置key的过期时间,以秒为单位
*
* @param String
* key
* @param 时间
* ,已秒为单位
* @return 影响的记录数
*/
public long expired(String key, int seconds) {
Jedis jedis = getJedis();
long count = jedis.expire(key, seconds);
jedis.close();
return count;
}
/**
* 设置key的过期时间,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00,格里高利历)的偏移量。
*
* @param String
* key
* @param 时间
* ,已秒为单位
* @return 影响的记录数
*/
public long expireAt(String key, long timestamp) {
Jedis jedis = getJedis();
long count = jedis.expireAt(key, timestamp);
jedis.close();
return count;
}
/**
* 查询key的过期时间
*
* @param String
* key
* @return 以秒为单位的时间表示
*/
public long ttl(String key) {
// ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
long len = sjedis.ttl(key);
sjedis.close();
return len;
}
/**
* 取消对key过期时间的设置
*
* @param key
* @return 影响的记录数
*/
public long persist(String key) {
Jedis jedis = getJedis();
long count = jedis.persist(key);
jedis.close();
return count;
}
/**
* 删除keys对应的记录,可以是多个key
*
* @param String
* ... keys
* @return 删除的记录数
*/
public long del(String... keys) {
Jedis jedis = getJedis();
long count = jedis.del(keys);
jedis.close();
return count;
}
/**
* 删除keys对应的记录,可以是多个key
*
* @param String
* ... keys
* @return 删除的记录数
*/
public long del(byte[]... keys) {
Jedis jedis = getJedis();
long count = jedis.del(keys);
jedis.close();
return count;
}
/**
* 判断key是否存在
*
* @param String
* key
* @return boolean
*/
public boolean exists(String key) {
// ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
boolean exis = sjedis.exists(key);
sjedis.close();
return exis;
}
/**
* 对List,Set,SortSet进行排序,如果集合数据较大应避免使用这个方法
*
* @param String
* key
* @return List<String> 集合的全部记录
**/
public List<String> sort(String key) {
// ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
List<String> list = sjedis.sort(key);
sjedis.close();
return list;
}
/**
* 对List,Set,SortSet进行排序或limit
*
* @param String
* key
* @param SortingParams
* parame 定义排序类型或limit的起止位置.
* @return List<String> 全部或部分记录
**/
public List<String> sort(String key, SortingParams parame) {
// ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
List<String> list = sjedis.sort(key, parame);
sjedis.close();
return list;
}
/**
* 返回指定key存储的类型
*
* @param String
* key
* @return String string|list|set|zset|hash
**/
public String type(String key) {
// ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
String type = sjedis.type(key);
sjedis.close();
return type;
}
/**
* 查找所有匹配给定的模式的键
*
* @param String
* key的表达式,*表示多个,?表示一个
*/
public Set<String> keys(String pattern) {
Jedis jedis = getJedis();
Set<String> set = jedis.keys(pattern);
jedis.close();
return set;
}
}
// *******************************************Strings*******************************************//
public class Strings {
/**
* 根据key获取记录
*
* @param String
* key
* @return 值
*/
public String get(String key) {
// ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
String value = sjedis.get(key);
sjedis.close();
return value;
}
/**
* 根据key获取记录
*
* @param byte[]
* key
* @return 值
*/
public byte[] get(byte[] key) {
// ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
byte[] value = sjedis.get(key);
sjedis.close();
return value;
}
/**
* 添加记录,如果记录已存在将覆盖原有的value
*
* @param String
* key
* @param String
* value
* @return 状态码
*/
public String set(String key, String value) {
return set(SafeEncoder.encode(key), SafeEncoder.encode(value));
}
/**
* 添加记录,如果记录已存在将覆盖原有的value
*
* @param String
* key
* @param String
* value
* @return 状态码
*/
public String set(String key, byte[] value) {
return set(SafeEncoder.encode(key), value);
}
/**
* 添加记录,如果记录已存在将覆盖原有的value
*
* @param byte[]
* key
* @param byte[]
* value
* @return 状态码
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于SSM的校园商铺平台系统实现源码+项目说明.7z 技术: 前端:前端UI库SUI Mobile/jQuery/Chrome UA 后端:SSM/图片开源工具 Thumbnailator / 验证码组件Kaptcha/ 平台:Web/微信测试号 数据库:MySQL 缓存:Redis 部署:阿里云 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java学习者。 也可作为课程设计、期末大作业。包含:项目源码、数据库脚本、项目说明等,该项目可以直接作为毕设使用。 也可以用来学习参考借鉴!
资源推荐
资源详情
资源评论
收起资源包目录
基于SSM的校园商铺平台系统实现源码+项目说明.7z (347个子文件)
ProductManagementController.class 10KB
ShopManagementController.class 9KB
WechatUtil.class 7KB
ProductServiceImpl.class 7KB
ImageUtil.class 6KB
LocalAuthController.class 6KB
ProductDaoTest.class 5KB
JedisUtil$Hash.class 5KB
ShopListController.class 5KB
ProductCategoryManagementController.class 5KB
JedisUtil$Lists.class 5KB
WechatLoginController.class 5KB
ShopServiceImpl.class 5KB
ShopDetailController.class 5KB
ShopCategoryServiceImpl.class 4KB
JedisUtil$Keys.class 4KB
JedisUtil$Strings.class 4KB
ShopServiceTest.class 4KB
HeadLineServiceImpl.class 4KB
JedisUtil$Sets.class 4KB
ShopDaoTest.class 4KB
ProductServiceTest.class 4KB
LocalAuthServiceImpl.class 4KB
AreaServiceImpl.class 4KB
Product.class 4KB
Shop.class 3KB
WechatAuthServiceImpl.class 3KB
ProductCategoryDaoTest.class 3KB
ProductCategoryServiceImpl.class 3KB
LocalAuthServiceTest.class 3KB
LocalAuthDaoTest.class 3KB
WechatUser.class 3KB
DESUtil.class 3KB
MainPageController.class 3KB
AreaController.class 3KB
WechatAuthExecution.class 3KB
LocalAuthExecution.class 2KB
ProductExecution.class 2KB
ShopExecution.class 2KB
ProductImgDaoTest.class 2KB
SignUtil.class 2KB
PersonInfo.class 2KB
ShopCategory.class 2KB
WechatController.class 2KB
HttpServletRequestUtil.class 2KB
WechatAuthServiceTest.class 2KB
HeadLine.class 2KB
ProductDetailController.class 2KB
ShopLoginInterceptor.class 2KB
JedisUtil.class 2KB
ShopStateEnum.class 2KB
WechatAuthDaoTest.class 2KB
ProductCategoryExecution.class 2KB
LocalAuthStateEnum.class 2KB
PersonInfoDaoTest.class 2KB
ProductStateEnum.class 2KB
Result.class 2KB
ProductCategoryStateEnum.class 2KB
UserAccessToken.class 2KB
WechatAuthStateEnum.class 2KB
LocalAuth.class 2KB
ProductImg.class 2KB
ShopPermissionInterceptor.class 2KB
ShopCategoryServiceTest.class 2KB
CacheServiceImpl.class 2KB
ProductCategory.class 2KB
MD5.class 1KB
ShopAdminController.class 1KB
Area.class 1KB
AreaServiceTest.class 1KB
HeadLineServiceTest.class 1KB
WechatAuth.class 1KB
PathUtil.class 1KB
EncryptPropertyPlaceholderConfigurer.class 1KB
JedisPoolWriper.class 1KB
FrontendController.class 1KB
CodeUtil.class 1KB
ShopCategoryDaoTest.class 1KB
HeadLineDaoTest.class 1007B
LocalController.class 987B
PersonInfoServiceImpl.class 951B
ImageHolder.class 908B
MyX509TrustManager.class 905B
AreaDaoTest.class 904B
ProductDao.class 790B
LocalAuthDao.class 736B
ProductService.class 721B
ProductCategoryService.class 676B
LocalAuthService.class 645B
ShopDao.class 624B
BaseTest.class 611B
ProductCategoryDao.class 586B
ProductCategoryOperationException.class 508B
ShopCategoryOperationException.class 499B
WechatAuthOperationException.class 493B
LocalAuthOperationException.class 490B
ShopService.class 490B
HeadLineOperationException.class 487B
ProductOperationException.class 484B
AreaOperationException.class 475B
共 347 条
- 1
- 2
- 3
- 4
资源评论
Make程序设计
- 粉丝: 6815
- 资源: 3575
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- VIVADO中UART IP核使用
- 【深度学习实际案例解析】深度学习实际案例解析
- 封装swagger组件,提供全新UI以及无状态登录接口调用解决方案
- 小龙坎支局2024年4月渠道积分核对数据.xlam
- onlyoffice搭建及与alist使用的view.html
- Quadcopter-UAV-attitude-estimation-linux常用命令大全demo
- Quadcopter-UAV-attitude-estimation-based-on-数据库课程设计
- pbdlib-python-master.zip
- 43904245495352013_base.apk
- 基于springboot+vue + redis的工作流审批系统
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功