Quantcast
Channel: Active questions tagged redis+java - Stack Overflow
Viewing all articles
Browse latest Browse all 2204

How to create an internal communication with redis

$
0
0

I just created an instance of Jedis (Redis for Java) and connected to my redis server.

My backend should be able to run more than once so for example the user-cache must be invalidated if a user becomes updated.

I want to send with redis a message to all servers - which subscribed for example the user_update channel - to clear the cache after incoming message on this channel.

I created a new thread with new Thread(() -> this.jedis.subscribe(this, "user_update")).start(); and listened to the new channel. So a new thread is required otherwise my programm is stuck if that line is called.

I extended my own class from the JedisPubSub and implemented the following method:

    @Override    public void onMessage(String channel, String message) {        System.out.println(channel +" -> " + message);    }

Now if I use the this.jedis.publish(channel, message); method an error will be thrown:redis.clients.jedis.exceptions.JedisDataException: ERR Can't execute 'publish': only (P|S)SUBSCRIBE / (P|S)UNSUBSCRIBE / PING / QUIT / RESET are allowed in this context

I guess it's because I listened on the server instance to the message.But why does that happen? Any ideas?

How can I only listen to other servers?


Viewing all articles
Browse latest Browse all 2204

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>