Skip to content

raptodb/zig-rapto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Rapto client for Zig

Lightweight library to use Rapto as client.

Usage and documentation

Copy client.zig on /src of your project and import it.

Examples

// imports
const Client = @import("client.zig").Client;
const Query = @import("client.zig").Query;
// bind connection
var client = try Client.init(
    allocator,
    try std.net.Address.parseIp4("127.0.0.1", 55555), // address of server
    "CLI",                                            // conventional name of client
    .{ .readms = 5.0, .writems = null },              // optional deadline
);
defer client.deinit(); // closes stream
// build query
const input = "GET mykey"; // GET can be lowercase
var query = try Query.fromText(allocator, input);

// send query
const res, const latency = try client.sendQuery(
    allocator,
    query,
    true, // enable benchmark
);

assert(latency != null) // if benchmark is enabled

// latency is latency of send and receive of query in ns

std.debug.print("{s}\n", .{res}); // print response of query

Query parsing methods

@import("client.zig").Query has different methods as:

Method Description
fromText() Parses query from text
fromEnum() Parses query from command as enum and args as text
fromComptime() As fromEnum() but in comptime
getQuery() Returns raw query as string
free() Frees memory. Used after fromText() and fromEnum()

Warning

If parsing does not found recognized command, returns error.CommandNotFound.

// parsing examples
Query.fromText(allocator, "ISET foo 150");
Query.fromEnum(allocator, .ISET, "foo 150");
Query.fromComptime(.ISET, "foo 150");

Benchmarks

Benchmark can be tested with zig build benchmark step command. This step is already in ReleaseFast mode.

Tested on system=WSL2 cpu=i7-12700H zig-version=0.14.0:

Benchmarks version=0.1.0 epochs=2000:
SET: min=52615ns max=440281ns avg=92026ns
GET: min=44712ns max=679387ns avg=55844ns

Tested on system=kali-linux cpu=i7-12700H zig-version=0.14.1:

Benchmarks version=0.1.0 epochs=2000:
SET: min=12237ns max=190681ns avg=19795ns
GET: min=11540ns max=25316ns avg=12373ns

Note

In tests, the server is started with the --db-size flag to take advantage of preallocation.

About

The official Zig Rapto client

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Languages