From 36d70e64340033f1e5b928524436c0b2f44c831e Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 10 Jul 2026 20:24:59 +0200 Subject: moved commands and database and main into separate packages --- main.go | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index 84580bf..029bf84 100644 --- a/main.go +++ b/main.go @@ -5,13 +5,15 @@ import ( "fmt" "net" "os" + "redisClone/pkg/commands" + "redisClone/pkg/core" "strings" "time" ) -const NumShards = 16 -var db RedisDB + +var db core.RedisDB var hub Hub type baseHandlerFunc func([]string)interface{} @@ -50,28 +52,28 @@ var connectionCommandRegistry = map[string]connectionHandlerFunc{ } func main() { - shards := make([]*Shard, NumShards) + shards := make([]*core.Shard, core.NumShards) - for i := 0; i < NumShards; i++ { - shards[i] = &Shard{ - data: make(map[string]Item), - id: i, + for i := 0; i < core.NumShards; i++ { + shards[i] = &core.Shard{ + Data: make(map[string]core.Item), + Id: i, } } - db = RedisDB{shards: shards} + db = core.RedisDB{Shards: shards} hub = Hub{Channels: make(map[string]map[net.Conn]struct{}),} go func() { ticker := time.NewTicker(1 * time.Second) for range ticker.C { - for _,shard := range db.shards{ - shard.mu.Lock() - for k, v := range shard.data { + for _,shard := range db.Shards{ + shard.Mu.Lock() + for k, v := range shard.Data { if v.ExpiresAt != nil && time.Now().After(*v.ExpiresAt) { - delete(shard.data, k) + delete(shard.Data, k) } } - shard.mu.Unlock() + shard.Mu.Unlock() } } }() @@ -117,7 +119,7 @@ func handleConnection(conn net.Conn) { command := strings.ToUpper(args[0]) - conn.Write(serializeRESP(DispatchBaseCommand(command,args))) + conn.Write(core.SerializeRESP(commands.DispatchBaseCommand(db,command,args))) } } \ No newline at end of file -- cgit v1.2.3