Search Shortcut cmd + k | ctrl + k

Redis compatible Client for DuckDB

Maintainer(s): lmangani, gigapi, rustyconover

Compatibility Matrix

This table covers all DuckDB releases that have not reached end-of-life, including LTS releases, and shows the 2 most recent patch releases of each. Older patch releases are not listed, but the extension may be available for them as well.

Platform 1.4.4 1.4.5 1.5.5 1.5.6 2.0.0
Linux AMD64
Linux ARM64
macOS AMD64
macOS ARM64
Windows AMD64
Windows ARM64
WebAssembly

Installing and Loading

INSTALL redis FROM community;
LOAD redis;

Example

-- Create a local Redis connection secret
CREATE SECRET IF NOT EXISTS redis (
        TYPE redis,
        PROVIDER config,
        host 'localhost',
        port '6379',
        password 'optional_password'
    );

-- Create a Redis cloud connection secret
CREATE SECRET IF NOT EXISTS redis (
        TYPE redis,
        PROVIDER config,
        host 'redis-1234.ec2.redns.redis-cloud.com',
        port '16959',
        password 'xxxxxx'
    );

-- Set a value
SELECT redis_set('user:1', 'John Doe', 'redis') as result;

-- Get a value
SELECT redis_get('user:1', 'redis') as user_name;

-- Set hash fields
SELECT redis_hset('user:1', 'email', 'john@example.com', 'redis');
SELECT redis_hset('user:1', 'age', '30', 'redis');

-- Get hash field
SELECT redis_hget('user:1', 'email', 'redis') as email;

-- Push items to list
SELECT redis_lpush('mylist', 'first_item', 'redis');
SELECT redis_lpush('mylist', 'second_item', 'redis');

-- Get range from list (returns comma-separated values)
-- Get all items (0 to -1 means start to end)
SELECT redis_lrange('mylist', 0, -1, 'redis') as items;

-- Get first 5 items
SELECT redis_lrange('mylist', 0, 4, 'redis') as items;

-- Push multiple items
WITH items(value) AS (
    VALUES ('item1'), ('item2'), ('item3')
)
SELECT redis_lpush('mylist', value, 'redis')
FROM items;

About redis

For more information regarding usage, see the documentation.

Added Functions

function_name function_type description comment examples
redis_del scalar Delete a key from Redis. Returns true if the key was deleted, false if it did not exist. NULL [SELECT redis_del('mykey', 'my_redis_secret');]
redis_exists scalar Check if a key exists in Redis. Returns true if the key exists, false otherwise. NULL [SELECT redis_exists('mykey', 'my_redis_secret');]
redis_get scalar Get the value of a key from Redis. Returns the value associated with the specified key, or an empty string if the key does not exist. NULL [SELECT redis_get('mykey', 'my_redis_secret');, SELECT redis_get(key_column, 'my_redis_secret') FROM my_table;]
redis_hget scalar Get the value of a field in a Redis hash. Returns the value associated with the field, or an empty string if the field does not exist. NULL [SELECT redis_hget('myhash', 'field1', 'my_redis_secret');]
redis_hgetall table Get all fields and values from a Redis hash. Returns a table with 'field' and 'value' columns. NULL [SELECT * FROM redis_hgetall('myhash', 'my_redis_secret');]
redis_hscan scalar Incrementally iterate over fields in a Redis hash matching a pattern. Returns 'cursor:field1=value1,field2=value2,…'. NULL [SELECT redis_hscan('myhash', '0', '*', 100, 'my_redis_secret');]
redis_hscan_over_scan table Scan all hash keys matching a pattern, then scan fields within each hash. Returns a table with 'key', 'field', and 'value' columns. Useful for iterating over multiple hashes at once. NULL [SELECT * FROM redis_hscan_over_scan('user:', '', 100, 'my_redis_secret');]
redis_hset scalar Set the value of a field in a Redis hash. Returns the number of fields that were added (0 if the field existed and was updated, 1 if it was created). NULL [SELECT redis_hset('myhash', 'field1', 'value1', 'my_redis_secret');]
redis_keys table Scan all keys in Redis matching a pattern. Returns a table with a single 'key' column containing all matching keys. NULL [SELECT * FROM redis_keys('', 'my_redis_secret');, SELECT * FROM redis_keys('user:', 'my_redis_secret');]
redis_lpush scalar Prepend a value to a Redis list. Returns the length of the list after the push operation. NULL [SELECT redis_lpush('mylist', 'value1', 'my_redis_secret');]
redis_lrange scalar Get a range of elements from a Redis list. Returns elements as a comma-separated string. Use 0 for start and -1 for stop to get all elements. NULL [SELECT redis_lrange('mylist', 0, -1, 'my_redis_secret');, SELECT redis_lrange('mylist', 0, 10, 'my_redis_secret');]
redis_lrange_table table Get a range of elements from a Redis list as a table. Returns a table with 'index' and 'value' columns. NULL [SELECT * FROM redis_lrange_table('mylist', 0, -1, 'my_redis_secret');]
redis_mget scalar Get the values of multiple keys from Redis. Keys should be comma-separated. Returns values as a comma-separated string. NULL [SELECT redis_mget('key1,key2,key3', 'my_redis_secret');]
redis_scan scalar Incrementally iterate over keys in Redis matching a pattern. Returns 'cursor:key1,key2,…'. Use cursor '0' to start, and continue until cursor returns '0'. NULL [SELECT redis_scan('0', '', 100, 'my_redis_secret');, SELECT redis_scan('0', 'user:', 10, 'my_redis_secret');]
redis_set scalar Set the value of a key in Redis. Returns 'OK' on success. NULL [SELECT redis_set('mykey', 'myvalue', 'my_redis_secret');]
redis_type scalar Get the type of a key in Redis. Returns the type as a string (string, list, set, zset, hash, stream) or 'none' if the key does not exist. NULL [SELECT redis_type('mykey', 'my_redis_secret');]

Overloaded Functions

This extension does not add any function overloads.

Added Types

This extension does not add any types.

Added Settings

This extension does not add any settings.