songsong0 2016-03-22
Redis集群技术及Codis实践
http://www.infoq.com/cn/articles/effective-ops-part-03
Redis3.0集群方案分析
http://www.cnblogs.com/guoyinglin/p/4604279.html
等到我把Redis3.0客户端库hiredis编译好集成到公司系统,访问其中一台Redis3.0服务器居然返回"MOVED231810.12.8.156
:6379",这才了解到访问其他Redis3.0服务器的Key需要二次定位,这就是Redis3.0所谓的ASK转向/MOVED转向机制,这绝对
是一个大坑,网上既然没有人说出来,如果我不站出来,会有人继续掉进这个大坑。
Redis最初的使命是用高效的内存取代复杂繁重的数据库,如果从缓存服务器获取一个Key要经过二次定位,访问时间是原来单机
缓存服务器的两倍,那样我们还不如直接用数据库呢。
鉴于Redis3.0所谓的ASK转向/MOVED转向机制,网上推出了JAVA版的Redis3.0客户端库jedis、C++版的Redis3.0客户端
库ACL,他们都支持根据Redis服务器居返回"MOVED"信息进行二次定位数据访问,而且还有在主备切换的情况下访问备机的功能,
正常情况下Redis3.0集群要部署3台主机和3台备机,这样客户端就要同时维持这6台服务器的长连接,像我们公司的系统有上百个
进程,一个线程就要维持6台缓存服务器的长连接,一个进程拥有多个线程,总的算起来差不多上千个缓存服务器的长连接,这无异
于饮鸩止渴。