]> gitweb.factorcode.org Git - factor.git/blob - extra/redis/command-writer/command-writer.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / extra / redis / command-writer / command-writer.factor
1 ! Copyright (C) 2009 Bruno Deferrari
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: io io.crlf kernel math.parser sequences strings interpolate locals ;
4 IN: redis.command-writer
5
6 <PRIVATE
7
8 GENERIC: write-value-with-length ( value -- )
9
10 M: string write-value-with-length
11     [ length number>string write crlf ]
12     [ write ] bi ;
13
14 : space ( -- ) CHAR: space write1 ;
15
16 : write-key/value ( value key -- )
17     write space
18     write-value-with-length ;
19
20 : write-key/integer ( integer key -- )
21     write space
22     number>string write ;
23
24 PRIVATE>
25
26 #! Connection
27 : quit ( -- ) "QUIT" write crlf ;
28 : ping ( -- ) "PING" write crlf ;
29 : auth ( password -- ) "AUTH " write write crlf ;
30
31 #! String values
32 : set ( value key -- ) "SET " write write-key/value crlf ;
33 : get ( key -- ) "GET " write write crlf ;
34 : getset ( value key -- ) "GETSET " write write-key/value crlf ;
35 : mget ( keys -- ) "MGET " write " " join write crlf ;
36 : setnx ( value key -- ) "SETNX " write write-key/value crlf ;
37 : incr ( key -- ) "INCR " write write crlf ;
38 : incrby ( integer key -- ) "INCRBY " write write-key/integer crlf ;
39 : decr ( key -- ) "DECR " write write crlf ;
40 : decrby ( integer key -- ) "DECRBY " write write-key/integer crlf ;
41 : exists ( key -- ) "EXISTS " write write crlf ;
42 : del ( key -- ) "DEL " write write crlf ;
43 : type ( key -- ) "TYPE " write write crlf ;
44
45 #! Key space
46 : keys ( pattern -- ) "KEYS " write write crlf ;
47 : randomkey ( -- ) "RANDOMKEY" write crlf ;
48 : rename ( newkey key -- ) "RENAME " write write space write crlf ;
49 : renamenx ( newkey key -- ) "RENAMENX " write write space write crlf ;
50 : dbsize ( -- ) "DBSIZE" write crlf ;
51 : expire ( integer key -- ) "EXPIRE " write write-key/integer crlf ;
52
53 #! Lists
54 : rpush ( value key -- ) "RPUSH " write write-key/value crlf ;
55 : lpush ( value key -- ) "LPUSH " write write-key/value crlf ;
56 : llen ( key -- ) "LLEN " write write crlf ;
57 : lrange ( start end key -- )
58     "LRANGE " write write [ space number>string write ] bi@ crlf ;
59 : ltrim ( start end key -- )
60     "LTRIM " write write [ space number>string write ] bi@ crlf ;
61 : lindex ( integer key -- ) "LINDEX " write write-key/integer crlf ;
62 : lset ( value index key -- )
63     "LSET " write write-key/integer space write-value-with-length crlf ;
64 : lrem ( value amount key -- )
65     "LREM " write write-key/integer space write-value-with-length crlf ;
66 : lpop ( key -- ) "LPOP " write write crlf ;
67 : rpop ( key -- ) "RPOP " write write crlf ;
68
69 #! Sets
70 : sadd ( member key -- )
71     "SADD " write write space write-value-with-length crlf ;
72 : srem  ( member key -- )
73     "SREM " write write space write-value-with-length crlf ;
74 : smove ( member newkey key -- )
75     "SMOVE " write write space write space write-value-with-length crlf ;
76 : scard ( key -- ) "SCARD " write write crlf ;
77 : sismember ( member key -- )
78     "SISMEMBER " write write space write-value-with-length crlf ;
79 : sinter ( keys -- ) "SINTER " write " " join write crlf ;
80 : sinterstore ( keys destkey -- )
81     "SINTERSTORE " write write space " " join write crlf ;
82 : sunion ( keys -- ) "SUNION " write " " join write crlf ;
83 : sunionstore ( keys destkey -- )
84     "SUNIONSTORE " write write " " join space write crlf ;
85 : smembers ( key -- ) "SMEMBERS " write write crlf ;
86
87 #! Multiple db
88 : select ( integer -- ) "SELECT " write number>string write crlf ;
89 : move ( integer key -- ) "MOVE " write write-key/integer crlf ;
90 : flushdb ( -- ) "FLUSHDB" write crlf ;
91 : flushall ( -- ) "FLUSHALL" write crlf ;
92
93 #! Sorting
94 ! sort
95
96 #! Persistence control
97 : save ( -- ) "SAVE" write crlf ;
98 : bgsave ( -- ) "BGSAVE" write crlf ;
99 : lastsave ( -- ) "LASTSAVE" write crlf ;
100 : shutdown ( -- ) "SHUTDOWN" write crlf ;
101
102 #! Remote server control
103 : info ( -- ) "INFO" write crlf ;
104 : monitor ( -- ) "MONITOR" write crlf ;