package com.young;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.exceptions.JedisDataException;
public class Service {
private String id;
private int num;
public Service(String id, int num) {
this.id = id;
this.num = num;
}
//控制单元
public void service() {
Jedis jedis = new Jedis("127.0.0.1", 6379);
String value = jedis.get("compid:" + id);
//判断该值是否存在
try {
if (value == null) {
//不存在,创建该值
jedis.setex("compid:" + id, 5, Long.MAX_VALUE - num + "");
} else {
//存在,自增,调用业务
Long val = jedis.incr("compid:" + id);
business(id, num - (Long.MAX_VALUE - val));
}
} catch (JedisDataException e) {
System.out.println("使用已经到达次数上限,清升级会员级别");
return;
} finally {
jedis.close();
}
}
//业务操作
public void business(String id, Long val) {
System.out.println("用户:" + id + "业务操作执行第" + val + "次");
}
}
class MyThread extends Thread {
Service sc;
public MyThread(String id, int num) {
sc = new Service(id, num);
}
@Override
public void run() {
while (true) {
sc.service();
try {
Thread.sleep(300L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Main {
public static void main(String[] args) {
MyThread mt1 = new MyThread("初级用户", 10);
mt1.start();
MyThread mt2 = new MyThread("高级用户", 30);
mt2.start();
}
}
Redis-jedis-程序代码实现
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 最近工作中有这么一种需求,需要定时将三种任务(假设任务为:A、B、C)分配到10台Windows Server中执...
- 上篇文章讲了在实际项目里的哪些业务场景用到Redis发布订阅,这篇文章就讲一下,在Java中如何实现的。 图解代码...