# Using the RESP protocol endpoint with Infinispan

Infinispan Server includes an endpoint that implements the RESP3 protocol and allows you to interact with remote caches using Redis clients.

## 1. Using the RESP endpoint

Infinispan Server includes an experimental module that implements the RESP3 protocol. The RESP endpoint allows Redis clients to connect to one or more one or several Infinispan-backed RESP servers and perform cache operations.

### 1.1. Enabling the RESP endpoint

Add the `resp-connector` to Infinispan Server configuration to enable the RESP endpoint. You can enable the RESP endpoint with:

- Standalone Infinispan Server deployments, exactly like standalone Redis, where each server instance runs independently of each other.

- Clustered Infinispan Server deployments, where server instances replicate or distribute data between each other. Clustered deployments provides clients with failover capabilities.

Prerequisites

- Install Infinispan Server.

Procedure

1. Open your Infinispan Server configuration for editing.

2. Add cache configuration to the `cache-container` section if required.

   Cache configuration cannot enable capabilities that violate the RESP protocol. For example, specifying expiration values in a cache for the RESP endpoint results in a fatal error at startup.

   | Configure your cache with Protobuf encoding if you want to view cache entries in the Infinispan Console (`encoding media-type="application/x-protostream"`).

3. Add an `endpoint` declaration to your configuration.

4. Add the `resp-connector` element and specify the name of the cache to use with the RESP connector with the `cache` attribute.

   You can use only one cache with the RESP endpoint.

5. Declare the security realm to use with the RESP endpoint with the `security-realm` attribute, if required.

6. Ensure that the endpoint declaration also adds a Hot Rod and REST connector.

7. Save the changes to your configuration.

Verification

When you start Infinispan Server check for the following log message:

    [org.infinispan.SERVER] ISPN080018: Started connector Resp (internal)

You can now connect to the RESP endpoint with a Redis client. For example, with the Redis CLI you can do the following to add an entry to the cache:

    $ redis-cli -p 11222 --user username --pass password
    127.0.0.1:11222> SET k v
    OK
    127.0.0.1:11222> GET k
    "v"
    127.0.0.1:11222> quit

##### RESP endpoint configuration

XML

    <endpoints>
      <endpoint socket-binding="default" security-realm="default">
        <resp-connector cache="mycache" />
        <hotrod-connector />
        <rest-connector/>
      </endpoint>
    </endpoints>

JSON

    {
      "server": {
        "endpoints": {
          "endpoint": {
            "socket-binding": "default",
            "security-realm": "default",
            "resp-connector": {
              "cache": "mycache"
            },
            "hotrod-connector": {},
            "rest-connector": {}
          }
        }
      }
    }

YAML

    server:
      endpoints:
        endpoint:
          socketBinding: "default"
          securityRealm: "default"
          respConnector:
            cache: "mycache"
          hotrodConnector: ~
          restConnector: ~

### 1.2. Redis commands

The Infinispan RESP endpoint implements the following Redis commands:

- AUTH

- DECR

- DEL

- ECHO

- GET

- HELLO

- INCR

- MGET

- MSET

- PING

- PUBLISH

- QUIT

- RESET

- SET

- SUBSCRIBE

- UNSUBSCRIBE