> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tensor9.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ElastiCache Serverless (Valkey/Redis)

> ElastiCache Serverless (Valkey/Redis) APIs with Cloud Adapter.

This page describes how ElastiCache Serverless (Valkey/Redis) maps to services in the environment where the application runs, including backend choices, supported operations and service-specific behavior.

## Supported environments

* Scaleway

Check the operation and capability tables for the behavior your application depends on. A supported environment does not imply that every operation of the origin service is available.

## How the backends compare

Each row compares a capability of ElastiCache Serverless (Valkey/Redis) with its adaptation on each backend.
A dash means this profile does not state the capability for that backend.

### Cloud Adapter

| Capability | ElastiCache Serverless (Valkey/Redis) | Scaleway |
| - | - | - |
| API coverage | full | high |

## On Scaleway

### Scaleway Managed Database for Redis

| Operation | Area | Support | Depth | Notes |
| - | - | - | - | - |
| BITCOUNT | Bitmaps | Supported | Full surface | - |
| BITFIELD | Bitmaps | Supported | Full surface | arbitrary-width integer ops |
| BITFIELD\_RO | Bitmaps | Supported | Full surface | read-only BITFIELD |
| BITOP | Bitmaps | Supported | Full surface | bitwise AND/OR/XOR/NOT |
| BITPOS | Bitmaps | Supported | Full surface | first set/clear bit |
| GETBIT | Bitmaps | Supported | Full surface | - |
| SETBIT | Bitmaps | Supported | Full surface | - |
| Backup / snapshot / restore | Durability | Partial | Most usage | not configurable through this mapping -- the resource exposes no backup schedule or retention, so Scaleway's own behaviour applies and the window you declared does not carry. |
| Persistence (RDB / AOF) | Durability | Partial | Most usage | not configurable through this mapping -- the resource exposes no persistence control, so Scaleway's own behaviour for Managed Redis applies rather than the policy you declared. |
| Search / JSON / modules (FT.\* / JSON.\*) | Extensions | Partial | Full surface | not configurable through this mapping. The engine version is PINNED at the single version Scaleway offers, so whatever that build includes is what you get; there is nothing to select between. |
| GEOADD | Geo | Supported | Full surface | - |
| GEODIST | Geo | Supported | Full surface | - |
| GEOHASH | Geo | Supported | Full surface | geohash strings |
| GEOPOS | Geo | Supported | Full surface | member coordinates |
| GEORADIUS | Geo | Supported | Full surface | deprecated radius query (use GEOSEARCH) |
| GEORADIUSBYMEMBER | Geo | Supported | Full surface | deprecated radius-by-member (use GEOSEARCH) |
| GEORADIUSBYMEMBER\_RO | Geo | Supported | Full surface | read-only deprecated radius-by-member |
| GEORADIUS\_RO | Geo | Supported | Full surface | read-only deprecated radius query |
| GEOSEARCH | Geo | Supported | Full surface | - |
| GEOSEARCHSTORE | Geo | Supported | Full surface | search + store result |
| HDEL | Hashes | Supported | Common | - |
| HEXISTS | Hashes | Supported | Most usage | - |
| HGET | Hashes | Supported | Common | - |
| HGETALL | Hashes | Supported | Common | - |
| HINCRBY | Hashes | Supported | Most usage | - |
| HINCRBYFLOAT | Hashes | Supported | Most usage | - |
| HKEYS | Hashes | Supported | Most usage | - |
| HLEN | Hashes | Supported | Most usage | - |
| HMGET | Hashes | Supported | Common | - |
| HMSET | Hashes | Supported | Full surface | deprecated alias of HSET |
| HRANDFIELD | Hashes | Supported | Full surface | - |
| HSET | Hashes | Supported | Common | - |
| HSETNX | Hashes | Supported | Most usage | set field if not exists |
| HSTRLEN | Hashes | Supported | Full surface | - |
| HVALS | Hashes | Supported | Most usage | - |
| PFADD | HyperLogLog | Supported | Full surface | - |
| PFCOUNT | HyperLogLog | Supported | Full surface | - |
| PFMERGE | HyperLogLog | Supported | Full surface | - |
| COPY | Keys & TTL | Supported | Full surface | copy key |
| DEL | Keys & TTL | Supported | Common | - |
| DUMP | Keys & TTL | Supported | Full surface | - |
| EXISTS | Keys & TTL | Supported | Common | - |
| EXPIRE | Keys & TTL | Supported | Common | - |
| EXPIREAT | Keys & TTL | Supported | Most usage | expire at unix time |
| EXPIRETIME | Keys & TTL | Supported | Most usage | absolute expiry time (s) |
| HSCAN | Keys & TTL | Supported | Most usage | cursor iteration |
| KEYS | Keys & TTL | Supported | Common | - |
| PERSIST | Keys & TTL | Supported | Common | - |
| PEXPIRE | Keys & TTL | Supported | Common | - |
| PEXPIREAT | Keys & TTL | Supported | Most usage | expire at ms unix time |
| PEXPIRETIME | Keys & TTL | Supported | Most usage | absolute expiry time (ms) |
| PTTL | Keys & TTL | Supported | Most usage | ms TTL |
| RANDOMKEY | Keys & TTL | Supported | Full surface | - |
| RENAME | Keys & TTL | Supported | Common | - |
| RENAMENX | Keys & TTL | Supported | Most usage | rename if target absent |
| RESTORE | Keys & TTL | Supported | Full surface | - |
| SCAN | Keys & TTL | Supported | Most usage | cursor iteration |
| SORT | Keys & TTL | Supported | Full surface | sort list/set/zset |
| SORT\_RO | Keys & TTL | Supported | Full surface | read-only SORT (replica-safe) |
| SSCAN | Keys & TTL | Supported | Most usage | cursor iteration |
| TOUCH | Keys & TTL | Supported | Full surface | bump last-access |
| TTL | Keys & TTL | Supported | Common | - |
| TYPE | Keys & TTL | Supported | Common | - |
| UNLINK | Keys & TTL | Supported | Most usage | async delete |
| ZSCAN | Keys & TTL | Supported | Most usage | cursor iteration |
| BLMOVE | Lists | Supported | Full surface | blocking move |
| BLMPOP | Lists | Supported | Full surface | blocking multi-list pop |
| BLPOP | Lists | Supported | Most usage | blocking pop |
| BRPOP | Lists | Supported | Most usage | blocking pop |
| BRPOPLPUSH | Lists | Supported | Full surface | blocking legacy move |
| LINDEX | Lists | Supported | Most usage | - |
| LINSERT | Lists | Supported | Most usage | insert before/after pivot |
| LLEN | Lists | Supported | Most usage | - |
| LMOVE | Lists | Supported | Full surface | atomic move between lists |
| LMPOP | Lists | Supported | Full surface | multi-list pop |
| LPOP | Lists | Supported | Common | - |
| LPOS | Lists | Supported | Full surface | index of matching element |
| LPUSH | Lists | Supported | Common | - |
| LPUSHX | Lists | Supported | Full surface | push only if list exists |
| LRANGE | Lists | Supported | Most usage | - |
| LREM | Lists | Supported | Most usage | - |
| LSET | Lists | Supported | Most usage | set by index |
| LTRIM | Lists | Supported | Most usage | - |
| RPOP | Lists | Supported | Common | - |
| RPOPLPUSH | Lists | Supported | Most usage | legacy atomic move |
| RPUSH | Lists | Supported | Common | - |
| RPUSHX | Lists | Supported | Full surface | push only if list exists |
| Eviction (maxmemory-policy) | Memory | Partial | Most usage | reachable through the cluster's engine settings map rather than as a dedicated field, so an eviction policy is expressible but is not kept across automatically -- set it deliberately. |
| Replication / HA / failover | Operations | Out of scope | Most usage | replica configuration on the origin is reported rather than mapped, for the same reason as cluster mode. You get a standalone cache, and the build says so. |
| PSUBSCRIBE | Pub/Sub | Supported | Most usage | - |
| PUBLISH | Pub/Sub | Supported | Most usage | - |
| PUBSUB | Pub/Sub | Supported | Most usage | introspect pub/sub state |
| PUNSUBSCRIBE | Pub/Sub | Supported | Most usage | unsubscribe from patterns |
| SUBSCRIBE | Pub/Sub | Supported | Most usage | - |
| UNSUBSCRIBE | Pub/Sub | Supported | Most usage | unsubscribe from channels |
| Admin / config / replication commands (CONFIG / DEBUG / SAVE / SLAVEOF / CLUSTER admin) | Restricted admin | Out of scope | Full surface | administrative access is the cluster's own user and password rather than the origin's; the emitted credentials are what your application must use. |
| EVAL | Scripting | Supported | Most usage | server-side Lua |
| EVALSHA | Scripting | Supported | Most usage | - |
| EVALSHA\_RO | Scripting | Supported | Most usage | read-only EVALSHA |
| EVAL\_RO | Scripting | Supported | Most usage | read-only EVAL (replica-safe) |
| SCRIPT | Scripting | Supported | Most usage | - |
| AUTH / ACL / RBAC | Security | Supported | Most usage | the cluster requires a user name and takes a password, so authenticated access carries. As with the managed databases, the emitted credentials are the cluster's own rather than the origin's. |
| Encryption at rest | Security | Partial | Most usage | not configurable through this mapping -- the resource exposes no at-rest encryption control, so Scaleway's own behaviour applies and a declared key or toggle does not carry. |
| Encryption in transit (TLS) | Security | Supported | Common | TLS in transit is a direct setting on the emitted cluster. |
| AUTH | Server & connection | Supported | Common | authenticate the connection |
| ECHO | Server & connection | Supported | Common | - |
| HELLO | Server & connection | Supported | Common | RESP3 handshake + AUTH/SETNAME |
| INFO | Server & connection | Supported | Common | - |
| PING | Server & connection | Supported | Common | - |
| QUIT | Server & connection | Supported | Full surface | close the connection (deprecated) |
| SADD | Sets | Supported | Common | - |
| SCARD | Sets | Supported | Common | - |
| SDIFF | Sets | Supported | Most usage | + SDIFFSTORE |
| SDIFFSTORE | Sets | Supported | Most usage | store difference |
| SINTER | Sets | Supported | Most usage | + SINTERSTORE |
| SINTERCARD | Sets | Supported | Full surface | intersection cardinality |
| SINTERSTORE | Sets | Supported | Most usage | store intersection |
| SISMEMBER | Sets | Supported | Common | - |
| SMEMBERS | Sets | Supported | Common | - |
| SMISMEMBER | Sets | Supported | Full surface | multi-membership test |
| SMOVE | Sets | Supported | Full surface | atomic move between sets |
| SPOP | Sets | Supported | Most usage | pop random member(s) |
| SRANDMEMBER | Sets | Supported | Most usage | random member(s) |
| SREM | Sets | Supported | Common | - |
| SUNION | Sets | Supported | Most usage | + SUNIONSTORE |
| SUNIONSTORE | Sets | Supported | Most usage | store union |
| Serverless / auto-scaling | Sizing | Out of scope | Most usage | your origin is SERVERLESS and the backend is not. Scaleway Managed Redis is a provisioned cluster with a node type you choose, so the capacity that scaled itself becomes a size someone has to pick -- the most important line on this card. |
| BZMPOP | Sorted sets | Supported | Full surface | blocking multi-key pop |
| BZPOPMAX | Sorted sets | Supported | Full surface | blocking pop highest |
| BZPOPMIN | Sorted sets | Supported | Full surface | blocking pop lowest |
| ZADD | Sorted sets | Supported | Common | - |
| ZCARD | Sorted sets | Supported | Common | - |
| ZCOUNT | Sorted sets | Supported | Most usage | count in score range |
| ZDIFF | Sorted sets | Supported | Full surface | + ZDIFFSTORE |
| ZDIFFSTORE | Sorted sets | Supported | Most usage | store difference |
| ZINCRBY | Sorted sets | Supported | Most usage | - |
| ZINTER | Sorted sets | Supported | Full surface | + ZINTERSTORE / ZINTERCARD |
| ZINTERCARD | Sorted sets | Supported | Full surface | intersection cardinality |
| ZINTERSTORE | Sorted sets | Supported | Most usage | store intersection |
| ZLEXCOUNT | Sorted sets | Supported | Full surface | count in lex range |
| ZMPOP | Sorted sets | Supported | Full surface | multi-key pop |
| ZMSCORE | Sorted sets | Supported | Full surface | multi-member scores |
| ZPOPMAX | Sorted sets | Supported | Most usage | pop highest score |
| ZPOPMIN | Sorted sets | Supported | Most usage | pop lowest score |
| ZRANDMEMBER | Sorted sets | Supported | Full surface | random member(s) |
| ZRANGE | Sorted sets | Supported | Most usage | - |
| ZRANGEBYLEX | Sorted sets | Supported | Full surface | lexicographic range |
| ZRANGEBYSCORE | Sorted sets | Supported | Most usage | - |
| ZRANGESTORE | Sorted sets | Supported | Full surface | store a range result |
| ZRANK | Sorted sets | Supported | Most usage | - |
| ZREM | Sorted sets | Supported | Common | - |
| ZREMRANGEBYLEX | Sorted sets | Supported | Full surface | remove by lex range |
| ZREMRANGEBYRANK | Sorted sets | Supported | Full surface | remove by rank range |
| ZREMRANGEBYSCORE | Sorted sets | Supported | Full surface | remove by score range |
| ZREVRANGE | Sorted sets | Supported | Most usage | descending range |
| ZREVRANGEBYLEX | Sorted sets | Supported | Full surface | descending lex range |
| ZREVRANGEBYSCORE | Sorted sets | Supported | Most usage | descending range by score |
| ZREVRANK | Sorted sets | Supported | Most usage | descending rank |
| ZSCORE | Sorted sets | Supported | Common | - |
| ZUNION | Sorted sets | Supported | Full surface | + ZUNIONSTORE |
| ZUNIONSTORE | Sorted sets | Supported | Most usage | store union |
| XACK | Streams | Supported | Full surface | - |
| XADD | Streams | Supported | Full surface | - |
| XAUTOCLAIM | Streams | Supported | Full surface | auto-claim idle pending |
| XCLAIM | Streams | Supported | Full surface | claim pending messages |
| XDEL | Streams | Supported | Full surface | delete entries |
| XGROUP | Streams | Supported | Full surface | consumer-group create/destroy/setid |
| XINFO | Streams | Supported | Full surface | stream/groups/consumers introspection |
| XLEN | Streams | Supported | Full surface | - |
| XPENDING | Streams | Supported | Full surface | pending-entries summary |
| XRANGE | Streams | Supported | Full surface | - |
| XREAD | Streams | Supported | Full surface | - |
| XREADGROUP | Streams | Supported | Full surface | consumer-group read |
| XREVRANGE | Streams | Supported | Full surface | reverse range |
| XSETID | Streams | Supported | Full surface | set last-id |
| XTRIM | Streams | Supported | Full surface | trim to maxlen/minid |
| APPEND | Strings | Supported | Most usage | - |
| DECR | Strings | Supported | Common | - |
| DECRBY | Strings | Supported | Most usage | - |
| GET | Strings | Supported | Common | - |
| GETDEL | Strings | Supported | Most usage | get and delete |
| GETEX | Strings | Supported | Most usage | get and set expiry |
| GETRANGE | Strings | Supported | Most usage | - |
| GETSET | Strings | Supported | Common | - |
| INCR | Strings | Supported | Common | - |
| INCRBY | Strings | Supported | Common | - |
| INCRBYFLOAT | Strings | Supported | Most usage | - |
| MGET | Strings | Supported | Common | - |
| MSET | Strings | Supported | Common | - |
| MSETNX | Strings | Supported | Most usage | multi-set if none exist |
| PSETEX | Strings | Supported | Most usage | set with ms expiry |
| SET | Strings | Supported | Common | - |
| SETEX | Strings | Supported | Common | set with expiry |
| SETNX | Strings | Supported | Common | set if not exists |
| SETRANGE | Strings | Supported | Most usage | - |
| STRLEN | Strings | Supported | Most usage | - |
| SUBSTR | Strings | Supported | Full surface | deprecated alias of GETRANGE |
| Cluster mode (slot topology) | Topology | Out of scope | Most usage | a standalone instance is emitted -- cluster\_size is 1. Scaleway's accepted values for a sharded cluster were deliberately not guessed: this mapping transcribes a value that constrains an apply from a live read or does not emit it at all, and measuring sharded sizes means provisioning one. |
| DISCARD | Transactions | Supported | Most usage | - |
| EXEC | Transactions | Supported | Most usage | - |
| MULTI | Transactions | Supported | Most usage | - |
| UNWATCH | Transactions | Supported | Most usage | forget all WATCHed keys |
| WATCH | Transactions | Supported | Most usage | optimistic lock |

