찾다

 >  Q&A  >  본문

Redis如何回收过期数据?

服务器经常会用到redis作为缓存,有很多数据都是临时set以下,可能用过之后很久都不会再用到了(比如暂存session)那么就有几个问题了

  1. redis会自己回收清理不用的数据吗?
  2. 如果能,如何配置?
  3. 如果不能,如何防止数据累加后大量占用存储空间的问题?
大家讲道理大家讲道理2799일 전719

모든 응답(2)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-21 11:17:38

    Redis는 기본적으로 모든 데이터를 메모리 에 영구적으로 저장하거나 만료된 키를 자동으로 삭제해야 하는 경우 추가 명령이나 구성을 사용하여 완료해야 합니다. 비즈니스 요구 사항(예: 캐시)을 완료하기 위해 Redis를 사용해야 하는 경우 Redis의 설계 규칙을 따라야 합니다.

    나중에 언급하신 질문에 대해서는 내 혐오증 아이템에 모두 만료를 추가하더라도 멀티플레이어 개발에 참여하는 다른 사람들도 만료를 추가하도록 할 수 있나요? 누군가 가지고 있지 않으면 이 데이터는 항상 저장됩니다

    제 생각은 다음과 같습니다. 일반적으로 비즈니스 로직은 API 인터페이스로 캡슐화됩니다. 예를 들어 로그인 시나리오의 세션 인터페이스는 void addLoginSession(string data, int timeout)일 수 있으며 다른 사람들은 무엇에 관심을 두지 않습니다. redis든 memcache든 모든 세부 사항은 API 디자이너만 소화해야 합니다.

    그런데 Redis는 데이터베이스에서 만료된 키를 어떻게 정리합니까? 두 가지 유형으로 나누어집니다.

    1. 지연 삭제: 키를 조작할 때(예: 이름 가져오기) Redis는 먼저 키가 시간 초과와 연결되어 있는지 확인합니다. 그렇다면 시간이 초과되었는지 확인합니다. 비어 있는 값을 반환하고, 그렇지 않으면 해당 값을 반환합니다.
    2. 예약 삭제: Redis에는 데이터베이스의 만료된 키를 정리하는 시간 이벤트가 있습니다(Redis는 클라이언트 요청 차단을 피하기 위해 이 작업에 사용되는 시간을 제한합니다)

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-21 11:17:38

    expired 명령을 사용하여 만료 시간을 설정할 수 있습니다. 만료 시간을 설정하는 데 사용할 수 있는 다른 명령도 몇 가지 있습니다. 자세한 내용은 설명서를 참조하세요.

    회신하다
    0
  • 취소회신하다