zoukankan      html  css  js  c++  java
  • deerlet-redis-client添加集群支持,邀请各路大神和菜鸟加入。

    引言

      

      经过几周的修改,deerlet已经添加了对于redis集群的支持,策略与memcached客户端一样,采用一致性Hash。不过目前Hash的算法取自Java自带的String类型的HashCode算法,因此还有待优化,后续会选取一个相对更加优秀的Hash算法。

      目前deerlet的基本框架搭建以及小部分命令的支持已经完成,并附带完整的单元测试。接下来主要要做的工作是补上剩下的命令的支持。这需要一定的工作量,LZ希望有猿友能够一起完成。

      

    更新后的deerlet文档

    -----------------------------------------以下为文档--------------------------------------

      

    deerlet-redis-client

    deerlet是一个简单易用的redis for java客户端,支持与spring无缝集成。

     

    特性

    1,轻量级,jar包只有25kb。
    2,简单易用,无侵入性。
    3,可以与当前流行的ioc容器spring无缝集成。
    4,API完全与redis命令保持一致,减少学习成本。
    5,支持集群,采用一致性hash策略。

     

    使用示例(直接使用)

     

    1.在classpath(比如eclipse中src下)路径下添加以下文件,名为deerlet.properties

    #该属性为redis服务器ip和端口,支持集群,以逗号隔开
    address=localhost:6379

     

    2.使用以下编程式的方式即可使用deerlet

    Configuration configuration = ConfigurationFactory.create().loadConfiguration();
    ConnectionFactory connectionFactory = new ConnectionFactoryImpl(configuration);
    DeerletRedisClient deerletRedisClient = new DeerletRedisClientImpl(connectionFactory);//获取client对象
    
    deerletRedisClient.set("testKey","testValue");//存储一个键为testKey,值为testValue的键值对
    System.out.println(deerletRedisClient.get("testKey"));//获取
    System.out.println(deerletRedisClient.dbSize());//查看大小
    deerletRedisClient.flushAll();//刷新
    System.out.println(deerletRedisClient.dbSize());//查看大小

    使用示例(与spring集成)

    1.在spring的配置文件中加入如下bean定义

    <bean id="deerletRedisClient" class="cn.zxl.deerlet.redis.client.spring.DeerletRedisClientFactoryBean">
    </bean>

    2.在classpath(比如eclipse中src下)路径下添加以下文件,名为deerlet.properties

    #该属性为redis服务器ip和端口,支持集群,以逗号隔开
    address=localhost:6379

    3.使用以下编程式的方式即可使用deerlet

    ApplicationContext applicationContext = new FileSystemXmlApplicationContext("
    classpath:applicationContext.xml");//初始化spring容器
    DeerletRedisClient deerletRedisClient = applicationContext.getBean(DeerletRedisClient.class);//获取client对象
    
    deerletRedisClient.set("testKey","testValue");//存储一个键为testKey,值为testValue的键值对
    System.out.println(deerletRedisClient.get("testKey"));//获取
    System.out.println(deerletRedisClient.dbSize());//查看大小
    deerletRedisClient.flushAll();//刷新
    System.out.println(deerletRedisClient.dbSize());//查看大小

    deerlet.properties文件属性说明

    address:必选,格式为 host1:port1,host2:port2....
    initSize:可选,指定连接池初始连接数,默认为10
    maxSize:可选,指定连接池最大连接数,默认为100
    minIdleSize:可选,指定连接池最小空闲连接数,默认为10
    maxIdleSize:可选,指定连接池最大空闲连接数,默认为20

    目前支持的命令

    del,dump,exists,expire,expireat,keys,migrate,move,object,persist,pexpire
    ,pexpireat,pttl,randomkey,rename,renamenx,restore,sort,ttl,type,scan
    ,append,bitcount,bitop,decr,decrby,get,getbit,getrange,getset,incr,incrby
    ,incrbyfloat,mget,mset,msetnx,psetex,set,setbit,setex,setnx,setrange,strlen
    ,lindex,linsert,llen,lpop,lpush,lpushx,lrange,lrem,lset,ltrim
    ,select,bgrewriteaof,bgsave,dbsize,flushall,flushdb
    正在陆续添加中...欢迎您来一起加入

    -----------------------------------------文档结束--------------------------------------

      

    未来的规划

      

      之前LZ一直在master上面做修改,为了接下来和大家更好的协作,LZ已经建立了一个1.x分支。建议大家在这个分支上进行push操作。在1.x分支上所有命令添加完毕,并且单元测试通过以后,将会发布deerlet-redis-client-1.0版本。之后关于1.0版本的bug修复和优化,也在1.x分支上进行。

      此外,根据可靠消息,redis未来可能会在服务器端做集群,届时deerlet会根据redis的变化,进行相应的改动。只有deerlet有重大变革时,才会更改主版本号,因此大家基本上会在很长一段时间内在1.x分支上开发。

      接下来的一小段时间内,deerlet主要要做的是以下两件事。

      1,添加目前未支持的命令。

      2,完善单元测试,确保稳定性。

      

    如何加入

      

      deerlet在github上面的地址为:https://github.com/xiaolongzuo/deerlet-redis-client

      1,首先安装一下git,并将代码clone到本地,可以选择clone到时LZ创建的1.X分支。

        git clone git@github.com:xiaolongzuo/deerlet-redis-client.git   //下载源码

        git -c core.quotepath=false checkout -b branch-1.x    //切换到1.x分支

      2,在本地电脑上下载并安装maven,或使用eclipse的maven插件都可以,因为deerlet的构建工具是maven。

      3,在本地电脑上安装redis,并启动三个redis实例,端口分别为6379,6479,6666。

      4,redis启动以后,运行mvn test命令看是否能够通过单元测试。

      完成以上几步以后,deerlet已经可以在你本地运行。这时你就可以修复相应的bug,或者添加你所希望它具有的特性。记得,完事以后不要忘了push哦。

  • 相关阅读:
    https原理:证书传递、验证和数据加密、解密过程解析
    java web项目的https配置
    防止表单重复提交的八种简单有效的策略
    nginx.conf
    Java打war包or打jar包
    WarUtil
    MyBatis动态SQL第一篇之实现多条件查询(if、where、trim标签)
    Spring使用注解实现AOP
    Spring添加声明式事务
    spring配置文件拆分策略及方法
  • 原文地址:https://www.cnblogs.com/zuoxiaolong/p/4459348.html
Copyright © 2011-2022 走看看