草庐IT

event-driven-design

全部标签

design-patterns - 通过 redis 与推拉共享状态

我想通过Redis共享具有以下要求的状态:解耦:解耦发布者和订阅者单一所有权:每个状态都由一个发布者设置推送:一旦状态发生变化,必须立即通知相关订阅者拉取:订阅者初始化后应立即拉取相关状态如果在没有PULL的情况下需要PUSH,pub\sub将是最优的如果在没有PUSH的情况下需要PULL,一个简单的redis键和值就可以很好地工作支持所有需求的最佳设计模式是什么? 最佳答案 一个解决方案是同时使用pub\sub来发布(推送)状态更改,并使用散列来保持订阅者可以从中读取(拉取)的每种最新发布状态唯一的障碍是您需要按如下方式处理竞争条

javascript - socketstream 能否作用于服务器中的 ss.event.on

我正在使用Pub/Sub系统将消息发布到Redis服务器。我将Socketstream0.3与node.js一起使用来收听和处理这些消息。在客户端代码(app.js)中,我可以使用ss.event.on很好地处理这些消息:ss.event.on"portux",(object)->#HandlemessagesofthetypeSwitch3true(toswitch3on)orSwitch2falseifobject.typeis"Switch"sw=object.location#thecmdisnowinthequantityfieldcmd=object.quantityifo

database-design - 我应该检查还是只在 Redis 中设置记录?

当用户玩我的一个应用程序时,我会将他们的session保存到每日、每周、每月和所有时间表中。我想知道在插入之前查看用户是否已经在表中是否明智。假设它们不在表中,则无论只有写入什么,都需要以另一种方式进行读取和写入。 最佳答案 这基本上取决于您的要求。由于缺乏信息,我假设当您说每日、每周、每月和所有时间表时,您指的是TTL值。那么有两种情况如果用户最近一次访问必须延长key的过期时间因此,如果您需要覆盖这些key的TTL,则不需要读取(如果用户最近一次访问必须延长key的到期时间)后续访问不得更改TTL否则,如果session过期时间

events - 有没有办法使用像redis这样的持久性数据库来延迟特定时间?

我想在两个函数调用之间插入30分钟的延迟,例如:发送fcm/sms后30分钟后发送电子邮件。我正在尝试为此使用Redis,所以我使用节点模块名称bull,它允许我创建一个具有延迟的作业并将其推送到队列中。//发送短信给用户sms(null,{to:phone,content:{msg:"testmessage"},sender:"XYZ"});//在这里我必须添加30分钟的延迟//发送通知给用户fcm(null,{user_ids:userId,message:"restart!!!"});我不想使用setTimeout,因为如果我的应用重新启动,它就不会工作。

design-patterns - 使用Step Function同步Primay Data Source和Secondary Data Sources并根据数据更新触发Actions

我有一个充当数据层的应用程序,负责对数据库执行所有CRUD操作。由于可用性问题,我们在其上维护Redis缓存,最终将充当辅助数据源。频繁访问主要数据源会导致节流和延迟问题。某些操作也会根据发布到数据库的更新而触发。我试图将辅助数据源更新和基于这些更新触发的操作从数据访问层抽象到serverlessarchitecture.步进函数是否最适合上述用例?或者我应该考虑不同的架构?CurrentArchitecture 最佳答案 根据您提出的如下所示的架构,我认为步骤功能不是必需的。我会使用SNS将更新分散到多个SQS队列:队列#1触发一

java - 为什么 Redis 不在 __keyevent@*__ :expired topic events? 上调用我的 MessageListener

我最近将Spring-Boot升级到2.1.4.RELEASE并将Spring-Cloud升级到Greenwich.SR1。我的服务在Java11上运行。我对Redis的唯一依赖是通过spring-boot-starter-data-redis。虽然我通过设置notify-keyspace-eventsEx在Redis上进行了配置,但我似乎无法从中接收到任何key过期事件。这是我第一次打算出于超时目的接收此类事件。可能出了什么问题?请帮忙!这是我的Redis配置:@ConfigurationpublicclassRedisConfiguration{@Value("${spring.r

node.js - 错误 : [ioredis] Unhandled error event: Error: connect ETIMEDOUT

我在我的Node应用程序中遇到了redis连接超时问题。我试过这段代码,newRedis({connectTimeout:10000})但是没有用,它没有帮助我编写代码[ioredis]Unhandlederrorevent:Error:connectETIMEDOUTatSocket.(/code/node_modules/ioredis/lib/redis.js:291:21)atObject.onceWrapper(events.js:313:30)atemitNone(events.js:106:13)atSocket.emit(events.js:208:7)atSocket

database-design - Redis 是这个模型的正确选择吗

我有以下模型:|string(uniquekey)|about10otherstrings,thathaveallafixedlengthandmaybeempty|通常查询是使用“唯一键并查看其他字符串”。使用Redis应该没问题。但另一个查询是“显示n列为空的键”。我不确定Redis是否可以处理这种性能!? 最佳答案 要在Redis中解决这个问题,您需要维护一些元数据。一种解决方案是为每个“列”添加一个集合类型键,该键将保存该“列”为空白的所有元素的唯一键。显然,在您的应用程序逻辑中,您需要在主哈希中添加和删除值时从这些集合中添

database-design - 使用 Redis 的通知和新闻区

我有一个相册系统,人们可以上传照片并与其他用户互动。我使用mySql和Redis来处理流量和存储数据。在我的系统中,用户可以关注其他用户,如照片、评论和上传新照片。在这种情况下,我想在他们的墙上显示用户关注者的所有事件(如facebook时间线)。比如我关注用户30、40、50、60、70、80id。每当他们添加新照片时,我都希望在我的墙上看到它们。问题是这样的:用户30(他的ID)添加了3张新照片,我将此信息添加到photoevents:30:photoids->[55,56,57]。它在我的墙上是这样的:User30added3newphotos[55,56,57]然后用户40添加

asp.net - ASP .Net Core 在 JWTBearerOptions.Events OnTokenValidated 事件中访问 DistributedRedisCache

我有一个ASP.NetCoreAPI项目。在这个项目中,我使用JWTBearer身份验证。我还使用了.NetCore依赖注入(inject)的AddDistributedRedisCache功能。(都显示在下面)我们有时需要将token列入黑名单(管理员用户删除权限、注销等),以便这些token立即生效。本质上是强制用户在可以进行下一次调用之前重新登录。我们将JWTtoken添加到redis缓存中,并在注销时将它们从客户端缓存中删除。但是用户可以(理论上)存储JWTtoken,并且在token过期之前仍然可以访问,除非我们拦截调用并根据黑名单检查它。如何在下面的代码中访问“OnToke