Redies应用计数
来源:互联网 发布:姚明生涯数据 编辑:程序博客网 时间:2024/05/23 20:55
情景:一个活动,双11给成功购物的前11111名旅客发放优惠券。
Redies里存放一个List -> 1111个数据;
生成购物订单时
Long sum = jedis.llen("activity");
若List中有数据sum>0,则String card_code = jedis.rpop("activity");
代码如下:
public Map<String, String> checkStock() {Map<String,String> resMap=new HashMap<String, String>();Jedis jedis=null;try {jedis = RedisUtil.getJedis();Long sum = jedis.llen("activity");if (sum>0) {String card_code = jedis.rpop("activity");resMap.put("code", "00000000");resMap.put("card_code", card_code);}else {resMap.put("code", "00000001");}} catch (Exception e) {logger.info("查询优惠券是否有库存时报错");resMap.put("code", "00000001");}finally{if (jedis!=null) {RedisUtil.release(jedis);}return resMap;}}
取消订单时优惠券秒杀活动号放回缓存
jedis.lpush("activity", card_code);
代码如下:
public void pushToRedis(String card_code) {Jedis jedis = RedisUtil.getJedis();try {jedis.lpush("activity", card_code);logger.info("将优惠券:"+card_code+"push回redis成功");RedisUtil.release(jedis);} catch (Exception e) {logger.info("将优惠券:"+card_code+"push回redis失败");RedisUtil.release(jedis);}}
Util代码:
import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;public final class RedisUtil { //Redis服务器IPprivate static String ADDR = "127.0.0.1"; //Redis的端口号private static int PORT = 6379; //访问密码private static String AUTH = "123456"; //可用连接实例的最大数目,默认值为8; //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。private static int MAX_ACTIVE = 1024; //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。private static int MAX_IDLE = 200; //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException; //Redis.MAX_WAIT=10000 //Redis.TIMEOUT=10000private static int MAX_WAIT = 10000;private static int TIMEOUT = 10000; //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的; private static boolean TEST_ON_BORROW = true; private static JedisPool jedisPool = null; /** * 初始化Redis连接池 */ static { try { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxActive(MAX_ACTIVE); config.setMaxIdle(MAX_IDLE); config.setMaxWait(MAX_WAIT); config.setTestOnBorrow(TEST_ON_BORROW); jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH); } catch (Exception e) { e.printStackTrace(); } } /** * 获取Jedis实例 * @return */ public synchronized static Jedis getJedis() { try { if (jedisPool != null) { Jedis resource = jedisPool.getResource(); return resource; } else { return null; } } catch (Exception e) { e.printStackTrace(); return null; } } /** * 释放jedis资源 * @param jedis */ public static void release(final Jedis jedis) { if (jedis != null) { jedisPool.returnResource(jedis); } } public static void main(String[] args){ Jedis jedis = RedisUtil.getJedis(); System.out.println(jedis.getDB()); jedis.set("ceshi","dafdsf"); String value = jedis.get("ceshi"); System.out.print(value); RedisUtil.release (jedis); }}
希望对你有帮助,祝你有一个好心情,加油!
若有错误、不全、可优化的点,欢迎纠正与补充!
阅读全文
0 0
- Redies应用计数
- redies
- Redies tutorial
- 计数原理与应用
- redies和memcache区别
- java操作Redies
- win linux redies 安装
- ubnutu14.04 redies 集群
- redies and memcache
- redies和memcache区别
- 面试题:应用计数原理
- MapReduce之计数类应用
- redies查key的信息
- Memcached与redies的区别
- java简单的连接redies
- java和redies的用法
- Trakr:自制力差人的计数应用
- 引用计数的应用场景举例
- gulp例子
- 口琴学习第一天
- SQL Server索引语法
- iOS中webview加载pdf文件出现黑屏的问题
- response.setContentType()的作用参数详解
- Redies应用计数
- BDP数据可视化
- Eclipse几个又基本又灰常好用的快捷键~~~提高工作效率
- RDD 数据操作主要有两个动作
- HTML5支持所有浏览器的SHIV解决方案
- C# volatile ,lock解析
- 11月总结
- 请求网络api
- WSDL 详解