aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authoralex <[email protected]>2026-07-10 20:24:59 +0200
committeralex <[email protected]>2026-07-10 20:24:59 +0200
commit36d70e64340033f1e5b928524436c0b2f44c831e (patch)
treeacbfc67b411f184f2de14a24838aaf1d547b7d91 /main.go
parentd1628cb76ac4f907d8e57346809e3ac0b8e12de5 (diff)
downloadredis-clone-36d70e64340033f1e5b928524436c0b2f44c831e.tar.xz
redis-clone-36d70e64340033f1e5b928524436c0b2f44c831e.zip
moved commands and database and main into separate packages
Diffstat (limited to 'main.go')
-rw-r--r--main.go30
1 files changed, 16 insertions, 14 deletions
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