Warum gibt die Redis-ExistenzById-Methode bei hoher Last oder gleichzeitigem Zugriff manchmal „false“ zurück, obwohl derJava

Java-Forum
Guest
 Warum gibt die Redis-ExistenzById-Methode bei hoher Last oder gleichzeitigem Zugriff manchmal „false“ zurück, obwohl der

Post by Guest »

Ich habe ein Problem mit Redis, wenn ich mithilfe von CrudRepository.existsById() überprüfe, ob ein Schlüssel vorhanden ist. Unter normalen Bedingungen funktioniert alles einwandfrei und der Schlüssel ist in Redis vorhanden, aber das Problem tritt bei hoher Anforderungslast oder gleichzeitigem Zugriff auf.
Redis-Dienst:

Code: Select all

@Service
public class RedisService {

private final SessionRedisDataRepository sessionRedisDataRepository;

public RedisService(SessionRedisDataRepository sessionRedisDataRepository) {
this.sessionRedisDataRepository = sessionRedisDataRepository;
}

public boolean isKeyExists(String key) {
return sessionRedisDataRepository.existsById(key);
}
}
Redis-Repository:

Code: Select all

public interface SessionRedisDataRepository extends CrudRepository {
}
Sitzungsdatenklasse:

Code: Select all

@RedisHash(value = "SessionData", timeToLive = 3600L)
public class SessionRedisData implements Serializable {
@Id
private String sessionId;
}
Wenn mehrere Anfragen gleichzeitig oder unter hoher Auslastung eingehen, gibt die isKeyExists-Methode manchmal „false“ zurück, obwohl der Schlüssel in Redis vorhanden ist.
  • Was funktioniert: Unter normaler Last ist der Schlüssel vorhanden, und existById gibt
    true zurück.
  • Was fehlschlägt: Wenn mehrere gleichzeitige Anforderungen auftreten, wird möglicherweise derselbe Schlüssel überprüft und existById gibt false zurück, obwohl der
    Schlüssel in Redis ist.
Was könnte der zugrunde liegende sein Ursache dieses Problems mit existById in diesem Fall und was sind die Korrekturen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post