Skip to content

MemoryStoreSortedMapUpdateOptions

概览

字段
KindData · 数据 Data
Realmserver

MemoryStoreSortedMapUpdateOptions 是 MemoryStoreSortedMap:UpdateAsync transform 回调返回的可选参数,用于约束旧 sortKey 条件和 TTL 行为。

适用场景

当排行榜或有序临时数据需要在原子更新时检查旧排序键、设置过期时间或保留 TTL 时,在 transform 中创建并返回该 options。

使用要点

通过 MemoryStoreSortedMapUpdateOptions.New() 创建实例,在 UpdateAsync 的 transformFunction 中与 newValue、newSortKey 一起返回。

注意事项

比较字段和 TTL 字段均为可选。EX、PX、EXAT、PXAT 与 KEEPTTL 是互斥的 TTL 策略,一次更新只选择其中一种。

代码示例

在 UpdateAsync transform 中返回更新选项

lua
-- @runtime server
local Task = game:GetService("Task")
Task:Spawn(function()
    local MemoryStoreService = game:GetService('MemoryStoreService')
    local sortedMap = MemoryStoreService:GetSortedMap('season_score')

    sortedMap:SetAsync('player:1001', 100, 100)
    local newScore = sortedMap:UpdateAsync('player:1001', function(oldValue, oldSortKey)
        local options = MemoryStoreSortedMapUpdateOptions.New()
        options.GTET = 100
        options.EX = 60
        local score = (oldValue or 0) + 10
        return score, score, options
    end)
    print('更新后分数:', newScore)
end)

属性 (11)

Name类型默认值说明
LTTFloat-设置更新条件:仅当当前排序键(sortKey)小于指定值时,才允许执行更新操作。
LTETFloat-设置更新条件:仅当当前排序键(sortKey)小于或等于指定值时,才允许执行更新操作。
GTTFloat-设置更新条件:仅当当前排序键(sortKey)大于指定值时,才允许执行更新操作。
GTETFloat-设置更新条件:仅当当前排序键(sortKey)大于或等于指定值时,才允许执行更新操作。
EQTFloat-设置更新条件:仅当当前排序键(sortKey)等于指定值时,才允许执行更新操作。
NEQTFloat-设置更新条件:仅当当前排序键(sortKey)不等于指定值时,才允许执行更新操作。
EXInt-设置键的生存时间(TTL),单位为秒。超过该时间后键将被自动删除。
PXInt-设置键的生存时间(TTL),单位为毫秒。超过该时间后键将被自动删除。
EXATInt-设置键的绝对生存时间(TTL),单位为秒,表示一个 Unix 时间戳。超过该时间后键将被自动删除。
PXATInt-设置键的绝对生存时间(TTL),单位为毫秒,表示一个 Unix 时间戳。超过该时间后键将被自动删除。
KEEPTTLBool-设置是否保留键原有的生存时间(TTL)。设为 true 时,更新操作不会修改键的 TTL。

函数 (1)

New

签名:New() -> MemoryStoreSortedMapUpdateOptions

构造一个新的 MemoryStoreSortedMapUpdateOptions 实例,用于配置有序映射更新操作的条件与过期策略。

返回值 MemoryStoreSortedMapUpdateOptions

示例代码

构造 MemoryStoreSortedMapUpdateOptions 并设置比较条件

lua
-- @runtime server
-- 构造一个更新选项实例,用于 MemoryStoreSortedMap:UpdateAsync 的 transform 回调
local opts = MemoryStoreSortedMapUpdateOptions.New()
-- 设置条件:仅当当前 sortKey 大于 100 时才允许更新
opts.GTT = 100
-- 设置 TTL 为 3600 秒(相对过期)
opts.EX = 3600
print("GTT:", opts.GTT, "EX:", opts.EX)