当前位置: 首页 > wzjs >正文

网站开发发送短信夫唯seo怎么样

网站开发发送短信,夫唯seo怎么样,建设淘宝网站的人员组织结构,东营网站开发公司利用redis实现订单倒计结束后更改订单状态为已失效 利用Redis实现订单倒计时并自动失效订单的功能,可以通过Redis的过期键通知(Key Expiration Notification)和定时任务补偿机制实现 实现步骤 配置Redis启用过期事件 修改Redis配置文件 redi…

利用redis实现订单倒计结束后更改订单状态为已失效
利用Redis实现订单倒计时并自动失效订单的功能,可以通过Redis的过期键通知(Key Expiration Notification)和定时任务补偿机制实现
实现步骤

  1. 配置Redis启用过期事件
    修改Redis配置文件 redis.conf,开启键过期事件通知:

启用过期事件通知

notify-keyspace-events Ex

并且启用Redis的持久化
save 900 1
save 300 10
save 60 10000

重启Redis服务使配置生效。

  1. Java监听Redis过期事件
    使用Spring Data Redis或Jedis监听键过期事件。
    示例代码(Spring Data Redis):
package com.transport.framework.config;import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;/*** redis配置* * @author transport*/
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {@Beanpublic RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory connectionFactory,OrderExpirationListener orderExpirationListener) {RedisMessageListenerContainer container = new RedisMessageListenerContainer();container.setConnectionFactory(connectionFactory);// 订阅所有数据库的过期事件(0表示数据库编号)container.addMessageListener(orderExpirationListener, new PatternTopic("__keyevent@0__:expired"));return container;}
}自定义监听器处理订单过期:
package com.transport.framework.config;import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.stereotype.Component;@Component
public class OrderExpirationListener implements MessageListener {@Overridepublic void onMessage(Message message, byte[] pattern) {String expiredKey = message.toString();// 解析订单ID(假设key格式为order:订单ID)if (expiredKey.startsWith("order:")) {String orderNo = expiredKey.split(":")[1];// 调用订单服务更新订单状态为失效System.out.println("已失效的订单编号为:"+orderNo);}}
}
订单服务更新状态:
代码省略(注意:只有未支付的订单才更新状态)
3. 订单创建时设置Redis过期键
在订单创建时,向Redis插入键并设置过期时间(例如30分钟倒计时):
// 设置Redis过期键:order:订单ID,30分钟后过期
String redisKey = "order:" + order.getId();
redisTemplate.opsForValue().set(redisKey, "1", Duration.ofMinutes(30));
4. 兜底方案:定时任务补偿
为防止Redis事件丢失,增加定时任务扫描数据库中未过期的订单:
@Scheduled(cron = "0 */5 * * * ?") // 每5分钟执行一次
public void checkExpiredOrders() {// 查询数据库中状态为“待支付”且创建时间超过30分钟的订单List<Order> expiredOrders = orderRepository.findExpiredOrders(OrderStatus.PENDING, LocalDateTime.now().minusMinutes(30));for (Order order : expiredOrders) {markOrderAsExpired(order.getId());// 可选:删除Redis中的键(避免重复处理)redisTemplate.delete("order:" + order.getId());}
}
http://www.dtcms.com/wzjs/456087.html

相关文章:

  • 微网站技术seo排名专业公司
  • 网站的空间与域名北京优化seo
  • 西安响应式网站建设哪家强网站后端开发
  • 注册网站的流程朋友圈广告怎么投放
  • 尤溪建设局网站怎么在网上做广告宣传
  • 免费的网址域名seo全网营销
  • 做网站标题图片大小百度搜索的优势
  • 学产品设计专业后悔了广州网站制作实力乐云seo
  • 在linux系统上用什么做网站怎么办网站平台
  • 网络工程师中级职称考试内容网站seo最新优化方法
  • 做虾苗网站有哪些流程新闻20条摘抄大全
  • 兴义市住房和城乡建设网站月销售宣传网站有哪些
  • saas建站平台源码杭州优化seo公司
  • 综合型网站建设北京建站
  • 企业邮箱给我一个深圳专门做seo的公司
  • 群晖 做网站 Java百度视频下载
  • 平邑做网站推广公司简介
  • 做游戏代练的网站星链友店
  • 做网站首页图的规格品牌营销策略
  • 成都高端网站制作安卓优化软件
  • 设计网站如何融入非关系数据库住房和城乡建设部
  • 单页网站开发费用什么叫软文推广
  • asp企业网站源码下载惠州网站排名提升
  • 怎么做网站评论怎么找到当地的微信推广
  • 西安哪家网络公司做网站网站推广平台有哪些
  • 瑞安自适应网站建设网站建设公司简介
  • 专门做男装的网站网络营销策划方案怎么做
  • 福田欧曼服务站刚刚中国出啥大事了
  • 自己做视频网站用cdn那个便宜百度移动端关键词优化
  • 做个网站要多少钱莆田seo