73 lines
2.6 KiB
Plaintext
73 lines
2.6 KiB
Plaintext
(load "redis.carp")
|
|
|
|
(defn main []
|
|
(match (Redis.open "127.0.0.1")
|
|
(Result.Success r)
|
|
(do
|
|
; basic connectivity
|
|
(println* &(Redis.ping &r))
|
|
(println* &(Redis.echo &r @"hello from carp!"))
|
|
|
|
; strings
|
|
(println* &(Redis.set &r @"language" @"carp"))
|
|
(println* &(Redis.get &r @"language"))
|
|
|
|
; 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"))
|
|
|
|
; hashes
|
|
(println* &(Redis.hset &r @"user:1" @"name" @"alice"))
|
|
(println* &(Redis.hset &r @"user:1" @"role" @"admin"))
|
|
(println* &(Redis.hgetall &r @"user:1"))
|
|
|
|
; sets
|
|
(println* &(Redis.sadd &r @"tags" @"functional"))
|
|
(println* &(Redis.sadd &r @"tags" @"systems"))
|
|
(println* &(Redis.sadd &r @"tags" @"compiled"))
|
|
(println* &(Redis.smembers &r @"tags"))
|
|
|
|
; 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)))
|