Fast, idiomatic redis bindings for Racket.
$ raco pkg install redis-rkt # NOT "redis". That's a different package!
$ raco doc redis
(require redis)
(define c (make-redis))
(redis-bytes-set! c "some-key" "hello, world!")
(redis-bytes-get c "some-key") ;; => #"hello, world!"
(redis-bytes-get c "some-key" "some-other-key") ;; => '(#"hello, world!" #f)
;; or, with a connection pool:
(define pool (make-redis-pool))
(call-with-redis-client pool
(lambda (c)
(redis-bytes-set! c "some-key" "hello, world!")
(redis-bytes-get c "some-key")))
;; or, using the "easy" API:
(require redis/easy)
(current-redis-pool (make-redis-pool))
(redis-bytes-set! "some-key" "hello, world!")
(redis-bytes-get "some-key")
Additional documentation is available on docs.racket-lang.org.
The commands below are yet to be implemented. If you need any of these, or others not listed here, then feel free to get the ball rolling by creating a PR.
-
BITFIELD key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL]
-
BITPOS key bit [start] [end]
-
GETSET key value
-
MSET key value [key value ...]
-
MSETNX key value [key value ...]
-
CLUSTER ADDSLOTS slot [slot ...]
-
CLUSTER COUNT-FAILURE-REPORTS node-id
-
CLUSTER COUNTKEYSINSLOT slot
-
CLUSTER DELSLOTS slot [slot ...]
-
CLUSTER FAILOVER [FORCE|TAKEOVER]
-
CLUSTER FORGET node-id
-
CLUSTER GETKEYSINSLOT slot count
-
CLUSTER INFO
-
CLUSTER KEYSLOT key
-
CLUSTER MEET ip port
-
CLUSTER NODES
-
CLUSTER REPLICATE node-id
-
CLUSTER RESET [HARD|SOFT]
-
CLUSTER SAVECONFIG
-
CLUSTER SET-CONFIG-EPOCH config-epoch
-
CLUSTER SETSLOT slot IMPORTING|MIGRATING|STABLE|NODE [node-id]
-
CLUSTER SLAVES node-id
-
CLUSTER REPLICAS node-id
-
CLUSTER SLOTS
-
READONLY
-
READWRITE
-
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
-
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
-
HSETNX key field value
-
MIGRATE host port key|"" destination-db timeout [COPY] [REPLACE] [AUTH password] [KEYS key [key ...]]
-
OBJECT subcommand [arguments [arguments ...]]
-
RESTORE key ttl serialized-value [REPLACE] [ABSTTL] [IDLETIME seconds] [FREQ frequency]
-
LPUSHX key value
-
RPUSHX key value
-
SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]
-
PUBSUB subcommand [argument [argument ...]]
-
SCRIPT DEBUG YES|SYNC|NO
-
CLIENT KILL [ip:port] [ID client-id] [TYPE normal|master|slave|pubsub] [ADDR ip:port] [SKIPME yes/no]
-
CLIENT LIST [TYPE normal|master|replica|pubsub]
-
CLIENT REPLY ON|OFF|SKIP
-
CLIENT UNBLOCK client-id [TIMEOUT|ERROR]
-
COMMAND GETKEYS
-
COMMAND INFO command-name [command-name ...]
-
DEBUG OBJECT key
-
DEBUG SEGFAULT
-
MEMORY DOCTOR
-
MEMORY HELP
-
MEMORY MALLOC-STATS
-
MEMORY PURGE
-
MEMORY STATS
-
MEMORY USAGE key [SAMPLES count]
-
MONITOR
This project was originally based on rackdis, but has since been rewritten from the ground up for increased performance and safety.