package cn.tedu.miaosha.redis;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
@Service
public class RedisService {
@Autowired
JedisPool jedisPool;
/**
* 获取当个对象
* */
public <T> T get(KeyPrefix prefix, String key, Class<T> clazz) {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
//生成真正的key
String realKey = prefix.getPrefix() + key;
String str = jedis.get(realKey);
T t = stringToBean(str, clazz);
return t;
}finally {
returnToPool(jedis);
}
}
/**
* 设置对象
* */
public <T> boolean set(KeyPrefix prefix, String key, T value) {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
String str = beanToString(value);
if(str == null || str.length() <= 0) {
return false;
}
//生成真正的key
String realKey = prefix.getPrefix() + key;
int seconds = prefix.expireSeconds();
if(seconds <= 0) {
jedis.set(realKey, str);
}else {
jedis.setex(realKey, seconds, str);
}
return true;
}finally {
returnToPool(jedis);
}
}
/**
* 判断key是否存在
* */
public <T> boolean exists(KeyPrefix prefix, String key) {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
//生成真正的key
String realKey = prefix.getPrefix() + key;
return jedis.exists(realKey);
}finally {
returnToPool(jedis);
}
}
/**
* 增加值
* */
public <T> Long incr(KeyPrefix prefix, String key) {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
//生成真正的key
String realKey = prefix.getPrefix() + key;
return jedis.incr(realKey);
}finally {
returnToPool(jedis);
}
}
/**
* 减少值
* */
public <T> Long decr(KeyPrefix prefix, String key) {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
//生成真正的key
String realKey = prefix.getPrefix() + key;
return jedis.decr(realKey);
}finally {
returnToPool(jedis);
}
}
private <T> String beanToString(T value) {
if(value == null) {
return null;
}
Class<?> clazz = value.getClass();
if(clazz == int.class || clazz == Integer.class) {
return ""+value;
}else if(clazz == String.class) {
return (String)value;
}else if(clazz == long.class || clazz == Long.class) {
return ""+value;
}else {
return JSON.toJSONString(value);
}
}
@SuppressWarnings("unchecked")
private <T> T stringToBean(String str, Class<T> clazz) {
if(str == null || str.length() <= 0 || clazz == null) {
return null;
}
if(clazz == int.class || clazz == Integer.class) {
return (T)Integer.valueOf(str);
}else if(clazz == String.class) {
return (T)str;
}else if(clazz == long.class || clazz == Long.class) {
return (T)Long.valueOf(str);
}else {
return JSON.toJavaObject(JSON.parseObject(str), clazz);
}
}
private void returnToPool(Jedis jedis) {
if(jedis != null) {
jedis.close();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于spring Boot的Java秒杀系统
共215个文件
class:42个
java:41个
png:24个
1星 需积分: 38 25 下载量 167 浏览量
2018-05-31
23:15:23
上传
评论 3
收藏 21.93MB ZIP 举报
温馨提示
本项目主要实现的是一个电商秒杀系统。 主要通过navicat,eclipse和redis工具来实现。 Navicat管理数据库实现系统中的数据操作,相关表数据在项目的sql文件夹中。 Spring Boot环境搭建,集成Thymeleaf,Result结果封装,集成Mybatis+Druid,集成Jedis+Redis安装+通用缓存Key封装。 redis实现一个高性能的key-value数据库。
资源推荐
资源详情
资源评论
收起资源包目录
基于spring Boot的Java秒杀系统 (215个子文件)
order_info.sql.bak 4KB
miaosha_order.sql.bak 2KB
application.properties.bak 2KB
miaosha_user.sql.bak 1KB
user.sql.bak 807B
RedisService.class 5KB
MiaoshaUserService.class 3KB
UserArgumentResolver.class 3KB
DemoController.class 3KB
MiaoshaController.class 3KB
OrderInfo.class 3KB
GoodsController.class 3KB
CodeMsg.class 2KB
OrderService.class 2KB
GlobalExceptionHandler.class 2KB
LoginController.class 2KB
MiaoshaUser.class 2KB
RedisConfig.class 2KB
Goods.class 2KB
Result.class 2KB
MD5Util.class 2KB
IsMobileValidator.class 2KB
RedisPoolFactory.class 1KB
MiaoshaGoods.class 1KB
GoodsService.class 1KB
GoodsVo.class 1KB
OrderDao.class 1KB
LoginVo.class 1KB
MiaoshaService.class 1KB
BasePrefix.class 1KB
AppTest.class 1KB
MiaoshaOrder.class 1KB
UserService.class 1KB
WebConfig.class 1KB
GoodsDao.class 1KB
ValidatorUtil.class 985B
IsMobile.class 931B
MainApplication.class 750B
User.class 726B
GlobalException.class 723B
UserDao.class 614B
UUIDUtil.class 592B
MiaoshaUserKey.class 591B
UserKey.class 542B
MiaoshaUserDao.class 485B
OrderKey.class 404B
KeyPrefix.class 194B
.classpath 1KB
bootstrap.css 143KB
bootstrap.css 143KB
bootstrap.min.css 118KB
bootstrap.min.css 118KB
bootstrap-theme.css 26KB
bootstrap-theme.css 26KB
bootstrap-theme.min.css 23KB
bootstrap-theme.min.css 23KB
layer.css 14KB
layer.css 14KB
layer.css 5KB
layer.css 5KB
glyphicons-halflings-regular.eot 20KB
glyphicons-halflings-regular.eot 20KB
loading-0.gif 6KB
loading-0.gif 6KB
loading-2.gif 2KB
loading-2.gif 2KB
loading-1.gif 701B
loading-1.gif 701B
goods_detail.html 4KB
goods_detail.html 4KB
login.html 3KB
login.html 3KB
order_detail.html 3KB
order_detail.html 3KB
goods_list.html 2KB
goods_list.html 2KB
success.html 256B
miaosha_fail.html 256B
success.html 256B
miaosha_fail.html 256B
hello.html 240B
hello.html 240B
RedisService.java 3KB
MiaoshaUserService.java 2KB
DemoController.java 2KB
GoodsController.java 2KB
MiaoshaController.java 2KB
UserArgumentResolver.java 2KB
OrderInfo.java 2KB
CodeMsg.java 2KB
OrderService.java 1KB
RedisConfig.java 1KB
MiaoshaUser.java 1KB
MD5Util.java 1KB
LoginController.java 1KB
Goods.java 1KB
OrderDao.java 1KB
GlobalExceptionHandler.java 1KB
Result.java 1KB
IsMobile.java 969B
共 215 条
- 1
- 2
- 3
资源评论
- 猿意马2019-06-13什么说明都抹油
@Within
- 粉丝: 859
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功