> I've implemented a completely new Redis FDW module which has little to do with > github.com/pg-redis-fdw/redis_fdw; although I did take some inspiration from in > on how the tables were to be designed but most I got from looking at the > oracle-fdw. > > My redis-fdw implementation supports read and write to the Redis backend, so > you can do insert, update, and delete. e.g. you can define a hash table as:
is it possible to write multiple row's into the redis? something like
insert into foreign_redis_table select * from big_table
Thanks for pointing this out. I had a small bug which didn't let it succeed, but now it's been fixed and committed; I've also added a bulkdata.sql test script in the code to show an example.
Anyway, thx, compiled and installed (just for fun, i'm not familiar with redis, and i'm not a coder)
Redis is great for session management as it allows you to set an expiry for each key. So by using redis_fdw, you don't need to do multiple queries to determine of the session is still valid. e.g.:
-- use a string (key-value) dataset for user sessions CREATE FOREIGN TABLE rsessions( sessid TEXT, value TEXT, expiry INT ) SERVER localredis OPTIONS (tabletype 'string'); ALTER FOREIGN TABLE rsessions ALTER COLUMN sessid OPTIONS (ADD param 'key');
-- a user table in postgres, can contain a whole bunch of other fields. CREATE TEMP TABLE users ( userid INT, username TEXT, sessid TEXT );
-- -- get user's details at the same time as determining if they're session is still valid -- WITH u AS (SELECT * FROM users WHERE username = 'foo') SELECT u.*, r.value, r.expiry FROM rsessions r, u WHERE r.sessid = (SELECT u.sessid FROM u);
If the user's session is still valid then a row will be returned (Redis automatically destroys the key on expiry).
-- -- to reset the expiry timeout for the user -- UPDATE rsessions SET expiry = 40 WHERE sessid = $1;