From ae97156836750f6c1fe5e17475406fa62d231d4e Mon Sep 17 00:00:00 2001
From: Mateusz Charytoniuk <mateusz.charytoniuk@protonmail.com>
Date: Mon, 22 Apr 2024 21:31:35 +0200
Subject: [PATCH] fix: redis session gc

---
 src/Session.php | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/Session.php b/src/Session.php
index fca4f727..f0af0134 100644
--- a/src/Session.php
+++ b/src/Session.php
@@ -5,7 +5,6 @@ declare(strict_types=1);
 namespace Distantmagic\Resonance;
 
 use Ds\Map;
-use Redis;
 
 readonly class Session
 {
@@ -24,7 +23,12 @@ readonly class Session
 
     public function persist(): void
     {
-        $this->getRedisConnection()->set(
+        $redisConnection = new RedisConnection(
+            $this->redisConnectionPoolRepository,
+            $this->getRedisPrefix(),
+        );
+
+        $redisConnection->redis->set(
             $this->id,
             $this->serializer->serialize($this->data->toArray())
         );
@@ -32,7 +36,12 @@ readonly class Session
 
     private function getPersistedData(): mixed
     {
-        $storedValue = $this->getRedisConnection()->get($this->id);
+        $redisConnection = new RedisConnection(
+            $this->redisConnectionPoolRepository,
+            $this->getRedisPrefix(),
+        );
+
+        $storedValue = $redisConnection->redis->get($this->id);
 
         if (!is_string($storedValue) || empty($storedValue)) {
             return null;
@@ -41,7 +50,7 @@ readonly class Session
         return $this->serializer->unserialize($storedValue);
     }
 
-    private function getRedisConnection(): Redis
+    private function getRedisPrefix(): string
     {
         $redisPrefix = $this->redisConfiguration
             ->connectionPoolConfiguration
@@ -49,12 +58,7 @@ readonly class Session
             ->prefix
         ;
 
-        $redisConnection = new RedisConnection(
-            redisConnectionPoolRepository: $this->redisConnectionPoolRepository,
-            redisPrefix: $redisPrefix.'session:',
-        );
-
-        return $redisConnection->redis;
+        return $redisPrefix.'.session';
     }
 
     private function restoreSessionData(): array
-- 
GitLab