From: | Andreas Kretschmer <akretschmer(at)spamfence(dot)net> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Request for review of new redis-fdw module |
Date: | 2015-01-29 08:23:00 |
Message-ID: | 20150129082300.GA21907@tux |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Leon Dang <ldang(at)nahannisys(dot)com> wrote:
>
> Andreas Kretschmer wrote on 01/28/2015 03:36 AM:
>> > 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.
Yeah, it's working now:
test=*# insert into test_redis select 'key'||s::text, 'value_xxx'||s::text from generate_Series(1,10) s;
INSERT 0 10
Time: 1,041 ms
test=*# select * from test_redis where key = 'key7';
key | value
------+------------
key7 | value_xxx7
(1 row)
>
>> 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.:
Yeah, or as a fast cache, and you can set or update the redis-cache via
trigger:
test=# create table redis_source (key text, val text);
CREATE TABLE
Time: 4,365 ms
test=*# create or replace function redis_update() returns trigger as
$$begin insert into test_redis values (new.key, new.val); return new;
end; $$language plpgsql;
CREATE FUNCTION
Time: 0,532 ms
test=*# create trigger trg_redis after insert or update on redis_source
for each row execute procedure redis_update();
CREATE TRIGGER
Time: 0,439 ms
test=*# insert into redis_source values ('new_key','new_value');
INSERT 0 1
Time: 0,809 ms
test=*# select * from test_redis where key = 'new_key';
key | value
---------+-----------
new_key | new_value
(1 row)
Time: 0,615 ms
test=*# update redis_source set val = 'hot new val' where key =
'new_key';
UPDATE 1
Time: 0,630 ms
test=*# select * from test_redis where key = 'new_key';
key | value
---------+-------------
new_key | hot new val
(1 row)
Nice!
Andreas
--
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect. (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly." (unknown)
Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889°
From | Date | Subject | |
---|---|---|---|
Next Message | Holger.Friedrich-Fa-Trivadis | 2015-01-29 12:36:43 | Building extensions against OpenSCG RPM packages |
Previous Message | Alex Hunsaker | 2015-01-29 05:58:20 | Re: segmentation fault postgres 9.3.5 core dump perlu related ? |