redis
Redis-kompatibler Client für DuckDB
Installation und Laden
INSTALL redis FROM community;LOAD redis;Beispiel
-- Create a local Redis connection secretCREATE SECRET IF NOT EXISTS redis ( TYPE redis, PROVIDER config, host 'localhost', port '6379', password 'optional_password' );
-- Create a Redis cloud connection secretCREATE SECRET IF NOT EXISTS redis ( TYPE redis, PROVIDER config, host 'redis-1234.ec2.redns.redis-cloud.com', port '16959', password 'xxxxxx' );
-- Set a valueSELECT redis_set('user:1', 'John Doe', 'redis') as result;
-- Get a valueSELECT redis_get('user:1', 'redis') as user_name;
-- Set hash fieldsSELECT redis_hset('user:1', 'email', 'john@example.com', 'redis');SELECT redis_hset('user:1', 'age', '30', 'redis');
-- Get hash fieldSELECT redis_hget('user:1', 'email', 'redis') as email;
-- Push items to listSELECT 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 itemsSELECT redis_lrange('mylist', 0, 4, 'redis') as items;
-- Push multiple itemsWITH items(value) AS ( VALUES ('item1'), ('item2'), ('item3'))SELECT redis_lpush('mylist', value, 'redis')FROM items;Über redis
DuckDB-Redis-Client-Erweiterung
Diese Erweiterung stellt Redis-kompatible Client-Funktionen für DuckDB bereit
Experimentell: VERWENDUNG AUF EIGENE GEFAHR!
Funktionen
Derzeit unterstützte Redis-Operationen:
- String-Operationen:
GET,SET,MGET - Hash-Operationen:
HGET,HSET,HGETALL,HSCAN,HSCAN_OVER_SCAN - Listen-Operationen:
LPUSH,LRANGE,LRANGE_TABLE - Schlüssel-Operationen:
DEL,EXISTS,TYPE,SCAN,KEYS - Batch- und Discovery-Operationen:
SCAN,HSCAN_OVER_SCAN,KEYS
Kurzreferenz: Verfügbare Funktionen
| Function | Type | Description |
|---|---|---|
redis_get(key, secret) |
Scalar | Get value of a string key |
redis_set(key, value, secret) |
Scalar | Set value of a string key |
redis_mget(keys_csv, secret) |
Scalar | Get values for multiple keys (comma-separated) |
redis_hget(key, field, secret) |
Scalar | Get value of a hash field |
redis_hset(key, field, value, secret) |
Scalar | Set value of a hash field |
redis_lpush(key, value, secret) |
Scalar | Push value to a list |
redis_lrange(key, start, stop, secret) |
Scalar | Get range from a list (comma-separated) |
redis_del(key, secret) |
Scalar | Delete a key (returns TRUE if deleted) |
redis_exists(key, secret) |
Scalar | Check if a key exists (returns TRUE if exists) |
redis_type(key, secret) |
Scalar | Get the type of a key |
redis_scan(cursor, pattern, count, secret) |
Scalar | Scan keys (returns cursor:keys_csv) |
redis_hscan(key, cursor, pattern, count, secret) |
Scalar | Scan fields in a hash |
redis_keys(pattern, secret) |
Table | List all keys matching a pattern |
redis_hgetall(key, secret) |
Table | List all fields and values in a hash |
redis_lrange_table(key, start, stop, secret) |
Table | List elements in a list as rows |
redis_hscan_over_scan(scan_pattern, hscan_pattern, count, secret) |
Table | For all keys matching scan_pattern, HSCAN with hscan_pattern, return (key, field, value) rows |
Hinzugefügte Funktionen
| 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’);] |
Überladene Funktionen
Diese Erweiterung fügt keine Funktionsüberladungen hinzu.
Hinzugefügte Typen
Diese Erweiterung fügt keine Typen hinzu.
Hinzugefügte Einstellungen
Diese Erweiterung fügt keine Einstellungen hinzu.