## Install and run

The documentation and SLAs are public. Downloading and running the Cloud Adapter binary requires an entitled customer account. Set `T9_API_KEY` as described in [Install and Authenticate](https://docs.tensor9.com/cloud-adapter-early-access/getting-started/install-and-authenticate.md), then list the adapters your account may use with this origin:

```sh theme={null}
tensor9 adapt svc list \
  -origin aws::1.0.0::elasticache::valkey::serverless
```

The result is limited to directed mappings for this origin that your account is entitled to use. Use a returned backend identifier when configuring the adapter or investigating a request.

Request binary access from [hello@tensor9.com](mailto:hello@tensor9.com) if your account does not yet include this direction.

## Existing data and credentials

Selecting a backend does not copy existing data, credentials or access policies. Plan and verify migration separately before changing an application's endpoint. Do not assume an identifier, credential or encrypted value from the origin service works unchanged on the target.

## Configure, tune and debug

Start with [setup](https://docs.tensor9.com/cloud-adapter-early-access/getting-started/overview.md) and [configuration](https://docs.tensor9.com/cloud-adapter-early-access/configuration/overview.md). Use [tuning](https://docs.tensor9.com/cloud-adapter-early-access/tuning/overview.md) to understand supported request tags, [debugging](https://docs.tensor9.com/cloud-adapter-early-access/debugging/overview.md) to investigate a request, and [High Fidelity Cloud Emulators](https://docs.tensor9.com/cloud-adapter-early-access/local-testing/overview.md) to validate a bounded reproduction.

For requests that go through an entitled service adapter, use [tensor9 explain](https://docs.tensor9.com/cloud-adapter-early-access/debugging/explain.md) and [x-t9-explain](https://docs.tensor9.com/cloud-adapter-early-access/debugging/response-headers.md) to inspect the selected mapping.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.