核心数据Web 与移动端

会话管理

存储自动过期的会话,并按用户、角色或设备查找或撤销,无需自建索引。

次查找即可找到用户的会话
1
个二级索引
0
过期,标签一并清除
自动
步骤 1 / 5
在三台设备上登录

每台设备都获得自己的会话,30 分钟后过期。

示例会话playing
# 在三台设备上登录
hotkv> SET session:9f2c "{\"user\":42}" EX 1800
OK

使用真实 HotKV 命令和示例回复的动画演示。点击任意步骤即可跳转。 命令和回复保持英文,与您在 HotKV 中输入和看到的完全一致。

问题所在

会话体积小、访问热、寿命短,很适合内存存储。难的是之后,当客服需要让某个用户在所有设备上退出登录,或安全团队需要终止某个角色或某台设备的所有会话时。普通的键值存储只能按 id 查找会话。

HotKV 如何解决

HotKV 把每个会话存为一个带过期时间的键,并允许您用其所属的用户、角色或设备为它打标签。标签是引擎的一部分,会随键一起消失,因此您只需一次查找就能列出或撤销所有匹配的会话,而不必另外维护一套平行的键。

逐步演示

逐条命令,看看发生了什么

  1. 01

    在三台设备上登录

    每台设备都获得自己的会话,30 分钟后过期。

    SET session:9f2c "{\"user\":42}" EX 1800
  2. 02

    为每个会话打标签

    会话创建后立即附上用户、角色和设备。

    TAG.SET session:9f2c user:42 role:admin device:ios
  3. 03

    活跃期间保持登录

    每个请求都会刷新过期时间,从而实现滑动超时。

    EXPIRE session:9f2c 1800
  4. 04

    找出用户 42 的所有会话

    有人报告笔记本电脑被盗。一次查找就能返回该用户的所有会话。

    TAG.MEMBERS user:42
  5. 05

    在所有设备上退出

    删除返回的键。它们的标签随之消失,每台设备都已退出登录。

    DEL session:9f2c session:71aa session:0c8e
适用场景

真实场景

银行与金融科技应用

安全团队一次操作就能终止被盗账户的所有会话,或所有运行旧版应用的设备上的会话。

SaaS 产品

当某位管理员的角色被移除时,所有带该角色标签的会话会被立即撤销。

流媒体服务

根据用户标签的 TAG.MEMBERS 回复,统计并限制每个账户的并发会话数。

内置功能

您将获得

自动过期

TTL 到期时会话自动消失,其标签也一并清除。

EXEXPIRE

无需索引的查找

按任意标签查找会话,也可同时按多个标签查找。

TAG.MEMBERSTAG.INTER

快速检查标签

TAG.COUNT 和 TAG.EXISTS 告诉您一个键带有哪些标签。

TAG.COUNTTAG.EXISTS

登录高峰下依然快速

会话的读写在并行线程上运行。

常见问题

如何只让用户在一台设备上退出登录?

用 TAG.INTER 结合用户标签和设备标签,然后删除它返回的键。

会话过期后,它的标签会怎样?

键消失时它的标签也会消失,过期时同样如此。标签不包含在快照中,因此如果服务器从快照重启,请重新设置标签。

可以限制每个账户的并发会话数吗?

可以。对用户标签执行 TAG.MEMBERS 会列出会话,您可以统计数量,并在登录时拒绝或结束最早的那个会话。

相关用例

在您自己的工作负载上试试

HotKV 兼容 Redis 协议,您可以把现有客户端指向它,运行这些相同的命令。