diff options
| author | physcik <mynameisgennadiy@vk.com> | 2026-04-17 21:21:57 +0500 |
|---|---|---|
| committer | physcik <mynameisgennadiy@vk.com> | 2026-04-17 21:21:57 +0500 |
| commit | 550e0183cf953932fa5c236ad8389febdc899c62 (patch) | |
| tree | 7ba8e6e927822c1edc0166499dbc5925d7aed9fc /backend/src/Redis/Connection.zig | |
| parent | e7c7f2ed1211a801ceb5eed32b03a8fb9f791703 (diff) | |
redis connection
Diffstat (limited to 'backend/src/Redis/Connection.zig')
| -rw-r--r-- | backend/src/Redis/Connection.zig | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/backend/src/Redis/Connection.zig b/backend/src/Redis/Connection.zig new file mode 100644 index 0000000..bde187b --- /dev/null +++ b/backend/src/Redis/Connection.zig @@ -0,0 +1,42 @@ +const std = @import("std"); +const redis = @cImport( + @cInclude("hiredis/hiredis.h") + ); + +var connection: ?*redis.redisContext = undefined; +const addr: [*]const u8 = "127.0.0.1"; +const port: u16 = 6379; + +pub fn Connect() !void { + connection = redis.redisConnect(addr, port); + if (connection == null or connection.?.err != 0) { + if (connection != null) { + @panic(&connection.?.errstr); + } + @panic("The redis connection failed: general error"); + } +} + +pub fn Disconnect() void { + redis.redisFree(connection); +} + +pub const Message = struct { + Key: []const u8, + Value: []const u8 +}; + +pub fn WriteToTopic(topic: []const u8, message: Message) !void { + _ = redis.redisCommand(connection, "SET %s:%s %s", + topic.ptr, + message.Key.ptr, + message.Value.ptr); +} + +pub fn ReadFromTopic(topic: []const u8, Key: []const u8) !?[]const u8 { + const resp: *redis.redisReply = @alignCast(@ptrCast(redis.redisCommand(connection, "GET %s:%s", + topic.ptr, + Key.ptr))); + return std.mem.span(resp.str); +} + |
