redis-semantic-cache — Claude Code skill: cache LLM answers
This skill walks through putting LangCache in front of an LLM call, so a similar prompt returns a stored answer instead of hitting the model again.
npx skills add redis/agent-skills --skill redis-semantic-cache -a claude-codeWhat redis-semantic-cache does
The skill covers the cache-aside pattern for LLM responses. You send the prompt to LangCache search, return the stored answer on a hit, and on a miss call the model and write the result back with set. It sits in front of OpenAI, Anthropic or any other provider as a separate layer.
Three things get the most attention. The similarity_threshold decides how close a new prompt must be to a cached one: 0.95 and up for customer-facing answers, 0.9 as a balanced starting point, 0.8 for internal tools and FAQ deduplication. Then there is cache separation by task type — code questions and password-reset support queries should not share a cache, because a near match across them returns the wrong answer. Custom attributes such as {"category": "database"} keep tasks in one cache but isolated by filter.
All of this runs on Redis Cloud, where LangCache is in preview, so features and behavior can change and it is worth rechecking the docs before production. You need server_url, cache_id and api_key; the samples read them from HOST, CACHE_ID and API_KEY. The same operations exist over REST when an SDK is not an option.
What it helps with
- wrap an LLM call in a cache to stop paying for repeated prompts
- pick a similarity threshold that fits the workload
- split caches by task type so answers do not cross over
- filter entries by custom attributes inside one cache
- fall back to REST when no SDK fits
Example prompts for the agent
- Show me how to wrap an LLM call in LangCache with the cache-aside flow
- Which similarity_threshold should I use for customer-facing answers?
- Split my support cache and code cache into two cache_id values
How to install redis-semantic-cache
1Skills CLI (Vercel)
npx skills add redis/agent-skills --skill redis-semantic-cache -a claude-code2Manually: put the files in place
~/.claude/skills/redis-semantic-cache/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/redis-semantic-cache/
1Skills CLI (Vercel)
npx skills add redis/agent-skills --skill redis-semantic-cache -a codex2Manually: put the files in place
.agents/skills/redis-semantic-cache/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add redis/agent-skills --skill redis-semantic-cache -a cursor2Manually: put the files in place
.cursor/skills/redis-semantic-cache/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install redis/agent-skills redis-semantic-cache2Manually: put the files in place
.github/skills/redis-semantic-cache/SKILL.md1Skills CLI (Vercel)
npx skills add redis/agent-skills --skill redis-semantic-cache -a gemini-cli2Platform CLI
gemini skills install https://github.com/redis/agent-skills --path skills/redis-semantic-cacheManually: put the files in place
.devin/skills/redis-semantic-cache/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add redis/agent-skills --skill redis-semantic-cache -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about redis-semantic-cache
How do I install redis-semantic-cache in Claude?
Run npx skills add redis/agent-skills --skill redis-semantic-cache -a claude-code. The skill lands at ~/.claude/skills/redis-semantic-cache/SKILL.md.
What does redis-semantic-cache do?
It explains semantic caching of LLM responses with LangCache on Redis Cloud: searching for a similar prompt, returning the stored answer, writing new entries and tuning the similarity threshold.
What do I need to run LangCache?
A Redis Cloud account with the LangCache service, plus server_url, cache_id and api_key. The service is in preview, so behavior may change.
Source text
SKILL.md · MIT
---
name: redis-semantic-cache
description: Redis LangCache guidance for semantic caching of LLM responses on Redis Cloud — calling search/set via the SDK or REST API, tuning the similarity threshold, separating caches per task type, and filtering with custom attributes. Use when caching LLM completions or RAG answers to cut API cost and latency, building a cache-aside layer in front of OpenAI / Anthropic / etc., tuning hit rate vs precision, or splitting one app's LLM workloads into multiple LangCache caches.
license: MIT
metadata:
author: Redis, Inc.
version: "0.1.0"
---
# Redis Semantic Cache
Semantic caching for LLM responses with Redis Cloud's LangCache service. Stores prompts as embeddings; subsequent semantically-similar prompts return the cached response without re-calling the model.
> LangCache is currently in **preview** on Redis Cloud. Features and behavior may change.
## When to apply
- Wrapping an LLM call (OpenAI, Anthropic, etc.) with a cache layer to cut cost and latency.
- Caching RAG answers, classification outputs, or any deterministic LLM workload.
- Tuning the precision/hit-rate trade-off for a semantic cache.
- Splitting one application's LLM workloads across multiple cache instances.
## 1. The cache-aside flow
LangCache fits in front of any LLM call as a standard cache-aside pattern:
1. Send the user's prompt to LangCache's `search`.
2. **Cache hit** — return the stored response directly.
3. **Cache miss** — call the LLM, then `set` the response so future similar prompts hit.
```python
from langcache import LangCache
import os
lang_cache = LangCache(
server_url=f"https://{os.getenv('HOST')}",
cache_id=os.getenv("CACHE_ID"),
api_key=os.getenv("API_KEY"),
)
result = lang_cache.search(prompt="What is Redis?", similarity_threshold=0.9)
if result:
response = result[0]["response"]
else:
response = llm.generate("What is Redis?")
lang_cache.set(prompt="What is Redis?", response=response)
```
The same operations are available via REST (`POST /v1/caches/{cacheId}/entries/search` and `POST /v1/caches/{cacheId}/entries`) when an SDK isn't an option.
See [references/langcache-usage.md](references/langcache-usage.md) for full SDK + REST samples and attribute-based storage.
## 2. Tune the similarity threshold
The threshold controls how close (in embedding cosine distance) a new prompt must be to a cached one to count as a hit. Higher = stricter match, fewer false positives. Lower = more hits, more risk of returning an off-topic answer.
| Threshold | Behavior | Use when |
|---|---|---|
| 0.95+ | Near-exact match required | Customer-facing answers where wrong responses are costly |
| 0.9 | Balanced default | Most workloads — start here |
| 0.8 | Loose semantic match | Internal tools, exploratory queries, FAQ deduplication |
```python
# Stricter — fewer false positives
result = lang_cache.search(prompt="What is Redis?", similarity_threshold=0.95)
# Looser — higher hit rate
result = lang_cache.search(prompt="What is Redis?", similarity_threshold=0.8)
```
Adjust by watching the actual cache-hit rate and spot-checking that returned answers are still relevant.
See [references/best-practices.md](references/best-practices.md).
## 3. Separate caches per task type
Different LLM workloads should not share one cache — a "code question" prompt is semantically close to other code questions but has nothing to do with a password-reset support query, and crossing them returns garbage.
```python
support_cache = LangCache(server_url=..., cache_id="support-cache-id", api_key=...)
code_cache = LangCache(server_url=..., cache_id="code-cache-id", api_key=...)
```
Create distinct cache IDs in Redis Cloud per task, and route each call to the right one. As a finer-grained alternative, store and search with **custom attributes** (e.g. `{"category": "database"}`) to keep tasks in the same cache but isolated by attribute filter — useful when the same prompt format spans subtopics.
## References
- [LangCache documentation](https://redis.io/docs/latest/develop/ai/langcache/)
© Redis, Inc. · MIT · redis/agent-skills