summaryrefslogtreecommitdiff
path: root/backend/src/Redis/Connection.zig
diff options
context:
space:
mode:
authorphyscik <mynameisgennadiy@vk.com>2026-04-17 21:21:57 +0500
committerphyscik <mynameisgennadiy@vk.com>2026-04-17 21:21:57 +0500
commit550e0183cf953932fa5c236ad8389febdc899c62 (patch)
tree7ba8e6e927822c1edc0166499dbc5925d7aed9fc /backend/src/Redis/Connection.zig
parente7c7f2ed1211a801ceb5eed32b03a8fb9f791703 (diff)
redis connection
Diffstat (limited to 'backend/src/Redis/Connection.zig')
-rw-r--r--backend/src/Redis/Connection.zig42
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);
+}
+