105 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			105 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Factor
		
	
	
|  | ! Copyright (C) 2009 Bruno Deferrari | ||
|  | ! See http://factorcode.org/license.txt for BSD license. | ||
|  | USING: io io.crlf kernel math.parser sequences strings interpolate locals ;
 | ||
|  | 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 ;
 | ||
|  | 
 | ||
|  | #! 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 ;
 |