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 | |
| parent | e7c7f2ed1211a801ceb5eed32b03a8fb9f791703 (diff) | |
redis connection
Diffstat (limited to 'backend/src')
| -rw-r--r-- | backend/src/Redis/Connection.zig | 42 | ||||
| -rw-r--r-- | backend/src/main.zig | 11 |
2 files changed, 53 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); +} + diff --git a/backend/src/main.zig b/backend/src/main.zig index db48a38..d1fbde2 100644 --- a/backend/src/main.zig +++ b/backend/src/main.zig @@ -3,6 +3,7 @@ const backend = @import("backend"); const httpz = @import("httpz"); const db = @import("Database/Connection.zig"); const handler = @import("Handler.zig"); +const redis = @import("Redis/Connection.zig"); pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; @@ -20,6 +21,16 @@ pub fn main() !void { server.deinit(); } + try redis.Connect(); + defer redis.Disconnect(); + + try redis.WriteToTopic("test", redis.Message { + .Key = "xdd", + .Value = "ddx", + }); + + std.debug.print("redis response: {s}\n", .{try redis.ReadFromTopic("test", "xdd") orelse "not found"}); + var router = try server.router(.{}); router.get("/", index, .{}); |
