Thursday, 31 March 2016

Redis Keyspace Notifications, Java example

Reff: http://redis.io/topics/notifications

dependancies :  redis.clients:jedis:2.7.2

To set notify-keyspace-events 
Command: redis-cli config set notify-keyspace-events KEA

Subscriber.java

package com.vijaysy.notification;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;

/**
 * Created by vijaysy on 31/03/16.
 */
public class Subscriber {
    public static void main(String[] args) {
        /*  JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");
            Jedis jedis1 = pool.getResource();
            jedis1.psubscribe(new NotificationListener(), "__key*__:RT*");  */
        Jedis jedis = new Jedis("localhost");
        jedis.psubscribe(new 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.print("[Pattern:" + pattern + "]");
                System.out.print("[Channel: " + channel + "]");
                System.out.println("[Message: " + message + "]");
            }
        }, "__key*__:RT*");

    }
}

TestNotification.java

package com.vijaysy.notification;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * Created by vijay.yala on 31/03/16.
 */
public class TestNotifications {
    public static void main(String[] args) {
        JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");
        Jedis jedis = pool.getResource();
        jedis.set("RTnotify", "umq");
        jedis.set("notify", "umq");
        jedis.set("notify1", "umq");
        jedis.set("RTnotify1", "umq");
        jedis.expire("RTnotify", 10); //in Seconds

    }
}

Wednesday, 30 March 2016

Simple Redis PubSub java example

Reff: http://redis.io/topics/pubsub
dependancies :  redis.clients:jedis:2.7.2

To set notify-keyspace-events 
Command: redis-cli config set notify-keyspace-events KEA

Publisher: RedisPub.java


package com.vijaysy.pubsub;

import redis.clients.jedis.Jedis;

import java.util.Scanner;

/**
 * Created by vijaysy on 30/03/16.
 */
public class RedisPub {
    public static void main(String  args[]){
        Jedis jedis = new Jedis("localhost");
        Scanner scanner = new Scanner(System.in);
        System.out.printf("Enter the channel name:");
        String channel=scanner.nextLine();
        System.out.println("Starting publisher for channel "+ channel);

        while (true){
            System.out.println("Enter the string to Publish:");
            String msg = scanner.nextLine();
            jedis.publish(channel,msg);

        }
    }
}


Subscriber:  
RedisSub.java


package com.vijaysy.pubsub;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;

import java.util.Scanner;

/**
 * Created by vijaysy on 30/03/16.
 */
public class RedisSub {

    public static void main(String args[]) {
        Jedis jedis = new Jedis("localhost");
        Scanner scanner = new Scanner(System.in);
        System.out.printf("Enter the channel name:");
        String channel = scanner.nextLine();
        System.out.println("Starting subscriber for channel " + channel);

        while (true) {
            jedis.subscribe(new JedisPubSub() {
                @Override
                public void onMessage(String channel, String message) {
                    super.onMessage(channel, message);
                    System.out.println("Received message:" + message);
                }

                @Override
                public void onSubscribe(String channel, int subscribedChannels) {
                }

                @Override
                public void onUnsubscribe(String channel, int subscribedChannels) {
                }

                @Override
                public void onPMessage(String pattern, String channel, String message) {
                }

                @Override
                public void onPUnsubscribe(String pattern, int subscribedChannels) {
                }
                
                @Override
                public void onPSubscribe(String pattern, int subscribedChannels) {
                }

            }, channel);
        }
    }
}