1. Redis 7.4 核心新特性概览
Redis 7.4 是 2025 年末发布的 LTS 版本,带来了多项对 AI 和大规模分布式系统至关重要的改进。本次解析将聚焦三个与 AI 基础设施最相关的特性:Redis Functions(服务端 Lua 函数的持久化与原子执行)、Redis Stack 的增强向量检索能力,以及全新的主动复制(Active-Replica)模式。这些特性使 Redis 不再仅仅是「高速缓存」,而是可以成为 AI 推理管道中的智能缓存层。
2. Redis Functions:服务端原子计算逻辑
在传统的 Redis 使用模式中,复杂的业务逻辑必须在客户端完成,导致频繁的客户端-服务端往返。Redis 7.4 引入了 Functions 特性的 GA 版本,允许开发者将 Lua 脚本上传到 Redis 服务端并持久化,实现原子性的「读写计算」闭环。对于 AI 场景而言,这意味着可以直接在 Redis 内部完成 Embedding 缓存命中判断、向量相似度排序和 Token 计数统计。以下命令和代码展示了 Functions 的核心用法:
# 1. 启动 Redis 7.4(启用 Functions 特性)
docker run -d --name redis74 \
-p 6379:6379 \
-v /data/redis:/data \
redis/redis-stack-server:7.4.0-v0 \
--loadmodule /opt/redis-stack/lib/rejson.so \
--loadmodule /opt/redis-stack/lib/search.so \
--loadmodule /opt/redis-stack/lib/vector.so
# 2. 验证版本和支持的模块
redis-cli INFO SERVER | grep redis_version
redis-cli MODULE LIST
# 应看到:ReJSON、Search、Vector 模块已加载
Functions 的原子性优势在 AI 缓存场景中价值明显。以「检查缓存命中」为例,传统模式需要执行 GET → 判断 → 未命中则执行 SET,中间存在竞争窗口。而 Functions 可以将上述三步合并为一次原子操作:
# 3. 注册一个 AI 缓存查询函数(get_or_compute_embedding)
redis-cli FUNCTION LOAD REPLACE << 'LUA'
local function get_or_compute_embedding(user_id, text)
local key = "emb:" .. user_id .. ":" .. redis.sha1hex(text)
local cached = redis.call('HGETALL', key)
if cached[1] ~= nil then
-- 命中缓存,直接返回
return {hit=1, vector=cached[2]}
end
-- 未命中:调用外部计算函数(通过 FCALL 外部接入)
-- 这里返回 MISS 标记,由应用层补充
return {hit=0, vector=''}
end
LUA
# 4. 调用函数
redis-cli FCALL get_or_compute_embedding 2 user_12345 "用户问题文本内容"
# 返回:1) "hit" 2) "0" 3) "vector" 4) ""
3. Redis Stack 向量检索:构建语义缓存层
Redis Stack 在 Redis 7.4 中进一步优化了向量检索性能,支持 HNSW 索引的增量更新、多种距离度量(Cosine、L2、IP)以及复杂过滤条件。这些能力对于 AI 应用至关重要,因为 LLM 的提示词缓存和 RAG 检索结果缓存都可以基于向量相似度实现,从而大幅降低重复查询的延迟和外部 API 调用成本。
我们以 LLM 响应缓存为例,展示如何用 Redis 构建语义级别的缓存层:
# 5. 创建向量索引(使用 RedisSearch 的向量字段语法)
redis-cli FT.CREATE llm_cache_idx ON JSON PREFIX 1 "cache:llm:" \
SCHEMA \
$.user_id AS user_id TEXT SORTABLE \
$.query AS query TEXT WEIGHT 2.0 \
$.query_vec AS query_vec VECTOR HNSW 6 FLOAT32 1536 DIM 1536 DISTANCE_METRIC COSINE \
$.response AS response TEXT NOSTEM \
$.model AS model TEXT SORTABLE \
$.created_at AS created_at NUMERIC SORTABLE \
$.ttl_seconds AS ttl_seconds NUMERIC
# 6. 存储一条缓存记录(模拟查询 + OpenAI Embedding 后的向量)
# 注意:query_vec 需要是 1536 维的 float32 数组
redis-cli JSON.SET cache:llm:req_001 $ \
'{
"user_id": "u_10086",
"query": "如何优化 PostgreSQL ~> 查询性能?",
"query_vec": [0.0123, -0.0456, ..., 0.0789], -- 1536维向量
"response": "针对 PostgreSQL 的 ~> (JSONB 路径) 查询,可以按以下方式优化:1. 为 JSONB 路径创建 GIN 索引...",
"model": "deepseek-v3",
"created_at": 1749331200,
"ttl_seconds": 3600
}'
# 7. 语义相似度查询(查找相似问题的缓存结果)
redis-cli FT.SEARCH llm_cache_idx \
"(@model:{deepseek-v3} @user_id:{u_10086})=>[KNN 3 @query_vec $vec AS dist]" \
PARAMS 2 vec "[0.01, -0.05, ...]" \
DIALECT 2 \
RETURN 3 response dist created_at \
SORTBY dist ASC
4. AI 应用场景缓存架构设计
综合以上 Redis 7.4 的新特性,我们可以设计一套完整的 AI 服务缓存架构。这套架构覆盖了 LLM 提示词缓存、RAG 向量缓存、Embedding 结果缓存和会话历史缓存四个核心场景,显著降低了重复推理的延迟和 API 费用。
以下是缓存架构的整体设计示意图及其核心实现代码:
# 8. 安装 redis-py 和 OpenAI 依赖用于完整实现
pip install redis openai chromadb
# 9. 完整 AI 缓存服务实现(ai_cache_service.py)
cat > /opt/ai-cache/redis_ai_cache.py << 'PYEOF'
import redis, json, hashlib, time, os
import numpy as np
from typing import Optional, List, Dict
r = redis.Redis(host="localhost", port=6379, decode_responses=True)
EMBED_CACHE_TTL = 3600 * 6 # Embedding 结果缓存 6 小时
PROMPT_CACHE_TTL = 3600 * 24 # 提示词缓存 24 小时
class AICacheService:
def get_llm_response(self, prompt_hash: str, model: str) -> Optional[str]:
"""获取 LLM 缓存响应(精确匹配)"""
key = f"cache:llm:{model}:{prompt_hash}"
data = r.hgetall(key)
if data and float(data.get("expires_at", 0)) > time.time():
return data.get("response")
return None
def set_llm_response(self, prompt_hash: str, model: str, response: str, ttl: int = 86400):
key = f"cache:llm:{model}:{prompt_hash}"
r.hset(key, mapping={
"response": response,
"created_at": str(int(time.time())),
"expires_at": str(int(time.time()) + ttl)
})
r.expire(key, ttl)
def cache_embedding(self, text: str, vector: np.ndarray, ttl: int = EMBED_CACHE_TTL) -> bool:
"""缓存文本 Embedding 结果"""
text_hash = hashlib.sha256(text.encode()).hexdigest()[:16]
key = f"cache:emb:{text_hash}"
# 使用 Redis 的向量字段(需 Redis Stack)
pipe = r.pipeline()
pipe.json().set(key, "$", {
"text": text[:200],
"vector": vector.tolist(),
"created_at": int(time.time()),
"model": "bge-large-zh"
})
pipe.expire(key, ttl)
pipe.execute()
return True
def get_embedding(self, text: str) -> Optional[np.ndarray]:
"""获取缓存的 Embedding"""
text_hash = hashlib.sha256(text.encode()).hexdigest()[:16]
key = f"cache:emb:{text_hash}"
data = r.json().get(key)
if data:
return np.array(data["vector"], dtype=np.float32)
return None
def cache_rag_results(self, query_hash: str, results: List[Dict], ttl: int = 1800):
"""缓存 RAG 检索结果"""
key = f"cache:rag:{query_hash}"
r.json().set(key, "$", {
"results": results,
"created_at": int(time.time()),
"count": len(results)
})
r.expire(key, ttl)
# 使用示例
cache = AICacheService()
# 精确检查 LLM 缓存
prompt_hash = hashlib.md5("解释 Transformer 的注意力机制".encode()).hexdigest()
cached_resp = cache.get_llm_response(prompt_hash, "deepseek-v3")
if cached_resp:
print(f"✨ 缓存命中,延迟 < 1ms")
else:
# 调用 LLM API...
pass
PYEOF
5. 性能基准与生产调优参数
在生产环境中部署 Redis 7.4 作为 AI 缓存层时,需要重点关注内存策略、持久化配置和网络延迟。以下是我们基于压测数据整理的关键性能指标和推荐参数:
| 指标 | 推荐值 | 原因 | 验证命令 |
|---|---|---|---|
| 内存上限 | 物理内存的 75% | 预留 25% 给 OS 缓存和 BGSAVE | redis-cli INFO memory |
| 淘汰策略 | allkeys-lru | AI 场景缓存全部是 LRU 友好模式 | redis-cli CONFIG SET maxmemory-policy allkeys-lru |
| 最大连接数 | 5000 | 高并发 AI 服务需要大量并发连接 | redis-cli CONFIG SET maxclients 5000 |
| BGSAVE 频率 | 最低 300s | 频繁 BGSAVE 会导致延迟毛刺 | redis-cli CONFIG SET save "" |
| TCP backlog | 511 | 避免高并发下的连接拒绝 | sysctl -w net.core.somaxconn=1024 |
| 向量索引构建 | 异步后台 | 避免 FT.CREATE 阻塞主线程 | FT.CREATE ... ONLOAD_ASYNC |
# 10. 生产环境 Redis 配置 /etc/redis/redis.conf
# 内存与淘汰
maxmemory 24gb
maxmemory-policy allkeys-lru
# 持久化调整(AI 缓存允许少量数据丢失)
save ""
save 900 1 # 仅在 15 分钟内有 1 次写操作时 BGSAVE
# TCP 优化
tcp-backlog 1024
timeout 0
tcp-keepalive 300
# 慢查询日志(排查缓存热点用)
slowlog-log-slower-than 10000 # 10ms
slowlog-max-len 128
# 11. 压测验证(redis-benchmark)
redis-benchmark -t set,get -n 100000 -q -P 16 --cluster
# 目标:SET/GET QPS > 150k,P99 < 2ms
# 12. 监控检查
redis-cli INFO stats | grep -E "keyspace_hits|keyspace_misses|instantaneous_ops_per_sec"
# 预期 keyspace_hit_rate > 85%(缓存命中率能接受)
Redis 7.4 的新特性(Functions、向量检索、主动复制)为 AI 缓存架构提供了史无前例的灵活性。通过 Functions 实现服务端原子逻辑,避免客户端-服务端往返;通过 Redis Stack 向量检索实现语义缓存,显著降低重复推理成本;通过优化的持久化配置和淘汰策略确保生产稳定性。这些技术组合可以支撑中等规模 AI 应用的多层缓存需求,是构建企业级 AI 基础设施的高性价比选择。