memory内存存储

MemoryStore 是一个内存实现的 Store 接口,提供基于线程安全的每会话键值存储 ConcurrentHashMap。 它轻量、快速,适用于 单节点部署、开发环境以及会话数据 需要在多个服务器实例之间共享的场景。

关键特性

  • 本地每会话存储 — 每个连接获得其自己的存储实例

  • 线程安全访问 — 使用以下方式支持并发读/写 ConcurrentHashMap

  • 短暂数据 — 值仅存在于 JVM 内存中,重启或故障时会丢失

  • 无跨节点共享 — 数据不会在服务器之间分发

  • 零外部依赖 — 尽可能最简单的 Store 实现

工作原理

  • set(key, value) 在与会话关联的内存中存储一个值

  • get(key) 检索存储的值,或 null 如果不存在则返回

  • has(key) 在不读取值的情况下检查键是否存在

  • del(key) 移除单个条目

  • destroy() 清除所有条目,通常在客户端断开连接时调用

优点

👍 快速、低延迟访问 👍 无需外部服务 👍 适合开发和本地测试 👍 与以下的 任何 EventStore 结合用于混合部署 (例如, MemoryStore + KafkaEventStoreMemoryStore + RedisStreamEventStore)

限制

ℹ️ 非分布式 — 值不会在各节点间同步 ℹ️ 非持久化 — 数据在服务器重启或崩溃时消失 ℹ️ 不适合水平扩展,除非与分布式的 StoreFactory 实现


总结

MemoryStore 提供本地的、短暂的每会话数据存储,适用于单节点部署和开发场景。 当需要事件分发但不需要分布式存储时,可与任何分布式 EventStore 结合使用。

最后更新于

这有帮助吗?