From 316b443addb7ec55e27f571ef489f2c19afb3a82 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 6 Jul 2026 14:38:56 +0200 Subject: added struct Item and keyowrd EXPIRE so now we can track expire time of items in the db --- main.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'main.go') diff --git a/main.go b/main.go index d225a52..ade1b76 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( "net" "os" "strings" + "time" ) @@ -27,10 +28,24 @@ var commandRegistry = map[string]handlerFunc{ "LRANGE": handleLrange, "LPOP": handleLpop, "RPOP": handleRpop, + "EXPIRE": handleExpire, } func main() { - db = RedisDB{data: make(map[string]any)} + db = RedisDB{data: make(map[string]Item)} + + go func() { + ticker := time.NewTicker(1 * time.Second) + for range ticker.C { + db.mu.Lock() + for k, v := range db.data { + if v.ExpiresAt != nil && time.Now().After(*v.ExpiresAt) { + delete(db.data, k) + } + } + db.mu.Unlock() + } + }() listener, err := net.Listen("tcp", ":6379") if err != nil { -- cgit v1.2.3