Служба Redis:
Код: Выделить всё
@Service
public class RedisService {
private final SessionRedisDataRepository sessionRedisDataRepository;
public RedisService(SessionRedisDataRepository sessionRedisDataRepository) {
this.sessionRedisDataRepository = sessionRedisDataRepository;
}
public boolean isKeyExists(String key) {
return sessionRedisDataRepository.existsById(key);
}
}
Код: Выделить всё
public interface SessionRedisDataRepository extends CrudRepository {
}
Код: Выделить всё
@RedisHash(value = "SessionData", timeToLive = 3600L)
public class SessionRedisData implements Serializable {
@Id
private String sessionId;
}
- Что работает: при нормальной нагрузке ключ существует, и ExistById возвращает
истину. - Что не получается: когда происходит несколько одновременных запросов, может быть проверен один и тот же ключ, и ExistById возвращает false, хотя
ключ находится в Redis.
Подробнее здесь: https://stackoverflow.com/questions/793 ... d-or-concu
Мобильная версия