Redis OM — Object Mapping for Redis
You are an expert in Redis OM (Object Mapping), the high-level client for working with Redis as a primary database. You help developers define schemas, store JSON documents, perform full-text search, vector similarity search, and build real-time applications — using Redis Stack's JSON, Search, and Vector capabilities through an ORM-like interface instead of raw commands.
Best use case
Redis OM — Object Mapping for Redis is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
You are an expert in Redis OM (Object Mapping), the high-level client for working with Redis as a primary database. You help developers define schemas, store JSON documents, perform full-text search, vector similarity search, and build real-time applications — using Redis Stack's JSON, Search, and Vector capabilities through an ORM-like interface instead of raw commands.
Teams using Redis OM — Object Mapping for Redis should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/redis-om/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Redis OM — Object Mapping for Redis Compares
| Feature / Agent | Redis OM — Object Mapping for Redis | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
You are an expert in Redis OM (Object Mapping), the high-level client for working with Redis as a primary database. You help developers define schemas, store JSON documents, perform full-text search, vector similarity search, and build real-time applications — using Redis Stack's JSON, Search, and Vector capabilities through an ORM-like interface instead of raw commands.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Redis OM — Object Mapping for Redis
You are an expert in Redis OM (Object Mapping), the high-level client for working with Redis as a primary database. You help developers define schemas, store JSON documents, perform full-text search, vector similarity search, and build real-time applications — using Redis Stack's JSON, Search, and Vector capabilities through an ORM-like interface instead of raw commands.
## Core Capabilities
### Schema and Repository
```typescript
import { Client, Schema, Repository, EntityId } from "redis-om";
const client = await new Client().open(process.env.REDIS_URL);
// Define schema
const productSchema = new Schema("product", {
name: { type: "string" },
description: { type: "text" }, // Full-text searchable
price: { type: "number", sortable: true },
category: { type: "string[]" }, // Array of tags
inStock: { type: "boolean" },
embedding: { type: "number[]" }, // Vector for similarity search
createdAt: { type: "date", sortable: true },
location: { type: "point" }, // Geo coordinates
});
const productRepo = new Repository(productSchema, client);
// Create index (run once)
await productRepo.createIndex();
// CRUD operations
const product = await productRepo.save({
name: "Wireless Keyboard",
description: "Ergonomic bluetooth keyboard with backlight and long battery life",
price: 79.99,
category: ["electronics", "peripherals"],
inStock: true,
embedding: await getEmbedding("wireless keyboard ergonomic"), // 1536-dim vector
createdAt: new Date(),
location: { longitude: -122.4194, latitude: 37.7749 },
});
const id = product[EntityId]; // Auto-generated ULID
const fetched = await productRepo.fetch(id);
```
### Search and Queries
```typescript
// Full-text search
const results = await productRepo.search()
.where("description").matches("ergonomic bluetooth")
.and("inStock").is.true()
.and("price").is.between(50, 150)
.sortBy("price", "ASC")
.page(0, 20)
.return.all();
// Tag filtering
const electronics = await productRepo.search()
.where("category").contains("electronics")
.return.all();
// Geo search — products near San Francisco
const nearby = await productRepo.search()
.where("location").inRadius(
(circle) => circle.origin(-122.4194, 37.7749).radius(10).miles
)
.return.all();
// Vector similarity search (semantic search)
const queryEmbedding = await getEmbedding("comfortable typing experience");
const similar = await productRepo.search()
.where("embedding").nearest(queryEmbedding, 10) // Top 10 nearest
.return.all();
// Count
const count = await productRepo.search()
.where("inStock").is.true()
.return.count();
```
### Python
```python
from redis_om import HashModel, Field, Migrator
from redis_om import get_redis_connection
redis = get_redis_connection(url="redis://localhost:6379")
class Product(HashModel):
name: str = Field(index=True)
description: str = Field(index=True, full_text_search=True)
price: float = Field(index=True, sortable=True)
category: str = Field(index=True)
in_stock: bool = Field(index=True, default=True)
class Meta:
database = redis
Migrator().run() # Create indexes
# Save
product = Product(name="Wireless Mouse", description="Ergonomic wireless mouse", price=49.99, category="electronics")
product.save()
# Query
results = Product.find(
(Product.category == "electronics") &
(Product.price < 100) &
(Product.in_stock == True)
).sort_by("price").all()
```
## Installation
```bash
# TypeScript
npm install redis-om
# Python
pip install redis-om
# Redis Stack (includes JSON + Search + Vector)
docker run -p 6379:6379 redis/redis-stack:latest
```
## Best Practices
1. **Redis Stack required** — Redis OM needs Redis Stack (JSON + Search modules); regular Redis won't work
2. **Create index once** — Call `createIndex()` on startup or migration; indexes enable all search features
3. **Full-text vs exact** — Use `text` type for full-text search, `string` for exact match/filtering
4. **Vector search** — Store embeddings as `number[]`; query with `.nearest()` for semantic similarity
5. **Sortable fields** — Mark fields as `sortable: true` to enable `.sortBy()`; adds index overhead
6. **Pagination** — Use `.page(offset, count)` for large result sets; don't fetch all at once
7. **Geo queries** — Use `point` type for location-based search; radius queries built-in
8. **Performance** — Sub-millisecond reads/writes; Redis OM adds minimal overhead over raw commandsRelated Skills
redis-cache-manager
Redis Cache Manager - Auto-activating skill for Backend Development. Triggers on: redis cache manager, redis cache manager Part of the Backend Development skill category.
error-mapping-helper
Error Mapping Helper - Auto-activating skill for API Integration. Triggers on: error mapping helper, error mapping helper Part of the API Integration skill category.
upstash-redis-kv
Read and write to Upstash Redis-compatible key-value store via REST API. Use when there is a need to save or retrieve key-value data, use Redis features (caching, counters, lists, sets, hashes, sorted sets, etc.) for the current interaction, or when the user explicitly asks to use Upstash or Redis.
threat-mitigation-mapping
Map identified threats to appropriate security controls and mitigations. Use when prioritizing security investments, creating remediation plans, or validating control effectiveness.
ddd-context-mapping
Map relationships between bounded contexts and define integration contracts using DDD context mapping patterns.
azure-resource-manager-redis-dotnet
Azure Resource Manager SDK for Redis in .NET. Use for MANAGEMENT PLANE operations: creating/managing Azure Cache for Redis instances, firewall rules, access keys, patch schedules, linked servers (geo-replication), and private endpoints via Azure Resource Manager. NOT for data plane operations (get/set keys, pub/sub) - use StackExchange.Redis for that. Triggers: "Redis cache", "create Redis", "manage Redis", "ARM Redis", "RedisResource", "provision Redis", "Azure Cache for Redis".
object-store-best-practices
Ensures proper cloud storage operations with retry logic, error handling, streaming, and efficient I/O patterns. Activates when users work with object_store for S3, Azure, or GCS operations.
codebase-mapping
Repository structure and dependency analysis for understanding a codebase's architecture. Use when needing to (1) generate a file tree or structure map, (2) analyze import/dependency graphs, (3) identify entry points and module boundaries, (4) understand the overall layout of an unfamiliar codebase, or (5) prepare for deeper architectural analysis.
when-mapping-dependencies-use-dependency-mapper
Comprehensive dependency mapping, analysis, and visualization tool for software projects
redis-patterns
Upstash Redis patterns for caching and rate limiting.
learning-objectives
Generate measurable learning outcomes aligned with Bloom's taxonomy and CEFR proficiency levels for educational content. Use this skill when educators need to define what students will achieve, create learning objectives for curriculum planning, or ensure objectives are specific and testable rather than vague. This skill helps break down complex topics into progressively building learning goals with clear assessment methods and success criteria.
alicloud-redis
Manage Alibaba Cloud Redis (Tair / R-KVStore) using the @alicloud/r-kvstore20150101 TypeScript SDK. Use when working with Redis or Tair instances, accounts, backups, security (whitelist/SSL/TDE/audit), parameters, monitoring, cluster scaling, direct connection, Tair Custom instances, and resource tagging. Covers all 157 APIs of the R-KVStore 20150101 version.