2009-05-10 19:06:28 -04:00
|
|
|
! Copyright (C) 2009 Bruno Deferrari
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2013-07-30 14:42:40 -04:00
|
|
|
USING: assocs io io.crlf kernel math.parser sequences strings interpolate locals ;
|
2009-05-10 19:06:28 -04:00
|
|
|
IN: redis.command-writer
|
|
|
|
|
|
|
|
<PRIVATE
|
|
|
|
|
|
|
|
GENERIC: write-value-with-length ( value -- )
|
|
|
|
|
|
|
|
M: string write-value-with-length
|
|
|
|
[ length number>string write crlf ]
|
|
|
|
[ write ] bi ;
|
|
|
|
|
|
|
|
: space ( -- ) CHAR: space write1 ;
|
|
|
|
|
|
|
|
: write-key/value ( value key -- )
|
|
|
|
write space
|
|
|
|
write-value-with-length ;
|
|
|
|
|
|
|
|
: write-key/integer ( integer key -- )
|
|
|
|
write space
|
|
|
|
number>string write ;
|
|
|
|
|
|
|
|
PRIVATE>
|
|
|
|
|
|
|
|
#! Connection
|
|
|
|
: quit ( -- ) "QUIT" write crlf ;
|
|
|
|
: ping ( -- ) "PING" write crlf ;
|
|
|
|
: auth ( password -- ) "AUTH " write write crlf ;
|
|
|
|
|
|
|
|
#! String values
|
|
|
|
: set ( value key -- ) "SET " write write-key/value crlf ;
|
|
|
|
: get ( key -- ) "GET " write write crlf ;
|
|
|
|
: getset ( value key -- ) "GETSET " write write-key/value crlf ;
|
|
|
|
: mget ( keys -- ) "MGET " write " " join write crlf ;
|
|
|
|
: setnx ( value key -- ) "SETNX " write write-key/value crlf ;
|
|
|
|
: incr ( key -- ) "INCR " write write crlf ;
|
|
|
|
: incrby ( integer key -- ) "INCRBY " write write-key/integer crlf ;
|
|
|
|
: decr ( key -- ) "DECR " write write crlf ;
|
|
|
|
: decrby ( integer key -- ) "DECRBY " write write-key/integer crlf ;
|
|
|
|
: exists ( key -- ) "EXISTS " write write crlf ;
|
|
|
|
: del ( key -- ) "DEL " write write crlf ;
|
|
|
|
: type ( key -- ) "TYPE " write write crlf ;
|
|
|
|
|
|
|
|
#! Key space
|
|
|
|
: keys ( pattern -- ) "KEYS " write write crlf ;
|
|
|
|
: randomkey ( -- ) "RANDOMKEY" write crlf ;
|
|
|
|
: rename ( newkey key -- ) "RENAME " write write space write crlf ;
|
|
|
|
: renamenx ( newkey key -- ) "RENAMENX " write write space write crlf ;
|
|
|
|
: dbsize ( -- ) "DBSIZE" write crlf ;
|
|
|
|
: expire ( integer key -- ) "EXPIRE " write write-key/integer crlf ;
|
|
|
|
|
|
|
|
#! Lists
|
|
|
|
: rpush ( value key -- ) "RPUSH " write write-key/value crlf ;
|
|
|
|
: lpush ( value key -- ) "LPUSH " write write-key/value crlf ;
|
|
|
|
: llen ( key -- ) "LLEN " write write crlf ;
|
|
|
|
: lrange ( start end key -- )
|
|
|
|
"LRANGE " write write [ space number>string write ] bi@ crlf ;
|
|
|
|
: ltrim ( start end key -- )
|
|
|
|
"LTRIM " write write [ space number>string write ] bi@ crlf ;
|
|
|
|
: lindex ( integer key -- ) "LINDEX " write write-key/integer crlf ;
|
|
|
|
: lset ( value index key -- )
|
|
|
|
"LSET " write write-key/integer space write-value-with-length crlf ;
|
|
|
|
: lrem ( value amount key -- )
|
|
|
|
"LREM " write write-key/integer space write-value-with-length crlf ;
|
|
|
|
: lpop ( key -- ) "LPOP " write write crlf ;
|
|
|
|
: rpop ( key -- ) "RPOP " write write crlf ;
|
|
|
|
|
|
|
|
#! Sets
|
|
|
|
: sadd ( member key -- )
|
|
|
|
"SADD " write write space write-value-with-length crlf ;
|
|
|
|
: srem ( member key -- )
|
|
|
|
"SREM " write write space write-value-with-length crlf ;
|
|
|
|
: smove ( member newkey key -- )
|
|
|
|
"SMOVE " write write space write space write-value-with-length crlf ;
|
|
|
|
: scard ( key -- ) "SCARD " write write crlf ;
|
|
|
|
: sismember ( member key -- )
|
|
|
|
"SISMEMBER " write write space write-value-with-length crlf ;
|
|
|
|
: sinter ( keys -- ) "SINTER " write " " join write crlf ;
|
|
|
|
: sinterstore ( keys destkey -- )
|
|
|
|
"SINTERSTORE " write write space " " join write crlf ;
|
|
|
|
: sunion ( keys -- ) "SUNION " write " " join write crlf ;
|
|
|
|
: sunionstore ( keys destkey -- )
|
|
|
|
"SUNIONSTORE " write write " " join space write crlf ;
|
|
|
|
: smembers ( key -- ) "SMEMBERS " write write crlf ;
|
|
|
|
|
2013-07-30 14:42:40 -04:00
|
|
|
#! Hashes
|
|
|
|
: hdel ( field key -- ) "HDEL " write write space write crlf ;
|
|
|
|
: hexists ( field key -- ) "HEXISTS " write write space write crlf ;
|
|
|
|
: hget ( field key -- ) "HGET " write write space write crlf ;
|
|
|
|
: hgetall ( key -- ) "HGETALL " write write crlf ;
|
|
|
|
: hincrby ( integer field key -- )
|
|
|
|
"HINCRBY " write write space write space number>string write crlf ;
|
|
|
|
: hincrbyfloat ( float field key -- )
|
|
|
|
"HINCRBYFLOAT " write write space write space number>string write crlf ;
|
|
|
|
: hkeys ( key -- ) "HKEYS " write write crlf ;
|
|
|
|
: hlen ( key -- ) "HLEN " write write crlf ;
|
|
|
|
: hmget ( seq key -- )
|
|
|
|
"HMGET " write write space " " join write crlf ;
|
|
|
|
: hmset ( assoc key -- )
|
|
|
|
"HMSET " write write space
|
|
|
|
>alist [ " " join ] map " " join write crlf ;
|
|
|
|
: hset ( value field key -- ) "HSET " write write space write
|
|
|
|
space write crlf ;
|
|
|
|
: hsetnx ( value field key -- ) "HSETNX " write write space
|
|
|
|
write space write crlf ;
|
|
|
|
: hvals ( key -- ) "HVALS " write write crlf ;
|
|
|
|
|
2009-05-10 19:06:28 -04:00
|
|
|
#! Multiple db
|
|
|
|
: select ( integer -- ) "SELECT " write number>string write crlf ;
|
|
|
|
: move ( integer key -- ) "MOVE " write write-key/integer crlf ;
|
|
|
|
: flushdb ( -- ) "FLUSHDB" write crlf ;
|
|
|
|
: flushall ( -- ) "FLUSHALL" write crlf ;
|
|
|
|
|
|
|
|
#! Sorting
|
|
|
|
! sort
|
|
|
|
|
|
|
|
#! Persistence control
|
|
|
|
: save ( -- ) "SAVE" write crlf ;
|
|
|
|
: bgsave ( -- ) "BGSAVE" write crlf ;
|
|
|
|
: lastsave ( -- ) "LASTSAVE" write crlf ;
|
|
|
|
: shutdown ( -- ) "SHUTDOWN" write crlf ;
|
|
|
|
|
|
|
|
#! Remote server control
|
|
|
|
: info ( -- ) "INFO" write crlf ;
|
|
|
|
: monitor ( -- ) "MONITOR" write crlf ;
|