What is twemproxy?
twemproxy (pronounced "two-em-proxy"), aka nutcracker is a fast and lightweight proxy for memcached and redis protocol. It was built primarily to reduce the number of connections to the caching servers on the backend. This, together with protocol pipelining and sharding enables you to horizontally scale your distributed caching architecture.
twemproxy is a tool in the Memcached Tools category of a tech stack.
twemproxy is an open source tool with 10.5K GitHub stars and 1.9K GitHub forks. Here’s a link to twemproxy's open source repository on GitHub
Who uses twemproxy?
3 companies reportedly use twemproxy in their tech stacks, including Twitter, trivago, and Avito.
11 developers on StackShare have stated that they use twemproxy.
Pros of twemproxy
Scalable for Caches
- Maintains persistent server connections.
- Keeps connection count on the backend caching servers low.
- Enables pipelining of requests and responses.
- Supports proxying to multiple servers.
- Supports multiple server pools simultaneously.
- Shard data automatically across multiple servers.
- Implements the complete memcached ascii and redis protocol.
- Easy configuration of server pools through a YAML file.
- Supports multiple hashing modes including consistent hashing and distribution.
- Can be configured to disable nodes on failures.
- Observability via stats exposed on the stats monitoring port.
- Works with Linux, *BSD, OS X and SmartOS (Solaris)
twemproxy Alternatives & Comparisons
What are some alternatives to twemproxy?
HAProxy (High Availability Proxy) is a free, very fast and reliable solution offering high availability, load balancing, and proxying for TCP and HTTP-based applications.
Mcrouter is a memcached protocol router for scaling memcached deployments. It's a core component of cache infrastructure at Facebook and Instagram where mcrouter handles almost 5 billion requests per second at peak.
Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.
Dynomite is a generic dynamo implementation that can be used with many different key-value pair storage engines. Currently these include Redis and Memcached. Dynomite supports multi-datacenter replication and is designed for high availability.