Puedes hacerlo con el pub-sub solo modeloIniciar servidor Redis
Cambie los eventos de espacio de teclas de notificación en redis.conf a KEA (esto depende de sus requisitos). Detalles proporcionados en la documentación de redis http://redis.io/topics/notifications.
Redis Java Client (Jedis), intente lo siguiente:
Oyente de notificaciones:
public class KeyExpiredListener extends JedisPubSub {
@Override
public void onPSubscribe(String pattern, int subscribedChannels) {
System.out.println("onPSubscribe "
+ pattern + " " + subscribedChannels);
}
@Override
public void onPMessage(String pattern, String channel, String message) {
System.out
.println("onPMessage pattern "
+ pattern + " " + channel + " " + message);
}
//add other Unimplemented methods
}
Suscriptor:
****Nota** jedis.psubscribe (nuevo KeyExpiredListener(), "__key*__:*"); -- Este método es compatible con el canal basado en patrones de expresiones regulares, mientras que jedis.subscribe (nuevo KeyExpiredListener(), ""[email protected]__:notify"); --Este método toma el nombre de canal completo/exacto
public class Subscriber {
public static void main(String[] args) {
JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");
Jedis jedis = pool.getResource();
jedis.psubscribe(new KeyExpiredListener(), "__key*__:*");
}
}
Clase de prueba:
public class TestJedis {
public static void main(String[] args) {
JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");
Jedis jedis = pool.getResource();
jedis.set("notify", "umq");
jedis.expire("notify", 10);
}
}
Ahora primero inicie su suscriptor y luego ejecute TestJedis. Verá el siguiente resultado:
onPSubscribe __key*__:* 1
onPMessage pattern __key*__:* [email protected]__:notify set
onPMessage pattern __key*__:* [email protected]__:set notify
onPMessage pattern __key*__:* [email protected]__:notify expire
onPMessage pattern __key*__:* [email protected]__:expire notify
onPMessage pattern __key*__:* [email protected]__:notify expired
onPMessage pattern __key*__:* [email protected]__:expired notify
Ahora un caso de uso en el que está interesado en el valor de la clave caducada también.
Cuando cree su clave de notificación, cree también una clave "sombra" especial que caduque (no haga caducar la notificación real). Por ejemplo:
// set your key value
SET notify umq
//set your "shadow" key, note the value here is irrelevant
SET shadowkey:notify "" EX 10
// Obtenga un mensaje de caducidad en el canal [email protected] :caducado// Divida la clave en ":"(o cualquier separador que decida usar), tome la segunda parte para obtener su clave original
// Then get the value and do whatever with it
GET notify
// Then delete the key
DEL notify
Tenga en cuenta que el valor de shadowkey no se usa, por lo que desea usar el valor más pequeño posible, podría ser una cadena vacía "". Es un poco más de trabajo configurarlo, pero el sistema anterior hace exactamente lo que necesita. La sobrecarga son algunos comandos adicionales para recuperar y eliminar su clave más el costo de almacenamiento de una clave vacía.
De lo contrario, debe preparar su clave de tal manera que incluya el valor adjunto.
¡Espero que te ayude!