[id='server-endpoints_{context}']
= {brandname} Server protocols

== Hot Rod

Hot Rod is a binary TCP client-server protocol designed to provide faster data
access and improved performance in comparison to text-based protocols.

{brandname} provides Hot Rod client libraries in Java, C++, C#, Node.js and other programming languages.

.Topology caches

{brandname} uses topology caches to provide clients with cluster views.
Topology caches contain entries that map internal JGroups transport addresses
to exposed Hot Rod endpoints.

When clients send requests, {brandname} servers compare the topology ID in
request headers with the topology ID from the cache. {brandname} servers send
new topology views if clients have older topology IDs.

Cluster topology views allow Hot Rod clients to immediately detect when nodes
join and leave, which enables dynamic load balancing and failover.

In distributed cache modes, the consistent hashing algorithm also makes it
possible to route Hot Rod client requests directly to primary owners.

[role="_additional-resources"]
.Additional resources
* link:{hotrod_docs}[Hot Rod client documentation]

== REST

{brandname} exposes a RESTful interface that allows HTTP clients to access
data, monitor and maintain clusters, and perform administrative operations.

You can use standard HTTP load balancers to provide clients with load
balancing and failover capabilities. However, HTTP load balancers maintain
static cluster views and require manual updates when cluster topology changes
occur.

[role="_additional-resources"]
.Additional resources
* link:{rest_docs}[REST API documentation]

== RESP

{brandname} provides an implementation of the link:https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md[RESP3] protocol
used by link:https://redis.io/[Redis], link:https://valkey.io/[Valkey], link:https://aws.amazon.com/elasticache/Elasticache[Elasticache] and others.

The RESP connector supports a large subset of the Redis commands.

[role="_additional-resources"]
.Additional resources
* link:{resp_docs}[RESP endpoint documentation]

== Memcached

{brandname} provides an implementation of the Memcached text and binary protocols for
remote client access.

The {brandname} Memcached endpoint supports clustering with replicated and
distributed cache modes.

There are some Memcached client implementations, such as the link:https://metacpan.org/pod/Cache::Memcached[Cache::Memcached]
Perl client, that can offer load balancing and failover detection capabilities
with static lists of {brandname} server addresses that require manual updates
when cluster topology changes occur.

[role="_additional-resources"]
.Additional resources
* link:{memcached_docs}[Memcached endpoint documentation]
