目录
前言:
这个主要就是记录一下 一些小demo笔记,具体复杂业务还是要做更多业务处理
示例代码:
import redis.clients.jedis.Jedis;
import java.util.Set;
public class RedisOrder {
private Jedis jedis = null;
public RedisOrder() {
jedis = new Jedis("localhost", 6379);
}
public void createOrder(String orderId, int timeout) {
jedis.setex("order:" + orderId, timeout, "created");
}
public boolean isOrderCreated(String orderId) {
return jedis.exists("order:" + orderId);
}
public void cancelOrder(String orderId) {
jedis.del("order:" + orderId);
}
public String getOrder(String orderId) {
return jedis.get("order:" + orderId);
}
public void checkOrders() {
Set<String> orderIds = jedis.keys("order:*");
for (String orderId : orderIds) {
if (jedis.ttl(orderId) < 0) {
cancelOrder(orderId.substring(6));
}
}
}
}
代码描述:
其实也可以使用定时任务来实现订单这块的业务取消, 这个就主要根据业务场景来了, 比如需要批量取消业务, 那么对应数据只要有特定的标识, 就可以去定时 在夜晚的时候 固定时间段去批量取消, 这样也会减轻服务器的压力
- 示例中,我们使用了Jedis客户端库来连接Redis数据库。我们创建了一个RedisOrder类,并定义了四个方法:createOrder、isOrderCreated、cancelOrder和checkOrders。
- createOrder方法用于创建一个订单。我们使用setex命令将订单ID和"created"字符串存储到名为"order:ORDER_ID"的键中,并设置过期时间为timeout秒。
- isOrderCreated方法用于判断一个订单是否已经创建。我们使用exists命令判断"order:ORDER_ID"键是否存在。
- cancelOrder方法用于取消一个订单。我们使用del命令删除"order:ORDER_ID"键。
- getOrder方法,用于获取订单数据。我们使用get命令获取名为"order:ORDER_ID"的键的值,并返回该值。
- checkOrders方法用于检查所有订单的过期时间,并取消已经过期的订单。我们使用keys命令获取所有以"order:"开头的键,然后遍历这些键,如果某个键的过期时间小于0,则说明该订单已经过期,我们调用cancelOrder方法取消该订单。