1 ! Copyright (C) 2009 Bruno Deferrari
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs io.encodings.8-bit io.sockets
4 io.streams.duplex kernel redis sequences ;
7 TUPLE: redis-assoc host port encoding password ;
9 CONSTANT: default-redis-port 6379
11 : <redis-assoc> ( -- redis-assoc )
14 default-redis-port >>port
17 INSTANCE: redis-assoc assoc
19 : with-redis-assoc ( redis-assoc quot -- )
21 [ host>> ] [ port>> ] [ encoding>> ] tri
22 [ <inet> ] dip <client> drop
23 ] dip with-stream ; inline
25 M: redis-assoc at* [ redis-get dup >boolean ] with-redis-assoc ;
27 M: redis-assoc assoc-size [ redis-dbsize ] with-redis-assoc ;
30 [ "*" redis-keys dup redis-mget zip ] with-redis-assoc ;
32 M: redis-assoc set-at [ redis-set drop ] with-redis-assoc ;
34 M: redis-assoc delete-at [ redis-del drop ] with-redis-assoc ;
36 M: redis-assoc clear-assoc
37 [ "*" redis-keys [ redis-del drop ] each ] with-redis-assoc ;
39 M: redis-assoc equal? assoc= ;
41 M: redis-assoc hashcode* assoc-hashcode ;