The environment here still uses the final cluster configuration environment in [Redis Cluster installation and configuration], as follows:
127.0.0.1:7000> cluster nodes8868592d98d84b7cf5752cc0b97af4ac807d1a12 127.0.0.1:7007 slave bfc910f924d772fe03d9fe6a19aabd73d5730d26 0 1410882113063 8 connectedf5bdda1518cd3826100a30f5953ed82a5861ed48 127.0.0.1:7002 slave bfc910f924d772fe03d9fe6a19aabd73d5730d26 0 1410882111659 8 connected82578e8ec9747e46cbb4b8cc2484c71b9b2c91f4 127.0.0.1:7001 master - 0 1410882111158 2 connected 6461-1092261dfb1055760d5dcf6519e35435d60dc5b207940 127.0.0.1:7004 slave 82578e8ec9747e46cbb4b8cc2484c71b9b2c91f4 0 1410882112662 5 connected6d1ebedad33bb31ffbaa99bad095eef4a5920857 127.0.0.1:7006 master - 0 1410882111158 0 connectedbfc910f924d772fe03d9fe6a19aabd73d5730d26 127.0.0.1:7005 master - 0 1410882111659 8 connected 11923-1638335e0f6fdadbf81a00a1d6d1843698613e653867b 127.0.0.1:7003 slave 123ed65d59ff22370f2f09546f410d31207789f6 0 1410882110657 7 Connected123ed65d59ff22370f2f09546f410d31207789f6 127.0.0.1:7000 myself,master - 0 0 7 connected 0-6460 10923-11922127.0.0.1:7000>
The following use Jedis and Redis-py-cluster to access the cluster, the operation is mainly: Set/get, pub/sub, and get the cluster information.
1,jedis
From now on, the best support for Redis and Rediscluster should be Jedis, the Open Source project (also the Java library recommended by the Redis website), for reference: Https://github.com/xetorthio/jedis
import redis.clients.jedis.*;import java.util.hashset;import java.util.iterator;import java.util.map;import java.util.set;import java.util.concurrent.executorservice;import java.util.concurrent.executors;/** * jedis Test cluster * * @author Steven */public class app { public static void main ( String[] args ) { set <HostAndPort> clusterNodes = new HashSet<HostAndPort> (); // Here you only need to list one node in the cluster // jediscluster will go by himself discovery other cluster nodes Clusternodes.add (New hostandport ("127.0.0.1", 7000)); jediscluster cluster = new&nbsP Jediscluster (clusternodes); // set/get cluster.set ("foo", "Jedis test"); string value = cluster.get ("foo"); System.out.println ("foo = " + value); // get cluster nodes system.out.println ("------- cluster nodes --------"); map<string, Jedispool> nodes = cluster.getclusternodes (); iterator<map.entry<string, jedispool>> iternodes = nodes.entryset (). Iterator (); while (Iternodes.hasnext ()) { &nbSp; map.entry<string, jedispool> entry = iternodes.next (); jedis jedis = Entry.getvalue (). GetResource (); System.out.println ("============"); System.out.println (Entry.getkey () + "\ n" + jedis.info ()); } // pub/sub system.out.println ("------- pub/sub --------"); // here randomly two jedis connections for publish and subscribe are taken // Redis does not support both publisher and on the same connection Subscriber &nbSp; final jedispool jedispool = nodes.entryset (). iterator (). Next (). GetValue (); // use a separate thread publish executorservice newfixedthreadpool = executors.newfixedthreadpool (Ten); newfixedthreadpool.submit (new runnable () { @Override public void run () { try { thread.sleep (; ) } catch ( Interruptedexception e) &nbsP { e.printstacktrace (); return ; } jedispool.getresource (). Publish ("Channel-test", "hello, redis Cluster! "); } }); // subscribe - here will always be blocked to receive publish message jedispool.getresource (). Subscribe (new Jedispubsub () { @Override public void onmessage (String channel, string message) { system.out.println ("onmessage - " + channel + ":" + message); } @Override public void onpmessage (String pattern, string channel, string message) { system.out.println ("onpmessage - " + pattern + "|" + channel + ":" + message); } @Override public void onsubscribe (string channel, int Subscribedchannels) { system.out.println ("onsubscribe - " + channel + ":" + Subscribedchannels); } @Override public void onunsubscribe (string channel, int Subscribedchannels) { system.out.println ("onunsubscribe - " + channel + ":" + Subscribedchannels); } @Override public void onpunsubscribe (string pattern, int subscribedchannels) { system.out.println ("OnPUnsubscribe - " + pattern + ": " + subscribedchannels); } @Override public void onpsubscribe (string pattern, int subscribedchannels) { system.out.println ("onPSubscribe - " + pattern + ":" + subscribedchannels); } }, "Channel-test"); }}
The following record for key Foo is written to the 7005 node:
127.0.0.1:7000> get foo-> redirected to Slots [12182] located at 127.0.0.1:7005 "Jedis test" 127.0.0.1:7005> keys fo O1) "Foo" 127.0.0.1:7005>
2,redis-py-cluster
Python's Redis Cluster library uses Redis-py-cluster (Https://github.com/Grokzen/redis-py-cluster)
The following code is just a common example of how to use Redis-py-cluster
If you need to see a complete test of redis-py-cluster, you can refer directly to: https://github.com/Grokzen/redis-py-cluster/tree/master/tests
Import redisfrom rediscluster import rediscluster def main (): Startup_nodes = [{"Host": "127.0.0.1", "Port": "7000"}] r c = Rediscluster (Startup_nodes=startup_nodes, decode_responses=true) print '--------get/set---------' if not rc.set ( "foo", "Hello, Redis-py-cluster"): print ' Set foo to cluster failed!!! ' return-1 print ' foo =%s '% (Rc.get ("foo"),) if __name__ = = ' __main__ ': Main ()
This article is from the "Quiet lunatic" blog, please make sure to keep this source http://quietmadman.blog.51cto.com/3269500/1554544
Rediscluster Java and Python client API usage examples