Functional Redis
A simple Redis client in tune with Functional Programming principles in JavaScript for Deno.
Redis Request
The RedisRequest represents a Redis request.
It has three attributes: the first is the Redis command, the second is a typed array named βrawβ, the last is an
array of arguments.
The RedisRequest type is mostly interoperable with Resource,
File, (HTTP) Request
and (HTTP) Response.
The RedisRequest type implements the following algebras:
- Group
- Comonad
- Monad
Example
const redisRequest = RedisRequest("GET", new Uint8Array([]), [ "hoge" ]);
assert(RedisRequest.is(redisRequest));A Symbol named rawPlaceholder may be used as a placeholder for the buffer.
In the following example, the request will resolve to: SET hoge piyo.
import { encodeText } from "https://deno.land/x/functional@v1.1.0/library/utilities.js";
import { $$rawPlaceholder } from "https://deno.land/x/functional-redis@v0.1.0/library/Symbol.js";
const redisRequest = RedisRequest("SET", encodeText("piyo"), [ "hoge", $$rawPlaceholder ]);
assert(RedisRequest.is(redisRequest));The placeholder can be used multiple times if the buffer has multiple values separated by CLRF (\r\n).
import { encodeText } from "https://deno.land/x/functional@v1.1.0/library/utilities.js";
import { $$rawPlaceholder } from "https://deno.land/x/functional-redis@v0.1.0/library/Symbol.js";
const redisRequest = RedisRequest(
"MSET",
encodeText("piyo\r\nfuga"),
[ "hoge", $$rawPlaceholder, "hogefuga", $$rawPlaceholder ]
);
assert(RedisRequest.is(redisRequest));Utilities
The RedisRequest namespace comes with methods for convenience to create an instance of RedisRequest with various
commands. The methods are curried.
RedisRequest.append π
RedisRequest ~> append :: String -> String|Uint8Array -> RedisRequest
RedisRequest.bitcount π
RedisRequest ~> bitcount :: String -> Number[] -> RedisRequest
RedisRequest.bitop π
RedisRequest ~> bitop :: String -> String -> String[] -> RedisRequest
RedisRequest.bitpos π
RedisRequest ~> bitpos :: String -> Number[] -> RedisRequest
RedisRequest.decr π
RedisRequest ~> decr :: String -> RedisRequest
RedisRequest.decrby π
RedisRequest ~> decrby :: String -> Number -> RedisRequest
RedisRequest.get π
RedisRequest ~> get :: String -> RedisRequest
RedisRequest.getbit π
RedisRequest ~> getbit :: String -> Number -> RedisRequest
RedisRequest.getrange π
RedisRequest ~> getrange :: String -> Number[] -> RedisRequest
RedisRequest.getset π
RedisRequest ~> getset :: String -> String|Uint8Array -> RedisRequest
RedisRequest.incr π
RedisRequest ~> incr :: String -> RedisRequest
RedisRequest.incrby π
RedisRequest ~> incrby :: String -> Number -> RedisRequest
RedisRequest.incrbyfloat π
RedisRequest ~> incrbyfloat :: String -> Number -> RedisRequest
RedisRequest.mget π
RedisRequest ~> mget :: (...String) -> RedisRequest
RedisRequest.mset π
RedisRequest ~> mset :: String[] -> [Uint8Array ->] RedisRequest
RedisRequest.msetnx π
RedisRequest ~> msetnx :: String[] -> [Uint8Array ->] RedisRequest
RedisRequest.psetex π
RedisRequest ~> psetex :: Number -> String -> String|Uint8Array -> RedisRequest
RedisRequest.set π
RedisRequest ~> set :: String -> String|Uin8Array -> RedisRequest
RedisRequest.setbit π
RedisRequest ~> setbit :: String -> Number -> String|Uin8Array -> RedisRequest
RedisRequest.setex π
RedisRequest ~> setex :: Number -> String -> String|Uint8Array -> RedisRequest
RedisRequest.setnx π
RedisRequest ~> setnx :: String -> String|Uint8Array -> RedisRequest
RedisRequest.setrange π
RedisRequest ~> setrange :: String -> Number -> String|Uint8Array -> RedisRequest
RedisRequest.stralgo π
RedisRequest ~> stralgo :: String[] -> RedisRequest
RedisRequest.strlen π
RedisRequest ~> strlen :: String -> RedisRequest