diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -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 { |
