Skip to content

MemoryStoreService

概览

字段
KindService · 服务 Service
Realmserver

继承关系

  • Unit(4 属性 / 25 函数 / 6 事件)
    • [MemoryStoreService](3 函数)

> Service 继承 Unit 仅表示运行时类型关系;作者可用 API 以当前 Service 页面显式列出的成员为准,不自动包含 Unit 的创建、层级或销毁能力。

内存存储服务是服务端专用的高速数据存储方案,提供有序映射、队列和哈希映射三种集合类型。通过该服务可获取对应集合的句柄,进而执行数据的增删改查及原子更新操作。

适用场景

典型场景是在服务端脚本中通过 game:GetService("MemoryStoreService") 获取服务实例,然后调用 GetSortedMap、GetQueue 或 GetHashMap 获取集合对象,用于排行榜、消息队列或临时状态缓存。

使用要点

先使用 game:GetService("MemoryStoreService") 获取服务实例,再根据需求调用 GetSortedMap("排行榜")、GetQueue("任务队列", 60) 或 GetHashMap("玩家状态") 获取集合句柄,后续在返回的集合对象上调用 SetAsync、GetAsync 等方法进行读写。

注意事项

MemoryStoreService 仅服务端可用;GetSortedMap/GetQueue/GetHashMap 都只是获取对应集合句柄,后续读写需在返回的集合对象上调用。各方法示例应聚焦当前工厂方法,不要把三种集合重复写成同一段示例。

代码示例

获取 SortedMap 和 Queue 句柄并验证

lua
-- @runtime server
-- 获取 MemoryStoreService 服务实例
local memoryStoreService = game:GetService("MemoryStoreService")

-- 获取有序集合句柄
local sortedMapName = "PlayerScores"
local sortedMap = memoryStoreService:GetSortedMap(sortedMapName)

-- 获取队列句柄,设置默认不可见窗口为 60 秒
local queueName = "MatchQueue"
local queueInvisibleExpireSecs = 60
local queue = memoryStoreService:GetQueue(queueName, queueInvisibleExpireSecs)

-- 验证句柄是否成功获取
if sortedMap ~= nil and queue ~= nil then
    print("成功获取 MemoryStore 集合句柄")
    print("SortedMap 名称:", sortedMapName)
    print("Queue 名称:", queueName)
else
    print("获取集合句柄失败")
end

关联类型

函数 (3)

GetSortedMap

签名:GetSortedMap(name: String) -> MemoryStoreSortedMap (有序集合句柄)

根据名称获取一个有序集合(SortedMap)的操作句柄。每次调用都会返回一个新的 MemoryStoreSortedMap 实例,用于对该有序集合进行读写操作。

参数类型说明
nameString集合名称

返回值 MemoryStoreSortedMap (有序集合句柄)

示例代码

获取有序集合句柄

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

if sortedMap ~= nil then
    print('SortedMap 句柄已就绪')
end

GetQueue

签名:GetQueue(name: String, queueInvisibleExpireSecs?: Int) -> MemoryStoreQueue (队列集合句柄)

根据名称获取一个队列集合(Queue)的操作句柄。每次调用都会返回一个新的 MemoryStoreQueue 实例,用于对该队列进行读写操作。可选参数 queueInvisibleExpireSecs 用于设置队列中消息的不可见超时时间(秒)。

参数类型说明
nameString集合名称
queueInvisibleExpireSecs?Int队列级默认不可见窗口秒数;后续 ReadAsync 在 options 未指定 QueueInvisibleExpireSecs 时使用该值;不传时默认 30

返回值 MemoryStoreQueue (队列集合句柄)

示例代码

获取队列句柄

lua
-- @runtime server
local MemoryStoreService = game:GetService('MemoryStoreService')
local queue = MemoryStoreService:GetQueue('match_queue', 30)

if queue ~= nil then
    print('Queue 句柄已就绪')
end

GetHashMap

签名:GetHashMap(name: String) -> MemoryStoreHashMap (哈希集合句柄)

根据名称获取一个哈希集合(HashMap)的操作句柄。每次调用都会返回一个新的 MemoryStoreHashMap 实例,用于对该集合进行读写操作。

参数类型说明
nameString集合名称

返回值 MemoryStoreHashMap (哈希集合句柄)

示例代码

获取哈希集合句柄

lua
-- @runtime server
local MemoryStoreService = game:GetService('MemoryStoreService')
local hashMap = MemoryStoreService:GetHashMap('match_state')

if hashMap ~= nil then
    print('HashMap 句柄已就绪')
end