Skip to content

MemoryStoreHashMapUpdateOptions

概览

字段
KindData · 数据 Data
Realmserver

MemoryStoreHashMapUpdateOptions 用于配置 MemoryStoreHashMap:UpdateAsync 的原子更新条件,支持基于旧值的阈值比较和键的生存时间控制。通过设置 LTT、GTET、EQT 等字段,可确保仅在满足指定条件时才执行更新,避免并发冲突。

适用场景

在需要原子更新哈希表键值对时,通过 transform 函数返回该配置对象,以指定更新必须满足的前置条件,例如仅当旧值大于某个阈值时才更新。

使用要点

通过 MemoryStoreHashMapUpdateOptions.New() 或 MemoryStoreHashMapUpdateOptions() 创建实例,设置所需的条件字段(如 LTT、GTET)和 TTL 字段(如 EX、KEEPTTL),然后在 MemoryStoreHashMap:UpdateAsync 的 transform 回调中返回该对象。

注意事项

该类型仅用于 UpdateAsync 的 transform 返回值,不可单独使用。条件字段均为可选,若未设置则不做阈值检查。TTL 字段与条件字段可同时使用,但需确保原子性语义正确。

代码示例

创建条件更新选项

lua
-- @runtime server
local options = MemoryStoreHashMapUpdateOptions.New()
options.GTT = 5
options.EX = 60
print('条件更新选项:', options.GTT, options.EX)

属性 (11)

Name类型默认值说明
LTTFloat-设置一个数值,仅当键的当前值小于该值时,更新操作才会执行。
LTETFloat-设置一个数值,仅当键的当前值小于或等于该值时,更新操作才会执行。
GTTFloat-设置一个数值,仅当键的当前值大于该值时,更新操作才会执行。
GTETFloat-设置一个数值,仅当键的当前值大于或等于该值时,更新操作才会执行。
EQTAny-设置一个值,仅当键的当前值等于该值时,更新操作才会执行。
NEQTAny-设置一个值,仅当键的当前值不等于该值时,更新操作才会执行。
EXInt-设置键的生存时间(秒),从更新操作成功时开始计算。
PXInt-设置键的生存时间(毫秒),从更新操作成功时开始计算。
EXATInt-设置键的绝对生存时间(秒),使用 Unix 时间戳指定过期时刻。
PXATInt-设置键的绝对生存时间(毫秒),使用 Unix 时间戳指定过期时刻。
KEEPTTLBool-设置为 true 时,更新操作将保留键原有的生存时间,不重置 TTL。

函数 (1)

New

签名:New() -> MemoryStoreHashMapUpdateOptions

创建一个新的 MemoryStoreHashMapUpdateOptions 实例,用于配置 HashMap 更新操作的条件选项。

返回值 MemoryStoreHashMapUpdateOptions

示例代码

构造 MemoryStoreHashMapUpdateOptions 并设置阈值与 TTL

lua
-- @runtime server
-- 构造一个 MemoryStoreHashMapUpdateOptions 实例
local opts = MemoryStoreHashMapUpdateOptions.New()
-- 设置数值比较阈值:仅当当前值大于 100 时才允许更新
opts.GTT = 100
-- 设置新的过期时间(毫秒)
opts.PX = 60000
-- 打印配置信息
print("GTT threshold:", opts.GTT)
print("PX TTL:", opts.PX)