A modern, high performance Redis client for MoonBit.
Dependencies
///|
async test "string_set_get" {
@async.with_task_group(async fn(_root) {
let client = connect("localhost", 6379)
defer client.close()
// SET
let set_result = client.set("test:string", "hello_world")
assert_true(set_result is Ok("OK"))
// GET
let get_result = client.get("test:string")
assert_true(get_result is Ok("hello_world"))
// Cleanup
let _ = client.del(["test:string"])
})
}///|
async test "ping" {
@async.with_task_group(async fn(_root) {
let client = @redis.connect("localhost", 6379)
defer client.close()
let pong = client.ping()
assert_true(pong is Ok("PONG"))
})
}pub(all) enum Bit {
Zero
One
}pub(all) enum BitFieldEncoding {
U8
U16
U32
U64
I8
I16
I32
I64
}impl Show for BitFieldEncodingpub(all) enum BitFieldOperation {
Get(BitFieldEncoding, Int)
Set(BitFieldEncoding, Int, Bit)
Incrby(BitFieldEncoding, Int, Int)
Overflow(String)
}pub(all) struct GeoCoordinates {
longitude : Double
latitude : Double
}pub(all) enum GeoUnits {
Meters
Kilometers
Miles
Feet
}async fn RedisClient::append(self : RedisClient, key : String, value : String) -> Result[Int, String]async fn RedisClient::auth_username(self : RedisClient, username : String, password : String) -> Result[String, String]async fn RedisClient::bitcount_range(self : RedisClient, key : String, start : Int, end : Int) -> Result[Int, String]async fn RedisClient::bitfield(self : RedisClient, key : String, operations : Array[BitFieldOperation]) -> Result[Array[String], String]async fn RedisClient::bitfield_ro(self : RedisClient, key : String, operations : Array[String]) -> Result[Array[String], String]async fn RedisClient::bitop(self : RedisClient, operation : String, destkey : String, keys : Array[String]) -> Result[Int, String]async fn RedisClient::bitpos_range(self : RedisClient, key : String, bit : Bit, start : Int, end : Int) -> Result[Int, String]async fn RedisClient::blmove(self : RedisClient, source : String, destination : String, wherefrom~ : Int, whereto~ : Int, timeout~ : Int) -> RedisValueasync fn RedisClient::blmpop(self : RedisClient, timeout~ : Int, numkeys : String, keys : Array[String], where_~ : String) -> RedisValueasync fn RedisClient::brpoplpush(self : RedisClient, source : String, destination : String, timeout~ : Int) -> RedisValueasync fn RedisClient::bzmpop(self : RedisClient, timeout : String, numkeys : String, keys : Array[String], where_ : String, count : String?) -> Result[Array[String], String]async fn RedisClient::bzpopmax(self : RedisClient, keys : Array[String], timeout : String) -> Result[String, String]async fn RedisClient::bzpopmin(self : RedisClient, keys : Array[String], timeout : String) -> Result[String, String]async fn RedisClient::client_setname(self : RedisClient, connection_name : String) -> Result[String, String]async fn RedisClient::cluster_addslots(self : RedisClient, slots : Array[Int]) -> Result[String, String]async fn RedisClient::cluster_addslotsrange(self : RedisClient, ranges : Array[(Int, Int)]) -> Result[String, String]async fn RedisClient::cluster_count_failure_reports(self : RedisClient, node_id : String) -> Result[Int, String]async fn RedisClient::cluster_countkeysinslot(self : RedisClient, slot : Int) -> Result[Int, String]async fn RedisClient::cluster_delslots(self : RedisClient, slots : Array[Int]) -> Result[String, String]async fn RedisClient::cluster_delslotsrange(self : RedisClient, ranges : Array[(Int, Int)]) -> Result[String, String]async fn RedisClient::cluster_failover(self : RedisClient, option? : String) -> Result[String, String]async fn RedisClient::cluster_forget(self : RedisClient, node_id : String) -> Result[String, String]async fn RedisClient::cluster_getkeysinslot(self : RedisClient, slot : Int, count : Int) -> Result[Array[String], String]async fn RedisClient::cluster_meet(self : RedisClient, ip : String, port : Int, cluster_bus_port? : Int) -> Result[String, String]async fn RedisClient::cluster_replicas(self : RedisClient, node_id : String) -> Result[Array[String], String]async fn RedisClient::cluster_replicate(self : RedisClient, node_id : String) -> Result[String, String]async fn RedisClient::cluster_reset(self : RedisClient, reset_type? : String) -> Result[String, String]async fn RedisClient::cluster_set_config_epoch(self : RedisClient, config_epoch : Int) -> Result[String, String]async fn RedisClient::cluster_setslot(self : RedisClient, slot : Int, subcommand : String, node_id? : String) -> Result[String, String]async fn RedisClient::cluster_slaves(self : RedisClient, node_id : String) -> Result[Array[String], String]async fn RedisClient::cluster_slot_stats(self : RedisClient, slots : Array[Int]) -> Result[Array[String], String]async fn RedisClient::command_getkeysandflags(self : RedisClient, command : Array[String]) -> RedisValueasync fn RedisClient::config_set(self : RedisClient, parameter : String, value : String) -> RedisValueasync fn RedisClient::copy(self : RedisClient, source : String, destination : String) -> Result[Int, String]async fn RedisClient::decrby(self : RedisClient, key : String, decrement : String) -> Result[Int, String]async fn RedisClient::expire(self : RedisClient, key : String, seconds : String) -> Result[Int, String]async fn RedisClient::expireat(self : RedisClient, key : String, timestamp : String) -> Result[Int, String]async fn RedisClient::geoadd(self : RedisClient, key : String, longitude : String, latitude : String, value : String) -> Result[Int, String]async fn RedisClient::geoadd_multiple(self : RedisClient, key : String, coordinates : Array[GeoCoordinates]) -> Result[Int, String]async fn RedisClient::geodist(self : RedisClient, key : String, member1 : String, member2 : String) -> Result[String?, String]async fn RedisClient::geodist_unit(self : RedisClient, key : String, member1 : String, member2 : String, unit : GeoUnits) -> Result[String?, String]async fn RedisClient::geohash(self : RedisClient, key : String, members : Array[String]) -> Result[Array[String], String]async fn RedisClient::geopos(self : RedisClient, key : String, members : Array[String]) -> Result[Array[String], String]async fn RedisClient::georadius(self : RedisClient, key : String, longitude : String, latitude : String, radius : String, unit : GeoUnits) -> Result[Array[String], String]async fn RedisClient::georadius_ro(self : RedisClient, key : String, longitude : String, latitude : String, radius : String, unit : GeoUnits) -> Result[Array[String], String]async fn RedisClient::georadiusbymember(self : RedisClient, key : String, value : String, radius : String, unit : GeoUnits) -> Result[Array[String], String]async fn RedisClient::georadiusbymember_ro(self : RedisClient, key : String, value : String, radius : String, unit : GeoUnits) -> Result[Array[String], String]async fn RedisClient::geosearch(self : RedisClient, key : String, member_ : String, radius : String, unit : GeoUnits) -> Result[Array[String], String]async fn RedisClient::geosearch_box(self : RedisClient, key : String, coordinates : GeoCoordinates, search_box : GeoSearchByBox) -> Result[Array[String], String]async fn RedisClient::geosearch_with_dist(self : RedisClient, key : String, member_ : String, radius : Double, unit : GeoUnits) -> Result[Array[String], String]async fn RedisClient::geosearchstore(self : RedisClient, source : String, destination : String, member_ : String, radius : String, unit : GeoUnits) -> Result[Int, String]async fn RedisClient::geosearchstore_box(self : RedisClient, destination : String, source : String, from_member : String, search_box : GeoSearchByBox) -> Result[Int, String]async fn RedisClient::geosearchstore_with_dist(self : RedisClient, destination : String, source : String, member_ : String, radius : Double, unit : GeoUnits) -> Result[Int, String]async fn RedisClient::getex(self : RedisClient, key : String, ex : String) -> Result[String, String]async fn RedisClient::getrange(self : RedisClient, key : String, start : String, end : String) -> Result[String, String]async fn RedisClient::getset(self : RedisClient, key : String, value : String) -> Result[String, String]async fn RedisClient::hdel(self : RedisClient, key : String, fields : Array[String]) -> Result[Int, String]async fn RedisClient::hexists(self : RedisClient, key : String, field : String) -> Result[Bool, String]async fn RedisClient::hget(self : RedisClient, key : String, field : String) -> Result[String, String]async fn RedisClient::hgetall(self : RedisClient, key : String) -> Result[Map[String, String], String]async fn RedisClient::hset(self : RedisClient, key : String, field : String, value : String) -> Result[Int, String]async fn RedisClient::incrby(self : RedisClient, key : String, increment : String) -> Result[Int, String]async fn RedisClient::incrbyfloat(self : RedisClient, key : String, increment : String) -> Result[String, String]async fn RedisClient::json_arrappend(self : RedisClient, key : String, path : String, values : Array[String]) -> Result[Int, String]async fn RedisClient::json_arrinsert(self : RedisClient, key : String, path : String, index : Int, values : Array[String]) -> Result[Int, String]async fn RedisClient::json_arrlen(self : RedisClient, key : String, path : String) -> Result[Int, String]async fn RedisClient::json_arrpop(self : RedisClient, key : String, path : String, index : Int) -> Result[String, String]async fn RedisClient::json_arrtrim(self : RedisClient, key : String, path : String, start : Int, stop : Int) -> Result[Int, String]async fn RedisClient::json_clear(self : RedisClient, key : String, path : String) -> Result[Int, String]async fn RedisClient::json_debug(self : RedisClient, subcommand : String, key : String, path : String) -> Result[String, String]async fn RedisClient::json_del(self : RedisClient, key : String, path : String) -> Result[Int, String]async fn RedisClient::json_forget(self : RedisClient, key : String, path : String) -> Result[Int, String]async fn RedisClient::json_get(self : RedisClient, key : String, path : String) -> Result[Json, String]async fn RedisClient::json_numincrby(self : RedisClient, key : String, path : String, value : String) -> Result[String, String]async fn RedisClient::json_nummultby(self : RedisClient, key : String, path : String, value : String) -> Result[String, String]async fn RedisClient::json_objkeys(self : RedisClient, key : String, path : String) -> Result[Array[String], String]async fn RedisClient::json_objlen(self : RedisClient, key : String, path : String) -> Result[Int, String]async fn RedisClient::json_resp(self : RedisClient, key : String, path : String) -> Result[Array[String], String]async fn RedisClient::json_set(self : RedisClient, key : String, path : String, value : String) -> Result[Json, String]async fn RedisClient::json_strappend(self : RedisClient, key : String, path : String, value : String) -> Result[Int, String]async fn RedisClient::json_strlen(self : RedisClient, key : String, path : String) -> Result[Int, String]async fn RedisClient::json_toggle(self : RedisClient, key : String, path : String) -> Result[Int, String]async fn RedisClient::json_type(self : RedisClient, key : String, path : String) -> Result[String, String]async fn RedisClient::lindex(self : RedisClient, key : String, index~ : Int) -> Result[String, String]async fn RedisClient::linsert(self : RedisClient, key : String, where_~ : String, pivot~ : String, element~ : String) -> Result[Int, String]async fn RedisClient::lmove(self : RedisClient, source : String, destination : String, wherefrom~ : Int, whereto~ : Int) -> RedisValueasync fn RedisClient::lmpop(self : RedisClient, numkeys : String, keys : Array[String], where_~ : String) -> RedisValueasync fn RedisClient::lpush(self : RedisClient, key : String, values : Array[String]) -> Result[Int, String]async fn RedisClient::lpushx(self : RedisClient, key : String, values : Array[String]) -> Result[Int, String]async fn RedisClient::lrange(self : RedisClient, key : String, start~ : Int, stop~ : Int) -> Result[Array[String], String]async fn RedisClient::lrem(self : RedisClient, key : String, count~ : Int, value~ : String) -> Result[Int, String]async fn RedisClient::lset(self : RedisClient, key : String, index~ : Int, value~ : String) -> Result[String, String]async fn RedisClient::ltrim(self : RedisClient, key : String, start~ : Int, stop~ : Int) -> Result[String, String]async fn RedisClient::mget(self : RedisClient, keys : Array[String]) -> Result[Array[String], String]async fn RedisClient::migrate(self : RedisClient, host : String, port : String, key : String, destination_db : String, timeout : String) -> Result[String, String]async fn RedisClient::module_loadex(self : RedisClient, path : String, args : Array[String]) -> RedisValueasync fn RedisClient::mset(self : RedisClient, key_values : Map[String, String]) -> Result[String, String]async fn RedisClient::msetnx(self : RedisClient, key_values : Map[String, String]) -> Result[Int, String]async fn RedisClient::pexpire(self : RedisClient, key : String, milliseconds : String) -> Result[Int, String]async fn RedisClient::pexpireat(self : RedisClient, key : String, timestamp : String) -> Result[Int, String]async fn RedisClient::psetex(self : RedisClient, key : String, milliseconds : String, value : String) -> Result[String, String]async fn RedisClient::psubscribe(self : RedisClient, patterns : Array[String]) -> Result[Array[String], String]async fn RedisClient::psync(self : RedisClient, replicationid : String, offset : String) -> RedisValueasync fn RedisClient::publish(self : RedisClient, channel : String, message : String) -> Result[Int, String]async fn RedisClient::pubsub_channels(self : RedisClient, pattern? : String) -> Result[Array[String], String]async fn RedisClient::pubsub_numsub(self : RedisClient, channels? : Array[String]) -> Result[Array[String], String]async fn RedisClient::pubsub_shardchannels(self : RedisClient, pattern? : String) -> Result[Array[String], String]async fn RedisClient::pubsub_shardnumsub(self : RedisClient, channels? : Array[String]) -> Result[Array[String], String]async fn RedisClient::punsubscribe(self : RedisClient, patterns? : Array[String]) -> Result[Array[String], String]async fn RedisClient::rename(self : RedisClient, key : String, newkey : String) -> Result[String, String]async fn RedisClient::renamenx(self : RedisClient, key : String, newkey : String) -> Result[Int, String]async fn RedisClient::restore(self : RedisClient, key : String, ttl : String, serialized_value : String) -> Result[String, String]async fn RedisClient::rpoplpush(self : RedisClient, source : String, destination : String) -> RedisValueasync fn RedisClient::rpush(self : RedisClient, key : String, values : Array[String]) -> Result[Int, String]async fn RedisClient::rpushx(self : RedisClient, key : String, values : Array[String]) -> Result[Int, String]async fn RedisClient::sadd(self : RedisClient, key : String, members : Array[String]) -> Result[Int, String]async fn RedisClient::sdiff(self : RedisClient, keys : Array[String]) -> Result[Array[String], String]async fn RedisClient::sdiffstore(self : RedisClient, destination : String, keys : Array[String]) -> Result[Int, String]async fn RedisClient::set(self : RedisClient, key : String, value : String, condition? : SetCondition, get? : Bool, expiration? : SetExpiration) -> Result[String, String]async fn RedisClient::setbit(self : RedisClient, key : String, offset : Int, value : Bit) -> Result[Int, String]async fn RedisClient::setex(self : RedisClient, key : String, seconds : String, value : String) -> Result[String, String]async fn RedisClient::setnx(self : RedisClient, key : String, value : String) -> Result[Int, String]async fn RedisClient::setrange(self : RedisClient, key : String, offset : String, value : String) -> Result[Int, String]async fn RedisClient::sintercard(self : RedisClient, numkeys : String, keys : Array[String]) -> Result[Int, String]async fn RedisClient::sinterstore(self : RedisClient, destination : String, keys : Array[String]) -> Result[Int, String]async fn RedisClient::sismember(self : RedisClient, key : String, value : String) -> Result[Int, String]async fn RedisClient::smismember(self : RedisClient, key : String, members : Array[String]) -> Result[Array[String], String]async fn RedisClient::smove(self : RedisClient, source : String, destination : String, value : String) -> Result[Int, String]async fn RedisClient::spublish(self : RedisClient, channel : String, message : String) -> Result[Int, String]async fn RedisClient::srem(self : RedisClient, key : String, members : Array[String]) -> Result[Int, String]async fn RedisClient::sscan(self : RedisClient, key : String, cursor : Int, match_pattern? : String, count? : Int) -> Result[Array[String], String]async fn RedisClient::ssubscribe(self : RedisClient, channels : Array[String]) -> Result[Array[String], String]async fn RedisClient::subscribe(self : RedisClient, channels : Array[String]) -> Result[Array[String], String]async fn RedisClient::substr(self : RedisClient, key : String, start : Int, end : Int) -> Result[String, String]async fn RedisClient::sunionstore(self : RedisClient, destination : String, keys : Array[String]) -> Result[Int, String]async fn RedisClient::sunsubscribe(self : RedisClient, channels? : Array[String]) -> Result[Array[String], String]async fn RedisClient::swapdb(self : RedisClient, index1 : String, index2 : String) -> Result[String, String]async fn RedisClient::unsubscribe(self : RedisClient, channels? : Array[String]) -> Result[Array[String], String]async fn RedisClient::wait(self : RedisClient, numreplicas : String, timeout : String) -> Result[Int, String]async fn RedisClient::waitaof(self : RedisClient, numlocal : String, numreplicas : String, timeout : String) -> Result[Int, String]async fn RedisClient::xack(self : RedisClient, key : String, group : String, ids : Array[String]) -> Result[Int, String]async fn RedisClient::xadd(self : RedisClient, key : String, id : String, field_values : Map[String, String]) -> Result[String, String]async fn RedisClient::xautoclaim(self : RedisClient, key : String, group : String, consumer : String, min_idle_time : Int, start~ : String, count? : Int) -> Result[Array[String], String]async fn RedisClient::xclaim(self : RedisClient, key : String, group : String, consumer : String, min_idle_time : Int, ids : Array[String]) -> Result[Array[String], String]async fn RedisClient::xdel(self : RedisClient, key : String, ids : Array[String]) -> Result[Int, String]async fn RedisClient::xgroup_create(self : RedisClient, key : String, group : String, id : String, mkstream : Bool) -> Result[String, String]async fn RedisClient::xgroup_createconsumer(self : RedisClient, key : String, group : String, consumer : String) -> Result[Int, String]async fn RedisClient::xgroup_delconsumer(self : RedisClient, key : String, group : String, consumer : String) -> Result[Int, String]async fn RedisClient::xgroup_destroy(self : RedisClient, key : String, group : String) -> Result[Int, String]async fn RedisClient::xgroup_setid(self : RedisClient, key : String, group : String, id : String) -> Result[String, String]async fn RedisClient::xinfo_consumers(self : RedisClient, key : String, group : String) -> Result[Array[String], String]async fn RedisClient::xinfo_groups(self : RedisClient, key : String) -> Result[Array[String], String]async fn RedisClient::xinfo_stream(self : RedisClient, key : String) -> Result[Array[String], String]async fn RedisClient::xpending(self : RedisClient, key : String, group : String) -> Result[Array[String], String]async fn RedisClient::xpending_range(self : RedisClient, key : String, group : String, start~ : String, end~ : String, count~ : Int, consumer? : String) -> Result[Array[String], String]async fn RedisClient::xrange(self : RedisClient, key : String, start~ : String, end~ : String, count? : Int) -> Result[Array[RedisStreamMessage], String]async fn RedisClient::xread(self : RedisClient, count? : Int, block? : Int, streams : Array[(String, String)]) -> Result[RedisStream, String]async fn RedisClient::xreadgroup(self : RedisClient, group : String, consumer : String, count? : Int, block? : Int, noack? : Bool, streams : Array[(String, String)]) -> Result[RedisStream, String]async fn RedisClient::xrevrange(self : RedisClient, key : String, end~ : String, start~ : String, count? : Int) -> Result[Array[RedisStreamMessage], String]async fn RedisClient::xtrim(self : RedisClient, key : String, strategy~ : XTrimStrategy, threshold~ : Int64, approximate? : Bool, limit? : Int, keepref? : Bool, delref? : Bool, acked? : Bool) -> Result[Int, String]async fn RedisClient::zadd(self : RedisClient, key : String, zadd_members : Array[ZAddMember]) -> Result[Int, String]async fn RedisClient::zcount(self : RedisClient, key : String, min~ : String, max~ : String) -> Result[Int, String]async fn RedisClient::zdiff(self : RedisClient, numkeys : String, keys : Array[String]) -> Result[Array[String], String]async fn RedisClient::zdiffstore(self : RedisClient, destination : String, numkeys : String, keys : Array[String]) -> Result[Int, String]async fn RedisClient::zincrby(self : RedisClient, key : String, increment~ : String, value~ : String) -> Result[String, String]async fn RedisClient::zinter(self : RedisClient, numkeys : String, keys : Array[String]) -> Result[Array[String], String]async fn RedisClient::zintercard(self : RedisClient, numkeys : String, keys : Array[String]) -> Result[Int, String]async fn RedisClient::zinterstore(self : RedisClient, destination : String, numkeys : String, keys : Array[String]) -> Result[Int, String]async fn RedisClient::zlexcount(self : RedisClient, key : String, min~ : String, max~ : String) -> Result[Int, String]async fn RedisClient::zmpop(self : RedisClient, numkeys : String, keys : Array[String], value : String) -> Result[Array[String], String]async fn RedisClient::zmscore(self : RedisClient, key : String, members : Array[String]) -> Result[Array[String], String]async fn RedisClient::zrange(self : RedisClient, key : String, start~ : String, stop~ : String) -> Result[Array[String], String]async fn RedisClient::zrangebylex(self : RedisClient, key : String, min~ : String, max~ : String) -> Result[Array[String], String]async fn RedisClient::zrangebyscore(self : RedisClient, key : String, min~ : String, max~ : String) -> Result[Array[String], String]async fn RedisClient::zrangestore(self : RedisClient, dst : String, src : String, min~ : String, max~ : String) -> Result[Int, String]async fn RedisClient::zrank(self : RedisClient, key : String, value : String) -> Result[Int, String]async fn RedisClient::zrem(self : RedisClient, key : String, members : Array[String]) -> Result[Int, String]async fn RedisClient::zremrangebylex(self : RedisClient, key : String, min : String, max : String) -> Result[Int, String]async fn RedisClient::zremrangebyrank(self : RedisClient, key : String, start : String, stop : String) -> Result[Int, String]async fn RedisClient::zremrangebyscore(self : RedisClient, key : String, min : String, max : String) -> Result[Int, String]async fn RedisClient::zrevrange(self : RedisClient, key : String, start~ : String, stop~ : String) -> Result[Array[String], String]async fn RedisClient::zrevrangebylex(self : RedisClient, key : String, max~ : String, min~ : String) -> Result[Array[String], String]async fn RedisClient::zrevrangebyscore(self : RedisClient, key : String, max~ : String, min~ : String) -> Result[Array[String], String]async fn RedisClient::zrevrank(self : RedisClient, key : String, value : String) -> Result[Int, String]async fn RedisClient::zscan(self : RedisClient, key : String, cursor : String) -> Result[Array[String], String]async fn RedisClient::zscore(self : RedisClient, key : String, value : String) -> Result[String, String]async fn RedisClient::zunion(self : RedisClient, numkeys : String, keys : Array[String]) -> Result[Array[String], String]async fn RedisClient::zunionstore(self : RedisClient, destination : String, numkeys : String, keys : Array[String]) -> Result[Int, String]impl Show for RedisStreamMessagepub(all) enum RedisValue {
SimpleString(String)
Error(String)
Integer(Int)
BulkString(String?)
Array(Array[RedisValue])
} derive(Eq, Hash, Debug)impl Show for RedisValuefn RedisValue::to_stream_message_array(self : RedisValue) -> Result[Array[RedisStreamMessage], String]pub(all) enum SetExpiration {
EX(Int)
PX(Int)
EXAT(Int)
PXAT(Int)
KEEPTTL
}A modern, high performance Redis client for MoonBit.
Dependencies