Skip to content

MemoryStoreSortedMapGetRangeOptions ​

概览 ​

字段值
KindData · 数据 Data
Realmserver

MemoryStoreSortedMapGetRangeOptions 是用于配置有序映射范围查询的参数字对象,通过 LowerBoundKey、UpperBoundKey、LowerBoundSortKey、UpperBoundSortKey 四个字段分别限定键与排序键的上下限。它自身不执行任何读取动作,只承载范围约束,未显式设置的字段保持默认行为。

适用场景 ​

当需要按区间分页读取有序映射中的条目时使用,例如按键范围或排序键范围筛选排行榜与分段数据,把一组边界条件打包后交给 MemoryStoreSortedMap:GetRangeAsync 执行查询。

使用要点 ​

先通过 MemoryStoreSortedMapGetRangeOptions.New() 或等价的 MemoryStoreSortedMapGetRangeOptions() 创建对象,再按需给 LowerBoundKey、UpperBoundKey、LowerBoundSortKey、UpperBoundSortKey 赋值;随后把该对象作为第三个参数传入 game:GetService("MemoryStoreService"):GetSortedMap("mapName"):GetRangeAsync(Enums.SortDirection.Ascending, 100, opt),返回的 MemoryStoreSortedMapPages 可用 GetCurrentPage 逐页取出条目。

注意事项 ​

该配置对象属于可自建数据,只能通过 New 构造,不能由其它接口返回;四个边界字段均为排除自身,即边界值本身不会出现在结果中;只填写当前查询明确支持的字段,未赋值的字段按默认行为处理。

代码示例 ​

按排序键下限读取范围 ​

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

    local options = MemoryStoreSortedMapGetRangeOptions.New()
    options.LowerBoundSortKey = 1000
    local pages = sortedMap:GetRangeAsync(Enums.SortDirection.Ascending, 20, options)
    for _, item in ipairs(pages:GetCurrentPage()) do
        print(item.Key, item.Value, item.SortKey)
    end
end)

属性 (4) ​

Name类型默认值说明
LowerBoundKeyString-范围查询的键下限,查询结果中键大于此值的项才会被返回。
UpperBoundKeyString-范围查询的键上限,查询结果中键小于此值的项才会被返回。
LowerBoundSortKeyAny-排序键下限(开区间),类型应与写入 SortedMap 的 sortKey 一致。
UpperBoundSortKeyAny-排序键上限(开区间),类型应与写入 SortedMap 的 sortKey 一致。

函数 (1) ​

New ​

签名:New() -> MemoryStoreSortedMapGetRangeOptions

创建一个新的 MemoryStoreSortedMapGetRangeOptions 实例,用于配置有序映射的范围查询选项。

返回值 MemoryStoreSortedMapGetRangeOptions

示例代码

构造范围选项并查询

lua
-- @runtime server
local Task = game:GetService("Task")
Task:Spawn(function()
    local MemoryStoreService = game:GetService('MemoryStoreService')
    local sortedMap = MemoryStoreService:GetSortedMap('season_score')
    local options = MemoryStoreSortedMapGetRangeOptions.New()
    options.LowerBoundSortKey = 1000
    local pages = sortedMap:GetRangeAsync(Enums.SortDirection.Ascending, 20, options)
    print('当前页数量:', #pages:GetCurrentPage())
end)