]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/redis/command-writer/command-writer.factor
Add hash commands to extra/redis
[factor.git] / extra / redis / command-writer / command-writer.factor
index e5e635f45770d952f28abcb2424558a2a265d950..17e4c27c97ece3c95abe023a3f030b8c92c5878e 100644 (file)
@@ -1,6 +1,6 @@
 ! 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 ;
+USING: assocs io io.crlf kernel math.parser sequences strings interpolate locals ;
 IN: redis.command-writer
 
 <PRIVATE
@@ -84,6 +84,28 @@ PRIVATE>
     "SUNIONSTORE " write write " " join space write crlf ;
 : smembers ( key -- ) "SMEMBERS " write write crlf ;
 
+#! 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 ;
+
 #! Multiple db
 : select ( integer -- ) "SELECT " write number>string write crlf ;
 : move ( integer key -- ) "MOVE " write write-key/integer crlf ;