You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redis客户端缓存(Tracking)测试疑问:二次GET为何仍请求服务器?

Redis客户端缓存功能的实现说明

首先明确:redis-cli本身并没有实现客户端缓存的逻辑,它只是一个命令行工具,负责发送命令到服务器并返回结果,不会在本地存储缓存数据。所以即使你开启了CLIENT TRACKING,redis-cli依然会把每一次GET请求都发送到服务器,这就是你在monitor中看到两次GET的原因。

对于你的疑问:

  • 是否需要自行实现缓存?是的。CLIENT TRACKING只是Redis服务器提供的缓存失效通知机制,它负责在数据更新时通知客户端,但客户端本身需要自己实现本地缓存的存储、读取以及根据服务器的通知来失效缓存的逻辑。
  • Ruby的redis客户端(包括搭配hiredis的情况)默认也没有内置客户端缓存实现,所以同样会把所有GET请求发送到服务器。如果需要使用客户端缓存功能,你需要基于这些客户端进行二次开发,或者使用已经实现了该功能的第三方库/扩展。

举个简单的逻辑示例(伪代码):

# 模拟客户端缓存实现
local_cache = {}

# 开启客户端追踪后,处理服务器的失效通知
def handle_invalidation(key)
  local_cache.delete(key)
end

# 自定义GET方法
def get(key)
  if local_cache.key?(key)
    return local_cache[key]
  else
    value = redis.get(key)
    local_cache[key] = value
    return value
  end
end

只有这样,当第二次调用GET test:1时,才会优先读取本地缓存,而不会发送请求到服务器。

内容的提问来源于stack exchange,提问作者Zacarias Eugênio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 12:54:53