- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这是我这周正在处理的问题,但我有点碰壁了。
假设我有 100 个资源可用于完成一些快速任务。
我想为客户做的,尽可能快:
但是因为我的客户端不是很安全并且有时会在它运行的代码中间失败我真的想在我将资源标记为已占用时设置过期时间这样资源就不能永远处于占用状态。
这听起来像是一个非常普遍的问题,我敢肯定有很多关于如何使用 Redis 修复它的文献,但我找不到任何文献。
我发现了很多“维护全局排行榜”这类问题的模式和示例,但这些示例中没有一个涉及 key 过期。
我目前有这样的解决方案:
for ressource in ressources:
if GET <ressource> == 0:
SET <ressource> 1, EX=10
use_ressource(<ressource>)
SET <ressource> 0, EX=10
else:
continue
问题是,一旦我使用了大量资源,这可能需要大量操作才能找到第一个空闲资源,尽管 Redis 非常快,但此代码段无法很好地扩展。
最佳答案
在我的脑海中:
expired
事件通知上当需要资源时,随机选择一个带有SRANDMEMBER
的资源并将其移动到使用 SMOVE
设置的正在使用的资源中.在同一个事务中,设置一个简单的过期键,带有良好的前缀、资源的名称/类型和所需的 TTL SETEX
.
设置一个 redis keyspace 通知消费者(仍然是新的,但查看他们的最新技术 Redis Gears 以获得 super 简化的版本!)监听您分配的前缀的 expired
事件。当这些事件之一发生时,运行上面相同的 SMOVE
逻辑,但只是将资源移回空闲资源集中。
关于实际资源本身,当它们完成时,让它们自行过期它们的跟踪 key ,通知消费者可以处理状态刷新:)
这应该可以为您提供所需的灵 active !
这里有类似的问题,一些答案可能有用:How to "EXPIRE" the "HSET" child key in redis?
关于python - Redis模式: how would you cache free/occupied ressource with expiration?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57074519/
我正在构建一个小型音乐播放器。像任何其他播放器一样,即使应用程序没有焦点,您也可以使用键盘媒体键(上一曲、下一曲、播放、暂停)来控制它。 但是,当我注册这些快捷方式以便 Electron 可以监听它们
final Dialog dialog = new Dialog(this, R.style.theme_dialog); dialog.requestWindowFeature(Window.FE
本文整理了Java中com.ohmdb.abstracts.Zones.occupy()方法的一些代码示例,展示了Zones.occupy()的具体用法。这些代码示例主要来源于Github/Stack
本文整理了Java中com.ohmdb.filestore.ZonesImpl.occupied()方法的一些代码示例,展示了ZonesImpl.occupied()的具体用法。这些代码示例主要来源于
我在 UIViewController 中制作了自定义相机,但无法在 iPhoneX 上的整个屏幕上预览相机输出。相机 View 和屏幕边缘之间似乎有很大的填充。我的视野似乎确实是从安全区域插入的。请
似乎当模态框在屏幕中居中时,它占用的 height 比需要的多:Plunker 如何解决? 最佳答案 实际上这不是问题。这在移动设备上看起来很正常,但在桌面上查看时会产生问题。 但是,如果您仍想解决此
我在 div 上使用 :after 来添加叠加背景(在我的例子中,我不能将它作为第二个添加到原始 div) 我试图强制它占据其“前任”div 的整个宽度和高度,尝试将宽度和高度设置为 100% 以及继
我正在使用适用于 Android 的 Google AdMob 广告 SDK 4.0.4 默认情况下,在加载广告之前,AdView 没有尺寸。如果您在广告上方或下方有按钮,这可能会导致问题。 如果广告
当我们做类似的事情时: nKeyLength == 0) && (p->h == h)) { if (flag & HASH_NEXT_INSERT || flag & HASH_ADD) {
我创建了这个例子:jsFiddle
我尝试通过 Netbeans IDE 启动 glassfish 服务器,但显示此错误: Could not start GlassFish Server: Administrator port is
在Java中我们写了一段代码: A a1; a1 = new A(); 编译器编译代码时预留了多少字节的内存: A a1; 最佳答案 这不是 Java 标准指定的,因此您不必担心。 从技术上讲,引用通
这是我这周正在处理的问题,但我有点碰壁了。 假设我有 100 个资源可用于完成一些快速任务。 我想为客户做的,尽可能快: 获取第一个可用资源 将其标记为已占用 使用它 将其标记为免费。对于这种东西,我
我写了一个小程序来查看 char 在我的内存中占用了多少字节,结果显示 char 实际上在内存中占用了 4 个字节。我知道这主要是因为字对齐并且没有看到 char 只有 1 个字节的优势。 char
我的目标是在 rust book 第 13.1 章的缓存结构上实现建议的改进,即创建一个结构,该结构接受一个函数并使用内存来减少给定函数的调用次数。为此,我创建了一个带有 HashMap 的结构 st
我正在准备一个 fiddle 来问另一个问题,但在制作 fiddle 时无意中遇到了另一个问题。 这是 fiddle 的链接. HTML代码:
我一直在寻找使复选框看起来像按钮的方法,我偶然发现了这个 question我做了,但我加了一个填充, .ck-button { padding: 5px 5px 0px 5px; } 这里是 js
我有一个 flex 显示和宽度设置为 100% 的父容器,它的子元素(子容器)设置为占用最大宽度 25%。 子容器上的按钮分配有最小宽度和最大宽度,如下所示。按钮往往不会占据 100% 的子容器,即使
最近开始,基本上每次我尝试获取或提交它都会给我这个奇怪的错误。它会不断尝试“重新获取/重新提交”,直到我放弃并 CtrlC。 C:\cygwin\home\git\new_trunk>git sf
我想使用 WorkManager 处理图像。向工作经理发送字节数组时出错。 java.lang.IllegalStateException: 序列化时数据占用不能超过10240字节 下面是我的代码:
我是一名优秀的程序员,十分优秀!