当前位置: 首页 > 知识库问答 >
问题:

航空尖峰记录UDF是原子的吗?

穆展鹏
2023-03-14

Aerospike 记录 UDF 是原子的吗?

function increment_and_expire(rec, incValue, expireThreshold, currentTime)
      if aerospike:exists(rec) then
          local timesUsed = rec['timesUsed']
          if timesUsed == expireThreshold or rec['validUpto'] < currentTime then
            rec['expired'] = true
        else
            rec['timesUsed'] = timesUsed + incValue
        end
        aerospike:update(rec)
        return 1
    else
        warn("record doesn't exists")
        return -1
    end
end

上述Lua函数增加令牌的使用量,如果令牌不再有效,则将其标记为已过期。现在我的疑问是,如果并发请求来自同一记录并且此函数正在并发执行,这会导致任何问题吗?

共有1个答案

邹坚壁
2023-03-14

你问的是隔离,而不是真正的原子性。Aerospike 以序列化的方式执行每个密钥的所有事务。即,一个写入事务可以在任何给定时间点对密钥处于活动状态。其他人都必须等待。执行顺序不一定是 FIFO,而是序列化的。udf 也是如此。

 类似资料:
  • 问题内容: 我的数据库表中具有以下格式的数据: 该列将来自该列的数据作为父记录。带有值的表示根项目。我需要编写查询以按以下顺序获取数据: 我需要得到根记录(与记录为0),然后是所有和这根记录,然后获得下根的记录,然后和在这个根记录等等。 问题答案: 我在这里提出的解决方案使用了物化路径的概念。以下是使用样本数据的实例化路径的示例。我希望它可以帮助您理解物化路径的概念: 每个节点都有一个实例化路径,

  • 我正在分析一个在200Hz采样6-8秒的信号,重要的部分是尖峰,最大持续1秒。比如地震... 我必须将信号的采样率降低2倍。我试过: 我得到了相同的结果与这两个函数:信号被重新采样,但尖峰,积极和消极的,是减少。 我搞错了函数,或者我必须通过一个定制的FIR滤波器?

  • 问题内容: 一个活动有很多参与者。参与者的字段为“状态”。 我需要找到除以下事件以外的所有事件:每个参与者的状态都为“出席”的事件。 我可以找到带有以下AR代码的某些参与者处于“呈现”状态的所有事件: 这样就创建了SQL: 这 几乎 可行。问题是,如果参与者的某行(在范围内 )的状态为“离开”,则该事件仍将被获取,因为至少某些同级记录的状态与其他状态相同而不是“现在”。 我需要确保我正在过滤所有事

  • 问题内容: 我无法通过实验进行检查,也无法从手册页中收集到它。 说我有两个过程,一个是将文件1从目录1移动(重命名)到目录2。假设正在运行的另一个进程同时将directory1和directory2的内容复制到另一个位置。复制是否可能以这种方式发生,即目录1和目录2都将显示文件1-即,目录1在移动之前被复制,目录2在移动之后被第一个进程复制。 基本上,rename()是原子系统调用吗? 谢谢 问题

  • MySQL 提供了 DELETE 和 TRUNCATE 关键字来删除表中的数据。本节主要讲解 TRUNCATE 关键字的使用。 TRUNCATE 关键字用于完全清空一个表。其语法格式如下: TRUNCATE [TABLE] 表名 其中,TABLE 关键字可省略。 例 1 新建表 tb_student_course,插入数据并查询,SQL 语句和运行结果如下: 使用 TRUNCATE 语句清空 tb

  • 问题内容: 我正在尝试执行具有 表…数据类型的值的记录 ....没有 ....没有 ....没有 ....没有 ....没有 ....没有 当我选择整个表格时,我可以看到其中有一些 值。 它是一个小的选择语句。为什么它不起作用?有没有一种方法(特殊方法)执行类型为’NULL’的 ! 提前致谢 问题答案: 您需要使用 MySQL文档具有一些有关处理NULL值的良好信息:http : //dev.my

  • 问题内容: 是原子的吗? 分配对象引用应该是,但是我不确定。 谢谢。 问题答案: 是的 。在Java中,所有引用分配都是原子的。 只需注意,这样的复合语句不是原子的,因为它包含一个对象创建和一个单独的赋值。 另请注意,来自JLS-17.7的 “对long和double变量的分配可能不是原子的”

  • 问题内容: 在Objective-C中,您可以区分原子性质和非原子性质: 根据我的理解,您可以安全地从多个线程读取和写入定义为原子的属性,而同时从多个线程中写入和访问非原子属性或ivars可能导致不确定的行为,包括严重的访问错误。 因此,如果您在Swift中有这样的变量: 我可以安全地并行读写该变量吗?(不考虑这样做的实际含义)。 问题答案: 假设尚无底层文档,这还为时尚早,但是您可以从汇编中学习