Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Clojure
  3. carmine

carmine

EPL-1.0Clojurev3.5.0

A high-performance Redis client and message queue library for Clojure with an idiomatic API.

Visit WebsiteGitHubGitHub
1.2k stars132 forks0 contributors

What is carmine?

Carmine is a Redis client and message queue library for Clojure that provides an idiomatic API for interacting with Redis. It solves the problem of integrating Redis with Clojure applications by offering high performance, ease-of-use, and production-ready features like connection pooling and automatic serialization.

Target Audience

Clojure developers building applications that require Redis for caching, messaging, or distributed coordination.

Value Proposition

Developers choose Carmine for its pure-Clojure implementation, support for the latest Redis features, and additional utilities like a simple message queue and distributed lock API, all with an idiomatic Clojure interface.

Overview

Redis client + message queue for Clojure

Use Cases

Best For

  • Clojure applications needing a high-performance Redis client
  • Implementing message queues in Clojure with Redis
  • Adding distributed locking to Clojure services
  • Managing Redis connection pooling in production Clojure apps
  • Storing and retrieving serialized Clojure data in Redis
  • Using the latest Redis commands from Clojure code

Not Ideal For

  • Applications requiring Redis Sentinel or Cluster for high availability and sharding, as Carmine only supports single node, Enterprise, and Cloud setups.
  • Teams using multiple JVM languages who need a Redis client with broader interop beyond pure Clojure.
  • Projects prioritizing minimal dependencies, since Carmine includes Nippy for serialization which adds an extra library.

Pros & Cons

Pros

Pure Clojure Implementation

High-performance library written entirely in Clojure with no external dependencies, offering seamless integration and efficiency for Clojure applications.

Latest Redis Command Support

Fully documented API that includes the newest Redis features, ensuring up-to-date compatibility as per the README's emphasis on latest commands.

Production Connection Pooling

Built-in, easy-to-use connection pooling designed for robust and scalable production applications, highlighted as a key feature.

Integrated Message and Lock APIs

Provides fast and simple APIs for message queues and distributed locks, extending Redis's utility for common distributed systems tasks without additional libraries.

Cons

No Built-in HA Support

Lacks support for Redis Sentinel and Cluster, forcing users to rely on single node setups or paid Enterprise/Cloud solutions for high availability, as admitted in the compatibility table.

Nippy Serialization Overhead

Auto serialization via Nippy adds a dependency and can introduce performance overhead or compatibility issues with custom data types, a trade-off for convenience.

Documentation Fragmentation

Relies on separate Wiki and cljdoc pages for documentation, which might require extra effort to navigate compared to a unified reference.

Frequently Asked Questions

Quick Stats

Stars1,183
Forks132
Contributors0
Open Issues8
Last commit4 months ago
CreatedSince 2012

Tags

#taoensso#high-performance#redis#message-queue#connection-pooling#redis-client#clojure-library#distributed-locks#data-store#epl#clojure#serialization

Built With

C
Clojure

Links & Resources

Website

Included in

Clojure2.8k
Auto-fetched 1 day ago

Related Projects

celtuceceltuce

Clojure wrappers for Lettuce (Java Redis client)

Stars49
Forks9
Last commit4 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub