spring-data-redis-2(实现并发操作:秒杀)
来源:互联网 发布:美萌家cos淘宝店铺 编辑:程序博客网 时间:2024/06/03 17:32
package com.linyi.sell.service.impl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.stereotype.Component;import org.springframework.util.StringUtils;@Componentpublic class RedisLock { @Autowired private StringRedisTemplate srt; /** * 加锁 ,应用中当调用当前方法返回if(!lock)时建议抛出异常 * @param key key * @param expectedTime 期望时间值 = 当前系统毫秒值 + 业务容忍超时时间 * @return 加锁是否成功 */ public boolean lock(String key,String expectedTime){ /* setIfAbsent方法参考:http://redis.cn/commands/hsetnx.html * 个人理解: 当key不存在时添加redis列值为value并返回true,如果存在则直接返回false * */ //当不存在key的一列时候设置value并返回true if (srt.opsForValue().setIfAbsent(key,expectedTime)) { return true; } //判断是否超时 String oldTime = srt.opsForValue().get(key); long currentTimeMillis = System.currentTimeMillis(); if (!StringUtils.isEmpty(oldTime)&¤tTimeMillis>Long.parseLong(oldTime)){ String oldValue = srt.opsForValue().getAndSet(key, expectedTime); //利用redis是单线程的特性 if (!StringUtils.isEmpty(oldValue)&&oldValue.equals(oldTime)){ return true; } } return false; } /** * 解锁 删除指定key的redis列 * @param key key */ public void unlock(String key,String expectedTime){ String value = srt.opsForValue().get(key); if (!StringUtils.isEmpty(value)&&value.equals(expectedTime)){ srt.opsForValue().getOperations().delete(key); } }}
阅读全文
0 0
- spring-data-redis-2(实现并发操作:秒杀)
- 高并发redis实现秒杀商品
- spring-data-redis 操作
- spring data redis 操作redis
- spring data redis 操作redis
- PHP结合redis实现秒杀活动大并发
- redis实现商城中的秒杀并发问题思路
- Redis实现高并发下的抢购、秒杀功能
- Redis实现高并发下的抢购、秒杀功能
- redis实现高并发下的抢购/秒杀功能
- Redis实现高并发下的抢购,秒杀,解决方案
- RabbitMQ+Redis集群+Quartz实现简单高并发秒杀
- spring-data-redis简单操作
- Spring Data Redis简单操作
- spring-data-redis相关操作
- Spring data redis 操作list
- 基于Spring+SpringMVC+MyBatis实现高并发秒杀APIM
- 使用spring-data-redis操作redis
- [RK3399][Android7.1] Ubuntu编译环境内存要求
- JAVA基础-类2-类的特性
- 近日,百度《互联网从业人员单身情况调查报告》新鲜出炉,调查人群是日前火了一把的西二旗互联网从业者(转载)
- InstanceOf
- Linux服务器下重启svn服务
- spring-data-redis-2(实现并发操作:秒杀)
- 关系型数据库ACID规则
- 可输入可选择的下拉框(input select)并且输入框获得下拉的内容
- 自顶向下,逐步求精
- 关于提升PHP编程效率的54个技巧
- SharePoint 2013 远程服务器返回错误: (400) 错误的请求。 不支持查询字符串中的 api-version
- 面试--北京闪银奇异
- css设置表格自动换行;table换行无效
- 【tensorflow 学习】 gpu使用