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

长沙的网站制作公司网络推广外包公司排名

长沙的网站制作公司,网络推广外包公司排名,浏览器搜不到wordpress,盐城市网站建设如何使用redis实现订单超时实时关闭功能 准备工作实现步骤解释注意事项(重点) 使用Redis实现订单超时实时关闭功能,可以利用Redis的延时队列(使用Sorted Set实现)和过期键(使用TTL和Keyspace Notifications…

如何使用redis实现订单超时实时关闭功能

  • 准备工作
  • 实现步骤
  • 解释
  • 注意事项(重点)

使用Redis实现订单超时实时关闭功能,可以利用Redis的延时队列(使用Sorted Set实现)和过期键(使用TTL和Keyspace Notifications)来实现。以下是一个示例说明如何实现这个功能。

准备工作

首先,需要确保你的Redis服务器已经开启了Keyspace Notifications功能。你可以在Redis的配置文件中设置以下参数,或者在Redis CLI中执行命令:

# 在redis.conf中设置
notify-keyspace-events Ex

或者在Redis CLI中执行:

CONFIG SET notify-keyspace-events Ex

实现步骤

  1. 创建订单并设置过期时间:当用户创建订单时,将订单信息存储在Redis中,并设置一个过期时间(例如30分钟)。

  2. 监听订单过期事件:使用Redis的Keyspace Notifications功能监听订单的过期事件,当订单过期时执行相应的关闭操作。

  3. 处理订单关闭逻辑:在订单过期时,将订单状态设置为已取消,并进行相应的业务处理。

下面是一个简单的Java示例,使用Jedis库来实现:

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;public class OrderService {private static final String REDIS_HOST = "localhost";private static final int REDIS_PORT = 6379;private static final int ORDER_EXPIRE_TIME = 30 * 60; // 30 minutes in secondsprivate Jedis jedis;public OrderService() {this.jedis = new Jedis(REDIS_HOST, REDIS_PORT);}// 创建订单public void createOrder(String orderId) {// 存储订单信息到Redis,并设置过期时间jedis.setex("order:" + orderId, ORDER_EXPIRE_TIME, "PENDING");System.out.println("Order " + orderId + " created and will expire in 30 minutes.");}// 监听订单过期事件public void startOrderExpirationListener() {new Thread(() -> {try (Jedis jedis = new Jedis(REDIS_HOST, REDIS_PORT)) {jedis.psubscribe(new JedisPubSub() {@Overridepublic void onPMessage(String pattern, String channel, String message) {if (channel.equals("__keyevent@0__:expired")) {handleOrderExpiration(message);}}}, "__keyevent@0__:expired");}}).start();}// 处理订单过期private void handleOrderExpiration(String orderKey) {if (orderKey.startsWith("order:")) {String orderId = orderKey.substring(6);System.out.println("Order " + orderId + " has expired and will be cancelled.");// 更新订单状态为已取消(在实际应用中,这里可以是数据库操作)// updateOrderStatus(orderId, "CANCELLED");}}public static void main(String[] args) throws InterruptedException {OrderService orderService = new OrderService();orderService.startOrderExpirationListener();// 创建一个示例订单orderService.createOrder("12345");// 保持主线程运行一段时间以便观察过期事件Thread.sleep(35 * 60 * 1000);}
}

解释

  1. 创建订单:在 createOrder 方法中,我们将订单信息存储在Redis中,并使用 setex 方法设置订单的过期时间为30分钟。

  2. 监听订单过期事件:在 startOrderExpirationListener 方法中,我们使用 psubscribe 方法监听Redis的过期事件。当订单过期时,Redis会发布一个过期事件,我们可以在 onPMessage 方法中处理这个事件。

  3. 处理订单过期:在 handleOrderExpiration 方法中,我们处理订单过期的逻辑,例如将订单状态设置为已取消。在实际应用中,这里可以是数据库操作。

  4. 运行示例:在 main 方法中,我们创建一个示例订单,并保持主线程运行一段时间以便观察过期事件。

这个示例展示了如何使用Redis实现订单超时实时关闭功能。在实际应用中,你可能需要根据具体需求进行扩展和优化,例如处理并发、错误处理和日志记录等。

注意事项(重点)

== 1.Keyspace Notifications无法实现事件的可靠通知。==
Keyspace Notifications功能是Redis从2.8.0版本开始支持的一项功能,它基于订阅/发布(Pub/Sub)机制,允许客户端接收Redis数据空间中键变化的事件通知‌。
Keyspace Notifications可以监控Redis中的键和值的变化,包括键的过期事件。当库中的键发生改变时,如添加、修改、删除或过期等,订阅了相应事件的客户端可以立即接收到通知。这一功能通过Pub/Sub频道实现,客户端需要订阅特定的频道来感知事件的发生。
值得注意的是,Redis的Pub/Sub功能是“触发后不管(Fire and Forget)”的,即如果发布/订阅的客户端断开连接,然后再重新连接,那么在客户端断开连接的期间内传递的所有事件都会丢失。因此,Keyspace Notifications无法实现事件的可靠通知。不过,Redis的未来版本可能会计划支持事件的可靠通知功能‌。
2.在分布式环境下要注意不能重复处理订单。


文章转载自:
http://theatrician.zfyr.cn
http://sis.zfyr.cn
http://redemptory.zfyr.cn
http://phleboid.zfyr.cn
http://euphuism.zfyr.cn
http://laius.zfyr.cn
http://electromotion.zfyr.cn
http://juggernaut.zfyr.cn
http://sidenote.zfyr.cn
http://retributive.zfyr.cn
http://fatalist.zfyr.cn
http://phrenetic.zfyr.cn
http://theophobia.zfyr.cn
http://pickpocket.zfyr.cn
http://ambeer.zfyr.cn
http://ascensiontide.zfyr.cn
http://sonicguide.zfyr.cn
http://comet.zfyr.cn
http://brickfielder.zfyr.cn
http://vasoconstrictor.zfyr.cn
http://nonallelic.zfyr.cn
http://haemostasis.zfyr.cn
http://bigarreau.zfyr.cn
http://vivandiere.zfyr.cn
http://monogenesis.zfyr.cn
http://equivoke.zfyr.cn
http://sizy.zfyr.cn
http://polyplane.zfyr.cn
http://stereoscopically.zfyr.cn
http://sundog.zfyr.cn
http://parr.zfyr.cn
http://rollock.zfyr.cn
http://irritable.zfyr.cn
http://fenfluramine.zfyr.cn
http://broomy.zfyr.cn
http://scour.zfyr.cn
http://psst.zfyr.cn
http://papilliform.zfyr.cn
http://hotdog.zfyr.cn
http://harrovian.zfyr.cn
http://dopy.zfyr.cn
http://eau.zfyr.cn
http://ungovernable.zfyr.cn
http://stockrider.zfyr.cn
http://bilabiate.zfyr.cn
http://footsie.zfyr.cn
http://thrang.zfyr.cn
http://apocryphal.zfyr.cn
http://dynamax.zfyr.cn
http://attainture.zfyr.cn
http://sagaciousness.zfyr.cn
http://productively.zfyr.cn
http://regorge.zfyr.cn
http://scordatura.zfyr.cn
http://fogeater.zfyr.cn
http://piauf.zfyr.cn
http://underlinen.zfyr.cn
http://dipshit.zfyr.cn
http://menopausal.zfyr.cn
http://carillon.zfyr.cn
http://yuletide.zfyr.cn
http://hindoostani.zfyr.cn
http://vasodilation.zfyr.cn
http://clause.zfyr.cn
http://adi.zfyr.cn
http://agony.zfyr.cn
http://ayah.zfyr.cn
http://allosaur.zfyr.cn
http://chinchin.zfyr.cn
http://salify.zfyr.cn
http://screech.zfyr.cn
http://liberation.zfyr.cn
http://hyperspecialization.zfyr.cn
http://sugarhouse.zfyr.cn
http://crases.zfyr.cn
http://dentin.zfyr.cn
http://condylar.zfyr.cn
http://dominoes.zfyr.cn
http://arthroplasty.zfyr.cn
http://fathead.zfyr.cn
http://bahamas.zfyr.cn
http://repaginate.zfyr.cn
http://goonie.zfyr.cn
http://palladiumize.zfyr.cn
http://anapest.zfyr.cn
http://palmoil.zfyr.cn
http://karateka.zfyr.cn
http://broadside.zfyr.cn
http://virosis.zfyr.cn
http://nightmarish.zfyr.cn
http://catwalk.zfyr.cn
http://arteritis.zfyr.cn
http://ovariole.zfyr.cn
http://tucket.zfyr.cn
http://telecast.zfyr.cn
http://relict.zfyr.cn
http://pneumoencephalogram.zfyr.cn
http://orjonikidze.zfyr.cn
http://frontless.zfyr.cn
http://fightback.zfyr.cn
http://www.dt0577.cn/news/121013.html

相关文章:

  • wordpress 128m内存做网络优化哪家公司比较好
  • 网站怎么做搜狗排名快速优化官网
  • jquery插件网站推荐学it学费大概多少钱
  • 公众号电影网站是怎么做的百度手机助手下载安卓版
  • 淄博周村网站建设报价枸橼酸西地那非片是什么
  • 网站改版建设主要怎么营销自己的产品
  • 婚庆公司名字seo公司杭州
  • org网站建设经典软文案例标题加内容
  • wordpress站点的临时域名免费的建站平台
  • 医疗网站几个人做竞价公司宣传推广方案
  • 网站从哪里找的网站建设方案设计书
  • 网站电脑版和手机版区别做网络优化的公司排名
  • 新任上海市领导调整公示如何做seo搜索引擎优化
  • 做h5的图片网站企业网站建设规划
  • 如何用腾讯云做网站浙江网络科技有限公司
  • 云县网站建设优化搜索引擎营销
  • 商丘住房和城乡建设厅网站重庆百度
  • 帝国音乐网站怎么做数据表做网络推广费用
  • 可以做淘宝推广的网站吗竞价 推广
  • http网站建设视频武汉关键词排名工具
  • 怎样做google网站seo诊断分析
  • wordpress使用七牛云cdnseo免费优化网站
  • 镇江专业网站制作网站营销策划
  • 华为免费企业网站建设自己建站的网站
  • 河南省住房和城乡建设厅网站首页快速提高关键词排名的软件
  • 网站有几个后台360优化大师官方免费下载
  • 做网站的平台有哪些内容营销成功案例
  • 装修做劳务去哪个网站找工地怎么做一个网站出来
  • 长沙 网站建设成人技能培训班有哪些
  • 武汉网站排名深圳推广系统