add nested types to redis
This commit is contained in:
+64
-14
@@ -1,22 +1,72 @@
|
||||
(load "redis.carp")
|
||||
|
||||
(defn main []
|
||||
(match (Redis.open "127.0.0.1")
|
||||
(Result.Success r)
|
||||
(do
|
||||
(Redis.send &r @"PING" &[])
|
||||
(println* &(Redis.read &r))
|
||||
(match (Redis.open "127.0.0.1")
|
||||
(Result.Success r)
|
||||
(do
|
||||
; basic connectivity
|
||||
(println* &(Redis.ping &r))
|
||||
(println* &(Redis.echo &r @"hello from carp!"))
|
||||
|
||||
(Redis.send &r @"PING" &[(to-redis @"hiiiii")])
|
||||
(println* &(Redis.read &r))
|
||||
; strings
|
||||
(println* &(Redis.set &r @"language" @"carp"))
|
||||
(println* &(Redis.get &r @"language"))
|
||||
|
||||
(println* &(Redis.echo &r @"hi"))
|
||||
; lists — array responses are proper nested RESP values
|
||||
(println* &(Redis.rpush &r @"queue" @"task-a"))
|
||||
(println* &(Redis.rpush &r @"queue" @"task-b"))
|
||||
(println* &(Redis.rpush &r @"queue" @"task-c"))
|
||||
(println* &(Redis.lrange &r @"queue" @"0" @"-1"))
|
||||
(println* &(Redis.lpop &r @"queue"))
|
||||
(println* &(Redis.llen &r @"queue"))
|
||||
|
||||
(println* &(Redis.rpush &r @"mylist" @"1"))
|
||||
(println* &(Redis.rpush &r @"mylist" @"2"))
|
||||
(println* &(Redis.lrange &r @"mylist" @"-100" @"100"))
|
||||
; hashes
|
||||
(println* &(Redis.hset &r @"user:1" @"name" @"alice"))
|
||||
(println* &(Redis.hset &r @"user:1" @"role" @"admin"))
|
||||
(println* &(Redis.hgetall &r @"user:1"))
|
||||
|
||||
(println* &(Redis.latency-help &r))
|
||||
; sets
|
||||
(println* &(Redis.sadd &r @"tags" @"functional"))
|
||||
(println* &(Redis.sadd &r @"tags" @"systems"))
|
||||
(println* &(Redis.sadd &r @"tags" @"compiled"))
|
||||
(println* &(Redis.smembers &r @"tags"))
|
||||
|
||||
(Redis.close r))
|
||||
(Result.Error err) (IO.errorln &err)))
|
||||
; counters
|
||||
(println* &(Redis.set &r @"hits" @"0"))
|
||||
(println* &(Redis.incr &r @"hits"))
|
||||
(println* &(Redis.incrby &r @"hits" @"99"))
|
||||
(println* &(Redis.get &r @"hits"))
|
||||
|
||||
; key expiry
|
||||
(println* &(Redis.set &r @"session" @"abc123"))
|
||||
(println* &(Redis.expire &r @"session" @"300"))
|
||||
(println* &(Redis.ttl &r @"session"))
|
||||
|
||||
; pattern matching on RESP values
|
||||
(match (Redis.lrange &r @"queue" @"0" @"-1")
|
||||
(Result.Success resp)
|
||||
(match resp
|
||||
(RESP.Arr items)
|
||||
(println* "remaining tasks: " &(Int.str (Array.length &items)))
|
||||
_ (println* "unexpected response"))
|
||||
(Result.Error e) (println* "error: " &e))
|
||||
|
||||
; streams — xrange returns nested arrays (array of [id, [field, value, ...]])
|
||||
(println* &(Redis.xadd &r @"events" @"*" @"type" @"click"))
|
||||
(println* &(Redis.xadd &r @"events" @"*" @"type" @"scroll"))
|
||||
(println* &(Redis.xrange &r @"events" @"-" @"+"))
|
||||
|
||||
; missing key returns Null
|
||||
(println* &(Redis.get &r @"nonexistent"))
|
||||
|
||||
; cleanup
|
||||
(println* &(Redis.del &r @"language"))
|
||||
(println* &(Redis.del &r @"queue"))
|
||||
(println* &(Redis.del &r @"user:1"))
|
||||
(println* &(Redis.del &r @"tags"))
|
||||
(println* &(Redis.del &r @"hits"))
|
||||
(println* &(Redis.del &r @"session"))
|
||||
(println* &(Redis.del &r @"events"))
|
||||
|
||||
(Redis.close r))
|
||||
(Result.Error err) (IO.errorln &err)))
|
||||
|
||||
Reference in New Issue
Block a user