Ich speichere neue Einträge mit einem Spring Data Repository. Ich habe eine TTL von 10 Sekunden für jeden Eintrag.Spring Redis - Indizes nicht gelöscht nach Haupteintrag verfällt
Wenn ich einen Eintrag mit Indizes speichern, hier ist das, was ich
127.0.0.1:6379> keys * 1) "job:campaignId:aa" 2) "job:a6d6e491-5d75-4fd0-bd8e-71692f6d18be" 3) "job:recipient:dd" 4) "job:a6d6e491-5d75-4fd0-bd8e-71692f6d18be:phantom" 5) "job:listId:cc" 6) "job:accountId:bb" 7) "job" 8) "job:a6d6e491-5d75-4fd0-bd8e-71692f6d18be:idx"
Nach Ablauf in redis, ich habe immer noch Daten:
127.0.0.1:6379> keys * 1) "job:campaignId:aa" 2) "job:recipient:dd" 3) "job:listId:cc" 4) "job:accountId:bb" 5) "job" 6) "job:a6d6e491-5d75-4fd0-bd8e-71692f6d18be:idx"
Ohne TTL. Warum löschen sie sich nicht selbst? Wie könnte ich das tun?
Danke
Vielen Dank! Das ist die Erklärung, die ich brauchte. Habe ich etwas in der Dokumentation verpasst? Eine weitere verwandte Frage: Wie kann ich den Wert des abgelaufenen Schlüssels abrufen, bevor Spring Data ihn löscht? – BkSouX
Beobachten Sie 'RedisKeyExpiredEvent' in Ihrer Anwendung. Es enthält den Schlüssel (Bytes) und das abgelaufene Domänenobjekt. Einzelheiten zum Ablauf finden Sie unter http://docs.spring.io/spring-data/redis/docs/current/reference/html/#redis.repositories.expirations. – mp911de
Nach dem Testen ein bisschen mit @EnableRedisRepositories (enableKeyspaceEvents = EnableKeyspaceEvents.ON_STARTUP), sehe ich, dass das Phantom in der gleichen Zeit wie der echte Schlüssel gelöscht wird, aber in der Dokumentation heißt es, dass es 5 Minuten später gelöscht wird. Vielleicht gibt es eine Eigenschaft oder etwas? – BkSouX