zoukankan      html  css  js  c++  java
  • Redis的三个框架:Jedis,Redisson,Lettuce

     

    Jedis api 在线网址:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.html

    redisson 官网地址:https://redisson.org/

    redisson git项目地址:https://github.com/redisson/redisson

    lettuce 官网地址:https://lettuce.io/

    lettuce git项目地址:https://github.com/lettuce-io/lettuce-core

    概念:

      Jedis:是Redis的Java实现客户端,提供了比较全面的Redis命令的支持,

      Redisson:实现了分布式和可扩展的Java数据结构。

      Lettuce:高级Redis客户端,用于线程安全同步,异步和响应使用,支持集群,Sentinel,管道和编码器。

    优点:

      Jedis:比较全面的提供了Redis的操作特性

      Redisson:促使使用者对Redis的关注分离,提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列

      Lettuce:主要在一些分布式缓存框架上使用比较多

    可伸缩:

    Jedis:使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。

    Redisson:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Redisson的API是线程安全的,所以可以操作单个Redisson连接来完成各种操作

    Lettuce:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以操作单个Lettuce连接来完成各种操作

    结论:

    建议使用:Jedis + Redisson

    Jedis与Redisson选型对比

     

    1  概述

    1.1.       主要内容

    本文的主要内容为对比Redis的两个框架:Jedis与Redisson,分析各自的优势与缺点,为项目中Java缓存方案中的Redis编程模型的选择提供参考。

    2.    JedisRedisson对比

    2.1.    概况对比

    Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持;Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。

    2.2.    编程模型

    Jedis中的方法调用是比较底层的暴露的Redis的API,也即Jedis中的Java方法基本和Redis的API保持着一致,了解Redis的API,也就能熟练的使用Jedis。而Redisson中的方法则是进行比较高的抽象,每个方法调用可能进行了一个或多个Redis方法调用。

    如下分别为Jedis和Redisson操作的简单示例:

    Jedis设置key-value与set操作:

    Jedis jedis = …;

    jedis.set("key", "value");

    List<String> values = jedis.mget("key", "key2", "key3");

    Redisson操作map:

    Redisson redisson = …

    RMap map = redisson.getMap("my-map"); // implement java.util.Map

    map.put("key", "value");

    map.containsKey("key");

    map.get("key");

    2.3.    可伸缩性

    Jedis使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。

    Redisson使用非阻塞的I/O和基于Netty框架的事件驱动的通信层,其方法调用是异步的。Redisson的API是线程安全的,所以可以操作单个Redisson连接来完成各种操作。

    2.4.    数据结构

    Jedis仅支持基本的数据类型如:String、Hash、List、Set、Sorted Set。

    Redisson不仅提供了一系列的分布式Java常用对象,基本可以与Java的基本数据结构通用,还提供了许多分布式服务,其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service)。

    在分布式开发中,Redisson可提供更便捷的方法。

    2.5.    第三方框架整合

    1       Redisson提供了和Spring框架的各项特性类似的,以Spring XML的命名空间的方式配置RedissonClient实例和它所支持的所有对象和服务;

    2       Redisson完整的实现了Spring框架里的缓存机制;

    3       Redisson在Redis的基础上实现了Java缓存标准规范;

    4       Redisson为Apache Tomcat集群提供了基于Redis的非黏性会话管理功能。该功能支持Apache Tomcat的6、7和8版。

    5  Redisson还提供了Spring Session会话管理器的实现。
  • 相关阅读:
    hdu 4002 Find the maximum
    hdu 2837 坑题。
    hdu 3123
    zoj Treasure Hunt IV
    hdu 2053 Switch Game 水题一枚,鉴定完毕
    poj 1430 Binary Stirling Numbers
    hdu 3037 Saving Beans
    hdu 3944 dp?
    南阳oj 求N!的二进制表示最低位的1的位置(从右向左数)。
    fzu 2171 防守阵地 II
  • 原文地址:https://www.cnblogs.com/williamjie/p/11287292.html
Copyright © 2011-2022 走看看