[Redis实现根据时间取消订单业务Demo]

目录

前言:

示例代码:

代码描述:


前言:

    这个主要就是记录一下 一些小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方法取消该订单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是汤圆丫

怎么 给1分?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值