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
import RedisRequest from "https://deno.land/x/functional-redis@v0.1.1/library/RedisRequest.js";
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.2.1/library/utilities.js";
import RedisRequest from "https://deno.land/x/functional-redis@v0.1.1/library/RedisRequest.js";
import { $$rawPlaceholder } from "https://deno.land/x/functional-redis@v0.1.1/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.2.1/library/utilities.js";
import RedisRequest from "https://deno.land/x/functional-redis@v0.1.1/library/RedisRequest.js";
import { $$rawPlaceholder } from "https://deno.land/x/functional-redis@v0.1.1/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