docs/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-redis-pubsub.md

4.3 KiB

type title linkTitle description
docs Redis Streams Redis Streams Detailed documentation on the Redis Streams pubsub component

Component format

To setup Redis Streams pubsub create a component of type pubsub.redis. See [this guide]({{< ref "howto-publish-subscribe.md#step-1-setup-the-pubsub-component" >}}) on how to create and apply a pubsub configuration.

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: redis-pubsub
  namespace: default
spec:
  type: pubsub.redis
  version: v1
  metadata:
  - name: redisHost
    value: localhost:6379
  - name: redisPassword
    value: "KeFg23!"
  - name: consumerID
    value: "myGroup"
  - name: enableTLS
    value: "false"

{{% alert title="Warning" color="warning" %}} The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described [here]({{< ref component-secrets.md >}}). {{% /alert %}}

Spec metadata fields

Field Required Details Example
redisHost Y Connection-string for the redis host localhost:6379, redis-master.default.svc.cluster.local:6379
redisPassword Y Password for Redis host. No Default. Can be secretKeyRef to use a secret reference "", "KeFg23!"
consumerID N The consumer group ID "myGroup"
enableTLS N If the Redis instance supports TLS with public certificates, can be configured to be enabled or disabled. Defaults to "false" "true", "false"

Create a Redis instance

Dapr can use any Redis instance - containerized, running on your local dev machine, or a managed cloud service, provided the version of Redis is 5.0.0 or later.

{{< tabs "Self-Hosted" "Kubernetes" "AWS" "GCP" "Azure">}}

{{% codetab %}} The Dapr CLI will automatically create and setup a Redis Streams instance for you. The Redis instance will be installed via Docker when you run dapr init, and the component file will be created in default directory. ($HOME/.dapr/components directory (Mac/Linux) or %USERPROFILE%\.dapr\components on Windows). {{% /codetab %}}

{{% codetab %}} You can use Helm to quickly create a Redis instance in our Kubernetes cluster. This approach requires Installing Helm.

  1. Install Redis into your cluster.

    helm repo add bitnami https://charts.bitnami.com/bitnami
    helm install redis bitnami/redis
    
  2. Run kubectl get pods to see the Redis containers now running in your cluster.

  3. Add redis-master:6379 as the redisHost in your redis.yaml file. For example:

        metadata:
        - name: redisHost
          value: redis-master:6379
    
  4. Next, we'll get our Redis password, which is slightly different depending on the OS we're using:

    • Windows: Run kubectl get secret --namespace default redis -o jsonpath="{.data.redis-password}" > encoded.b64, which will create a file with your encoded password. Next, run certutil -decode encoded.b64 password.txt, which will put your redis password in a text file called password.txt. Copy the password and delete the two files.

    • Linux/MacOS: Run kubectl get secret --namespace default redis -o jsonpath="{.data.redis-password}" | base64 --decode and copy the outputted password.

    Add this password as the redisPassword value in your redis.yaml file. For example:

        - name: redisPassword
          value: "lhDOkwTlp0"
    

{{% /codetab %}}

{{% codetab %}} AWS Redis {{% /codetab %}}

{{% codetab %}} GCP Cloud MemoryStore {{% /codetab %}}

{{% codetab %}} Azure Redis {{% /codetab %}}

{{< /tabs >}}

{{% alert title="Note" color="primary" %}} The Dapr CLI automatically deploys a local redis instance in self hosted mode as part of the dapr init command. {{% /alert %}}

  • [Basic schema for a Dapr component]({{< ref component-schema >}})
  • Read [this guide]({{< ref "howto-publish-subscribe.md#step-2-publish-a-topic" >}}) for instructions on configuring pub/sub components
  • [Pub/Sub building block]({{< ref pubsub >}})