redis 学习笔记(7)-cluster 客户端(jedis)代码示例

来源:互联网 发布:轻量 linux 桌面 编辑:程序博客网 时间:2024/04/19 22:44

上节学习了cluster的搭建及redis-cli终端下如何操作,但是更常用的场景是在程序代码里对cluster读写,这需要redis-client对cluster模式的支持,目前spring-data-redis(1.6.4)还不支持cluster,最新的1.7.0 RC1已经有cluster的相关实现了,不过目前尚未正式发布,所以现阶段要使用redis-cluster的话,client最好还是选用原生的jedis,示例代码如下:

配置文件:

复制代码
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">    <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">        <constructor-arg index="0">            <set>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="127.0.0.1"/>                    <constructor-arg name="port" value="7000"/>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="127.0.0.1"/>                    <constructor-arg name="port" value="7001"/>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="127.0.0.1"/>                    <constructor-arg name="port" value="7002"/>                </bean>                <!--<bean class="redis.clients.jedis.HostAndPort">-->                    <!--<constructor-arg name="host" value="127.0.0.1"/>-->                    <!--<constructor-arg name="port" value="7003"/>-->                <!--</bean>-->                <!--<bean class="redis.clients.jedis.HostAndPort">-->                    <!--<constructor-arg name="host" value="127.0.0.1"/>-->                    <!--<constructor-arg name="port" value="7004"/>-->                <!--</bean>-->                <!--<bean class="redis.clients.jedis.HostAndPort">-->                    <!--<constructor-arg name="host" value="127.0.0.1"/>-->                    <!--<constructor-arg name="port" value="7005"/>-->                <!--</bean>-->            </set>        </constructor-arg>    </bean></beans>
复制代码

注:上面的这些节点,不需要配全,最少可以只保留一个cluster中的节点信息,运行时,jedis会自动发现其它节点,但是为了防止某个节点挂掉,所以建议配置时,还是多配置几个,保证这一堆节点中,至少有一个能连接上。

示例代码:

注:建议尽量避免用jedis对节点做keys的模糊搜索,该操作在缓存项较多时,可能会导致redis性能急剧下降,改进办法是自己弄一个集合,记录所有缓存的key,具体可参考上面的办法。此外,jedis提供的命令非常之多,但是没有详细的说明文档(估计,作者认为代码就是最好的文档),大体可以从方法前缀猜测出来,比如sXXX表示是对Set的操作,hXXX表示是对hash的操作,lXXX或rXXX是对list的操作,zXXX是对zset的操作,什么前缀都没有的,比如set/get是对字符串的操作。

有网友把jedis的操作整理了一份文档,请参见:http://blog.csdn.net/zhu_xun/article/details/16806285  

最后,附加上文中示例的源码:https://github.com/yjmyzz/redis-cluster-demo

0 0