Keyspace Events in Redis Cluster get lost [DATAREDIS-534]
Mark Paluch opened DATAREDIS-534 and commented
Keyspace notifications in Redis Cluster are published only to the local node (see https://github.com/antirez/redis/issues/2541. Keyspace notifications are not broadcasted to all nodes).
Spring Data Redis subscribes only to one (random) node and so the expiry event may be received but that depends on which node the subscription resides and on which cluster node a key expired.
The recommended workaround is to:
- Subscribe to all master nodes
- Periodically check for topology changes
- Handle (merge) events on the client
Affects: 1.7.2 (Hopper SR2)
Issue Links:
- DATAREDIS-1123 Clustered Redis keyspace notifications are only received from one node in a cluster ("is duplicated by")
- DATAREDIS-1213 Spring-data-redis - Not subscribing to all master nodes ("is duplicated by")
2 votes, 3 watchers
I'm seeing this same issue as reported with https://github.com/spring-projects/spring-session/issues/2230. In my use case, it negatively affects Spring Authorization Server when using SpringSessionBackedSessionRegistry with a sharded redis where the authorization server's token endpoint ends up reading every session including the expired ones in the principal index. The expired sessions stack up which linearly increases the token endpoint latency.