DuckDB 的 Redis 兼容客户端
安装和加载
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 |