Redis Distributed Lock
Type: lock.redis
Status: alpha
Reference: https://docs.dapr.io/reference/components-reference/supported-locks/redis-lock/
Example
apiVersion: cra.diagrid.io/v1beta1
kind: Component
metadata:
name: <name>
spec:
type: lock.redis
version: v1
metadata:
# The Redis password (Optional)
#- name: redisPassword
# value: "redis-password"
# The Redis username (Optional)
#- name: redisUsername
# value: "redis-user"
# Connection-string for the redis host. If "redisType" is "cluster" it can be multiple hosts separated by commas or just a single host. The port can be included in the host string (e.g. "host:6379") or provided separately via "redisPort".
- name: redisHost
value: "mycompany.com:6379"
# Dial timeout duration (Optional)
#- name: dialTimeout
# value: "5s"
# Whether to enable TLS encryption (Optional)
#- name: enableTLS
# value: "false"
# Whether to enable failover mode (for Sentinel) (Optional)
#- name: failover
# value: "false"
# Idle check frequency (Optional)
#- name: idleCheckFrequency
# value: "1m"
# Idle timeout duration (Optional)
#- name: idleTimeout
# value: "5m"
# Skip TLS certificate verification (insecure). Only use for testing. (Optional)
#- name: insecureSkipTLSVerify
# value: "false"
# Prefix added to keys in the state store. (Optional)
#- name: keyPrefix
# value: "appid"
# Maximum connection age (Optional)
#- name: maxConnAge
# value: "30m"
# Maximum number of retries when attempting to acquire a lock (Optional)
#- name: maxRetries
# value: "3"
# Maximum backoff duration between retries (Optional)
#- name: maxRetryBackoff
# value: "2s"
# Minimum idle connections (Optional)
#- name: minIdleConns
# value: "0"
# Connection pool size (Optional)
#- name: poolSize
# value: "10"
# Connection pool timeout (Optional)
#- name: poolTimeout
# value: "4s"
# Processing timeout for lock ownership (Optional)
#- name: processingTimeout
# value: "60s"
# Read timeout duration (Optional)
#- name: readTimeout
# value: "3s"
# Redeliver interval for re-attempting lock acquisition (Optional)
#- name: redeliverInterval
# value: "15s"
# The Redis database number (Optional)
#- name: redisDB
# value: "0"
# Maximum Redis retries (Optional)
#- name: redisMaxRetries
# value: "3"
# Maximum Redis retry interval (Optional)
#- name: redisMaxRetryInterval
# value: "512ms"
# Minimum Redis retry interval (Optional)
#- name: redisMinRetryInterval
# value: "8ms"
# The Redis port. Optional: if "redisHost" already contains a port, this field must either match or be omitted. When "redisHost" does not include a port and this field is not set, the default Redis port 6379 is used. (Optional)
#- name: redisPort
# value: "6379"
# The Redis type (Optional)
#- name: redisType
# value: "node"
# The Sentinel master name (used if redisType is 'sentinel') (Optional)
#- name: sentinelMasterName
# value: "mymaster"
# Whether to use Entra ID for authentication (Optional)
#- name: useEntraID
# value: "false"
# Write timeout duration (Optional)
#- name: writeTimeout
# value: "3s"
Authentication profiles
Available authentication profiles:
-
Password Authentication
-
Sentinel Authentication
-
TLS Authentication
-
OIDC private_key_jwt
Password Authentication
Authenticate using Redis password.
redisPassword
The Redis password
Example value: redis-password
redisUsername
The Redis username
Example value: redis-user
Sentinel Authentication
Authenticate using Redis Sentinel password.
sentinelPassword
The Redis Sentinel password
Example value: sentinel-password
sentinelUsername
The Redis Sentinel username
Example value: sentinel-user
TLS Authentication
Authenticate using Redis TLS certificate.
clientCert
The Redis client certificate
Example value:
-----BEGIN CERTIFICATE-----\nXXX...
clientKey
The Redis client key
Example value:
-----BEGIN PRIVATE KEY-----\nXXX...
OIDC private_key_jwt
Authenticate using OpenID Connect with the private_key_jwt client authentication method (RFC 7523). An OAuth2 access token is obtained from the identity provider using a signed JWT client assertion and used as the password for the Redis AUTH command. The token is refreshed in the background before it expires.
oidcClientAssertionCert (string)
Required - PEM-encoded X.509 certificate paired with the client assertion signing key. Use secretKeyRef for secret reference.
Example value: -----BEGIN CERTIFICATE-----\n...
oidcClientAssertionKey (string)
Required - PEM-encoded RSA private key used to sign the client assertion. Use secretKeyRef for secret reference.
Example value: -----BEGIN PRIVATE KEY-----\n...
oidcClientID (string)
Required - The OAuth2 client ID that has been provisioned in the identity provider.
Example value: my-client-id
oidcTokenEndpoint (string)
Required - URL of the OAuth2 identity provider access token endpoint.
Example value: https://identity.example.com/v1/token
oidcAudience (string)
Overrides the JWT client assertion audience (aud). Defaults to the token endpoint URL.
Example value: https://identity.example.com/realms/local
oidcCACert (string)
PEM-encoded CA certificate used to verify the TLS connection to the token endpoint. This is distinct from the TLS configuration of the Redis connection itself.
Example value: -----BEGIN CERTIFICATE-----\n...
oidcKid (string)
The JWT key ID (kid) header to use for the client assertion, when required by the identity provider (for example, the thumbprint of the client certificate).
Example value: 1234567890
oidcResource (string)
Optional OAuth2 resource parameter to include in the token request when required by the identity provider.
Example value: URI:RS-12345-API
oidcScopes (string)
Comma-delimited list of OAuth2/OIDC scopes to request with the access token. Although not required, this field is recommended.
Default value: openid
Example value: openid,redis-prod
redisUsername (string)
Username to pass to the Redis AUTH command together with the access token. When omitted, the token is sent using the 1-argument AUTH <token> form (authenticating as the default user), accepted by the widest range of RESP-compatible auth layers. Set a username to use the 2-argument AUTH <username> <token> (ACL) form.
Example value: my-user
useOIDC (bool)
If set to true, enables OIDC private_key_jwt authentication. Must not be combined with "redisPassword" or "useEntraID".
Default value: false
Example value: true
Metadata
redisHost (string)
Required - Connection-string for the redis host. If "redisType" is "cluster" it can be multiple hosts separated by commas or just a single host. The port can be included in the host string (e.g. "host:6379") or provided separately via "redisPort".
Example value: mycompany.com:6379
dialTimeout
Dial timeout duration
Default value: 5s
Example value: 5s
enableTLS (bool)
Whether to enable TLS encryption
Default value: false
Example value: false
failover (bool)
Whether to enable failover mode (for Sentinel)
Default value: false
Example value: false
idleCheckFrequency
Idle check frequency
Default value: 1m
Example value: 1m
idleTimeout
Idle timeout duration
Default value: 5m
Example value: 5m
insecureSkipTLSVerify (bool)
Skip TLS certificate verification (insecure). Only use for testing.
Default value: false
Example value: false
keyPrefix (string)
Prefix added to keys in the state store.
Default value: appid
Example value: appid
Allowed values:
-
appid
-
name
-
none
maxConnAge
Maximum connection age
Default value: 30m
Example value: 30m
maxRetries
Maximum number of retries when attempting to acquire a lock
Default value: 3
Example value: 3
maxRetryBackoff
Maximum backoff duration between retries
Default value: 2s
Example value: 2s
minIdleConns
Minimum idle connections
Default value: 0
Example value: 0
poolSize
Connection pool size
Default value: 10
Example value: 10
poolTimeout
Connection pool timeout
Default value: 4s
Example value: 4s
processingTimeout
Processing timeout for lock ownership
Default value: 60s
Example value: 60s
readTimeout
Read timeout duration
Default value: 3s
Example value: 3s
redeliverInterval
Redeliver interval for re-attempting lock acquisition
Default value: 15s
Example value: 15s
redisDB
The Redis database number
Default value: 0
Example value: 0
redisMaxRetries
Maximum Redis retries
Default value: 3
Example value: 3
redisMaxRetryInterval
Maximum Redis retry interval
Default value: 512ms
Example value: 512ms
redisMinRetryInterval
Minimum Redis retry interval
Default value: 8ms
Example value: 8ms
redisPort (string)
The Redis port. Optional: if "redisHost" already contains a port, this field must either match or be omitted. When "redisHost" does not include a port and this field is not set, the default Redis port 6379 is used.
Example value: 6379
redisType
The Redis type
Default value: node
Example value: node
Allowed values:
-
node
-
cluster
-
sentinel
sentinelMasterName
The Sentinel master name (used if redisType is 'sentinel')
Example value: mymaster
useEntraID (bool)
Whether to use Entra ID for authentication
Default value: false
Example value: false
writeTimeout
Write timeout duration
Default value: 3s
Example value: 3s