网上商店
商品页面、价格和库存每秒被读取成千上万次,商品目录变化时按标签刷新。
把最热的数据放在内存中,读取响应远低于一毫秒,引擎让每个核心都投入工作。
命中直接从内存返回。完全不访问数据库。
使用真实 HotKV 命令和示例回复的动画演示。点击任意步骤即可跳转。 命令和回复保持英文,与您在 HotKV 中输入和看到的完全一致。
对于每秒被读取成千上万次的数据,访问数据库既慢又贵。每一次页面浏览、API 调用或仪表盘刷新都在重复同样的查询,数据库远在您的应用之前就成了瓶颈。
HotKV 位于数据库前面,把结果保存在内存中。您的应用先从 HotKV 读取,只有未命中时才回退到数据库。由于 HotKV 同时在多个线程上执行命令,繁忙的缓存不会把所有客户端都挤到一个核心上,而标签让您在底层数据变化时一次性让整组条目失效。
命中直接从内存返回。完全不访问数据库。
GET product:1001未命中时,应用读取一次数据库,并将结果缓存五分钟。
SET product:2002 "{\"name\":\"Oak desk\",\"price\":420}" EX 300每个展示灯具商品的缓存页面都带有同一个标签。
TAG.SET product:1001 catalog:lighting价格变了。列出带有该标签的所有键,并在一个流水线中把它们删除。
TAG.MEMBERS catalog:lighting一个已经设置好的闪存令牌,必须在 250 ms 后消失,精度达到纳秒。
NEXPIRE flash:token:9 250000000商品页面、价格和库存每秒被读取成千上万次,商品目录变化时按标签刷新。
热门端点的响应以较短的 TTL 缓存,流量高峰打到内存而不是数据库。
渲染好的片段和文章元数据缓存几分钟,编辑发布时按标签失效。
EXPIRE 和 PEXPIRE 的行为符合您的预期。NEXPIRE 增加了纳秒精度。
EXPIREPEXPIRENEXPIRE用 TAG.SET 为键打上标签,然后找出带有某个标签的所有键。
TAG.SETTAG.MEMBERS可以压缩大型负载,让更多工作集装进内存。
命令在并行线程上执行,吞吐量随核心数增长。具体数据见性能页面。
GETMGETHotKV 支持 Redis 协议(RESP2 和 RESP3),因此标准的 Redis 客户端都能连接。请在命令参考中确认您依赖的命令。
在缓存时用 TAG.SET 为键打标签,然后调用 TAG.MEMBERS,并删除返回的键。
这是 HotKV 公开基准测试中流水线 GET 的吞吐量。测试方法和硬件见性能页面。