+ execute_command(cmd)
+ end
+
+ def []=(key, val)
+ set(key,val)
+ end
+
+ def set(key, val, expiry=nil)
+ s = execute_command("SET #{key} #{value_to_wire(val)}\r\n") == OK
+ return expire(key, expiry) if s && expiry
+ s
+ end
+
+ def dbsize
+ execute_command("DBSIZE\r\n")
+ end
+
+ def expire(key, expiry=nil)
+ execute_command("EXPIRE #{key} #{expiry}\r\n") == 1
+ end
+
+ def set_unless_exists(key, val)
+ execute_command("SETNX #{key} #{value_to_wire(val)}\r\n") == 1
+ end
+
+ def bulk_reply
+ begin
+ x = read
+ puts "bulk_reply read value is #{x.inspect}" if $debug
+ return x
+ rescue => e
+ puts "error in bulk_reply #{e}" if $debug
+ nil
+ end
+ end
+
+ def write(data)
+ puts "writing: #{data}" if $debug
+ @socket.write(data)
+ end
+
+ def read(length = 0)
+ length = read_proto unless length > 0
+ res = @socket.read(length)
+ puts "read is #{res.inspect}" if $debug
+ res