{"adoption": {"forks": 1103, "observed_at": "2026-08-28T04:09:29.499373+00:00", "stars": 5776}, "canonical_url": "https://ross.abutalabs.com/products/lettuce", "card": {"archived": false, "artifact_type": "library", "description": "Advanced Java Redis client for thread-safe sync, async, and reactive usage. Supports Cluster, Sentinel, Pipelining, and codecs.", "domain": ["databases", "backend", "developer-tools"], "enriched": true, "function": ["database-driver", "caching", "http-client"], "health_score": 100, "homepage": "https://lettuce.io", "language": "Java", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["redis/lettuce"], "name": "redis/lettuce", "platform": ["jvm", "cross-platform"], "pushed_at": "2026-08-26T08:09:28+00:00", "repo": "redis/lettuce", "stars": 5776, "tags": ["redis-client", "netty", "reactive-streams", "redis-cluster", "redis-sentinel", "thread-safe", "async"], "topics": ["java", "redis", "asynchronous", "reactive", "redis-sentinel", "redis-cluster", "azure-redis-cache", "aws-elasticache", "redis-client"], "urls": [], "use_cases": ["connect to redis from a java application", "use redis cluster with automatic topology discovery in java", "reactive redis streams with project reactor", "high-throughput redis pipelining from multiple threads", "failover to redis sentinel from a spring service", "serialize java objects to redis with custom codecs", "connect to aws elasticache or azure redis cache from jvm"], "what_it_is": "Lettuce is a scalable, thread-safe Redis client for Java built on Netty, supporting synchronous, asynchronous, and reactive APIs. It provides advanced Redis features including Cluster, Sentinel, pipelining, auto-reconnect, SSL, and pluggable codecs.", "when_to_avoid": ["you need a simple blocking-only client and prefer a lighter API like Jedis", "your project is not on the JVM", "you rely heavily on blocking commands from shared connections, which Lettuce discourages"], "when_to_choose": ["you need a thread-safe Redis client sharing one connection across threads", "you require reactive or async Redis access on the JVM", "your deployment uses Redis Cluster or Sentinel", "you want the default client behind Spring Data Redis"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/lettuce", "repo": "redis/lettuce", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:29.499373+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:52:51.799346+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba7d175a1d6379984b02fc50267636c122663ba96875bb529e1a6ee0b5eac14b", "fetched_at": "2026-08-28T04:09:29.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/redis/lettuce"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:29.499373+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:52:51.799346+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba7d175a1d6379984b02fc50267636c122663ba96875bb529e1a6ee0b5eac14b", "fetched_at": "2026-08-28T04:09:29.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/redis/lettuce"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:52:51.799346+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba7d175a1d6379984b02fc50267636c122663ba96875bb529e1a6ee0b5eac14b", "fetched_at": "2026-08-28T04:09:29.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/redis/lettuce"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:29.499373+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:29.499373+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:29.499373+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:52:51.799346+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba7d175a1d6379984b02fc50267636c122663ba96875bb529e1a6ee0b5eac14b", "fetched_at": "2026-08-28T04:09:29.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/redis/lettuce"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:29.499373+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:29.499373+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:52:51.799346+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba7d175a1d6379984b02fc50267636c122663ba96875bb529e1a6ee0b5eac14b", "fetched_at": "2026-08-28T04:09:29.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/redis/lettuce"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:29.499373+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:29.499373+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:29.499373+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:52:51.799346+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba7d175a1d6379984b02fc50267636c122663ba96875bb529e1a6ee0b5eac14b", "fetched_at": "2026-08-28T04:09:29.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/redis/lettuce"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:29.499373+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:29.499373+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:52:51.799346+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba7d175a1d6379984b02fc50267636c122663ba96875bb529e1a6ee0b5eac14b", "fetched_at": "2026-08-28T04:09:29.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/redis/lettuce"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:52:51.799346+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba7d175a1d6379984b02fc50267636c122663ba96875bb529e1a6ee0b5eac14b", "fetched_at": "2026-08-28T04:09:29.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/redis/lettuce"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:52:51.799346+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba7d175a1d6379984b02fc50267636c122663ba96875bb529e1a6ee0b5eac14b", "fetched_at": "2026-08-28T04:09:29.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/redis/lettuce"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:52:51.799346+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ba7d175a1d6379984b02fc50267636c122663ba96875bb529e1a6ee0b5eac14b", "fetched_at": "2026-08-28T04:09:29.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/redis/lettuce"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 98}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4498, "days_push": 7, "days_rel": 15, "gap_med": 9, "n_releases_24m": 38}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}