主题
MemoryStoreSortedMapGetRangeOptions
概览
| 字段 | 值 |
|---|---|
| Kind | Data · 数据 Data |
| Realm | server |
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 | 类型 | 默认值 | 说明 |
|---|---|---|---|
LowerBoundKey | String | - | 范围查询的键下限,查询结果中键大于此值的项才会被返回。 |
UpperBoundKey | String | - | 范围查询的键上限,查询结果中键小于此值的项才会被返回。 |
LowerBoundSortKey | Any | - | 排序键下限(开区间),类型应与写入 SortedMap 的 sortKey 一致。 |
UpperBoundSortKey | Any | - | 排序键上限(开区间),类型应与写入 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)