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);
}
}
Code: Select all
public interface SessionRedisDataRepository extends CrudRepository {
}
Code: Select all
@RedisHash(value = "SessionData", timeToLive = 3600L)
public class SessionRedisData implements Serializable {
@Id
private String sessionId;
}
- 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.