package com.imooc.miaosha.redis;
import com.alibaba.fastjson.JSON;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* Created by Administrator on 2018/3/27.
*/
@Service
public class RedisService {
@Autowired
RedisConfig redisConfig;
@Autowired
JedisPool jedisPool;
/**
* 获取单个对象
* @param prefix
* @param key
* @param clazz
* @param <T>
* @return
*/
public <T> T get(KeyPrefix prefix,String key , Class<T> clazz){
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
String realKey =prefix.getPrefix()+key;
String str = jedis.get(realKey);
T t = stringToBean(str,clazz);
return t;
}finally {
returnToPool(jedis);
}
}
/**
* 设置对象
* @param prefix
* @param key
* @param value
* @param <T>
* @return
*/
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;
}
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是否存在
* @param prefix
* @param key
* @param <T>
* @return
*/
public <T> boolean exists(KeyPrefix prefix,String key ){
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
String realKey =prefix.getPrefix()+key;
return jedis.exists(realKey);
}finally {
returnToPool(jedis);
}
}
/**
* 增加key
* @param prefix
* @param key
* @param
* @param <T>
* @return
*/
public <T> Long incr(KeyPrefix prefix,String key ){
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
String realKey =prefix.getPrefix()+key;
return jedis.incr(realKey);
}finally {
returnToPool(jedis);
}
}
/**
* 减少key
* @param prefix
* @param key
* @param
* @param <T>
* @return
*/
public <T> Long decr(KeyPrefix prefix,String key){
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
String realKey =prefix.getPrefix()+key;
return jedis.decr(realKey);
}finally {
returnToPool(jedis);
}
}
/**
* 删除
* */
public boolean delete(KeyPrefix prefix, String key) {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
//生成真正的key
String realKey = prefix.getPrefix() + key;
long ret = jedis.del(realKey);
return ret > 0;
}finally {
returnToPool(jedis);
}
}
public static <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);
}
}
public static <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();
}
}
@Bean
public JedisPool jedisPoolFactory(){
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxIdle(redisConfig.getPoolMaxIdle());
poolConfig.setMaxTotal(redisConfig.getPoolMaxTotal());
poolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait()*1000);
//GenericObjectPoolConfig poolConfig, String host, int port, int timeout, String password
JedisPool jedisPool = new JedisPool(poolConfig,redisConfig.getHost(),redisConfig.getPort(),redisConfig.getTimeout()*1000);
return jedisPool;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
秒杀系统源码
共264个文件
xml:73个
class:55个
java:55个
1星 需积分: 20 110 下载量 23 浏览量
2018-04-02
09:18:20
上传
评论 4
收藏 946KB RAR 举报
温馨提示
秒杀系统源码,数据库mysql,缓存redis,中间件rabbitMQ,知识点包括分布式session,页面静态化,双加密存储,隐藏秒杀地址,接口限流等等
资源推荐
资源详情
资源评论
收起资源包目录
秒杀系统源码 (264个子文件)
MiaoshaController.class 8KB
GoodsController.class 7KB
MiaoshaService.class 7KB
RedisService.class 6KB
AccessInterceptor.class 5KB
UserUtil.class 4KB
MiaoshaUserService.class 4KB
MQConfig.class 4KB
UserArgumentResolver.class 3KB
MQReceiver.class 3KB
OrderService.class 3KB
OrderInfo.class 3KB
CodeMsg.class 3KB
OrderController.class 3KB
Result.class 2KB
GlobleExceptionHandler.class 2KB
LoginController.class 2KB
SimpleController.class 2KB
MiaoshaUser.class 2KB
RedisConfig.class 2KB
Goods.class 2KB
MD5Util.class 2KB
DBUtil.class 2KB
IsMobileValidator.class 2KB
MQSender.class 1KB
MiaoshaGoods.class 1KB
GoodsService.class 1KB
OrderDao.class 1KB
UserController.class 1KB
GoodsDetailVo.class 1KB
GoodsVo.class 1KB
LoginVo.class 1KB
MiaoshaOrder.class 1KB
WebConfig.class 1KB
GoodsDao.class 1KB
BasePrefix.class 1KB
ValidatorUtil.class 981B
UserContext.class 935B
IsMobile.class 935B
OrderDetailVo.class 902B
MiaoshaMessage.class 839B
MainApplication.class 754B
GlobalException.class 735B
User.class 730B
MiaoshaUserDao.class 669B
MiaoshaKey.class 659B
GoodsKey.class 653B
MiaoshaUserKey.class 642B
AppTest.class 597B
UUIDUtil.class 588B
UserKey.class 571B
AccessKey.class 551B
OrderKey.class 505B
AccessLimit.class 503B
KeyPrefix.class 196B
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.htm 7KB
goods_detail.htm 7KB
order_detail.htm 3KB
order_detail.htm 3KB
goods_detail.html 3KB
goods_detail.html 3KB
login.html 3KB
login.html 3KB
order_detail.html 3KB
order_detail.html 3KB
goods_list.html 2KB
goods_list.html 2KB
miaosha_fail.html 256B
miaosha_fail.html 256B
hello.html 240B
hello.html 240B
miaosha.iml 8KB
RedisService.java 5KB
MiaoshaController.java 5KB
GoodsController.java 5KB
MiaoshaService.java 5KB
UserUtil.java 3KB
AccessInterceptor.java 3KB
MiaoshaUserService.java 3KB
MQConfig.java 3KB
共 264 条
- 1
- 2
- 3
资源评论
- 五色水彩笔2019-08-05mooc上的项目
- springlovejava2019-05-23那个sql呢?
- JWJ2920653322018-05-23相信我,别下载,没什么用檬茶茶丶2018-07-31怎么没用,是你自己不会部署吧,这个是我自己跑过的,需要自己安装redis,rabbitMQ
檬茶茶丶
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功