搜索快捷键 cmd + k | ctrl + k
redis

DuckDB 的 Redis 兼容客户端

维护者:lmangani, gigapi

安装和加载

INSTALL redis FROM community;
LOAD redis;

示例

-- 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', '[email protected]', '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;

关于 redis

DuckDB Redis 客户端扩展

此扩展为 DuckDB 提供 Redis 兼容的客户端功能

实验性:使用风险自负!

功能

当前支持的 Redis 操作

  • 字符串操作:GET, SET, MGET
  • 哈希操作:HGET, HSET, HGETALL, HSCAN, HSCAN_OVER_SCAN
  • 列表操作:LPUSH, LRANGE, LRANGE_TABLE
  • 键操作:DEL, EXISTS, TYPE, SCAN, KEYS
  • 批处理和发现操作:SCAN, HSCAN_OVER_SCAN, KEYS

速查:可用函数

函数 类型 描述
redis_get(key, secret) 标量 获取字符串键的值
redis_set(key, value, secret) 标量 设置字符串键的值
redis_mget(keys_csv, secret) 标量 获取多个键的值(逗号分隔)
redis_hget(key, field, secret) 标量 获取哈希字段的值
redis_hset(key, field, value, secret) 标量 设置哈希字段的值
redis_lpush(key, value, secret) 标量 将值推送到列表
redis_lrange(key, start, stop, secret) 标量 从列表获取范围(逗号分隔)
redis_del(key, secret) 标量 删除键(如果已删除则返回 TRUE)
redis_exists(key, secret) 标量 检查键是否存在(如果存在则返回 TRUE)
redis_type(key, secret) 标量 获取键的类型
redis_scan(cursor, pattern, count, secret) 标量 扫描键(返回 cursor:keys_csv)
redis_hscan(key, cursor, pattern, count, secret) 标量 扫描哈希中的字段
redis_keys(pattern, secret) 列出所有匹配模式的键
redis_hgetall(key, secret) 列出哈希中的所有字段和值
redis_lrange_table(key, start, stop, secret) 将列表中的元素列出为行
redis_hscan_over_scan(scan_pattern, hscan_pattern, count, secret) 对于所有匹配 scan_pattern 的键,使用 hscan_pattern 执行 HSCAN,返回 (key, field, value) 行

新增函数

函数名 函数类型 描述 注释 示例
redis_del 标量 NULL NULL  
redis_exists 标量 NULL NULL  
redis_get 标量 NULL NULL  
redis_hget 标量 NULL NULL  
redis_hgetall table NULL NULL  
redis_hscan 标量 NULL NULL  
redis_hscan_over_scan table NULL NULL  
redis_hset 标量 NULL NULL  
redis_keys table NULL NULL  
redis_lpush 标量 NULL NULL  
redis_lrange 标量 NULL NULL  
redis_lrange_table table NULL NULL  
redis_mget 标量 NULL NULL  
redis_scan 标量 NULL NULL  
redis_set 标量 NULL NULL  
redis_type 标量 NULL NULL