分布式缓存Redis之Java客户端

来源:互联网 发布:国家授时中心网络时间 编辑:程序博客网 时间:2024/05/22 17:05

写在前面

  本学习教程所有示例代码见GitHub:https://github.com/selfconzrr/Redis_Learning

  目前Redis的Java客户端主要有两种:Jedis、Redission,个人感觉Jedis用的广泛一些,而且博主现在开发用的也是Jedis。

Jedis与Redisson对比

概况对比

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

编程模型

  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.Mapmap.put("key", "value");map.containsKey("key");map.get("key");

可伸缩性

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

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

数据结构

  Jedis仅支持基本的数据类型如:String、Hash、List、Set、Sorted Set。
  详解见博客:http://blog.csdn.net/u011489043/article/details/78720722

  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可提供更便捷的方法。

第三方框架整合

  • Redisson提供了和Spring框架的各项特性类似的,以Spring XML的命名空间的方式配置RedissonClient实例和它所支持的所有对象和服务;
  • Redisson完整的实现了Spring框架里的缓存机制;
  • Redisson在Redis的基础上实现了Java缓存标准规范;
  • Redisson为Apache Tomcat集群提供了基于Redis的非黏性会话管理功能。该功能支持Apache Tomcat的6、7和8版;
  • Redisson还提供了Spring Session会话管理器的实现。

    关于Redission

  Redisson是架设在Redis基础上的一个Java驻内存数据网格(In-Memory Data Grid)。【Redis官方推荐】

  Redisson在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类,使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。

  适用场景:分布式应用,分布式缓存,分布式回话管理,分布式服务(任务,延迟任务,执行器),分布式redis客户端。

引入依赖包

<dependency>  <groupId>org.redisson</groupId>  <artifactId>redisson</artifactId>  <version>3.3.2</version></dependency>

程序化配置方法

Config config = new Config();config. useSingleServer().setAddress("127.0.0.1:6379");RedissonClient redisson = Redisson.create(config);

文件方式配置

Config config = Config.fromJSON(new File("config-file.json"));

Spring方式

<redisson:client>          <redisson:single-server address=“127.0.0.1:6379" /></redisson:client>

—–乐于分享,共同进步
—–Any comments greatly appreciated
—–诚心欢迎各位交流讨论!QQ:1138517609

原创粉丝点击