前5个基于Redis的Java对象

存储 Redis
Redis具有很多值得推荐的功能,包括速度,可伸缩性和可用性。但是,有一个问题是Redis不包括对Java之类的编程语言的内置支持。相反,用户需要为Redis安装第三方Java客户端,例如Redisson。

 Redis具有很多值得推荐的功能,包括速度,可伸缩性和可用性。但是,有一个问题是Redis不包括对Java之类的编程语言的内置支持。相反,用户需要为Redis安装第三方Java客户端,例如Redisson。

[[328825]]

Redisson是Redis Java客户端,其中包含许多熟悉的Java对象,接口和集合,这使Java开发人员比以往任何时候都更容易地开始使用Redis。下面,我们将讨论Radisson用户所依赖的5个基于Redis的优秀Java对象。

1.Map

Java中的Map接口用于将键映射到值的对象。

Redisson使用RMap接口在Redis中实现Map 。旋转地图实现了所有的Redis的熟悉地图的方法:containsKey(),containsValue(),get(),isEmpty(),keySet(),put(),putIfAbsent(),remove(),replace(),values(),等等。

以下是有关如何在Redisson中使用RMap接口的快速示例:

 

  1. RMap<String, SomeObject> map = redisson.getMap("anyMap"); 
  2. SmeObject prevObject = map.put("123", new SomeObject()); 
  3. SomeObject currentObject = map.putIfAbsent("323", new SomeObject()); 
  4. SomeObject obj = map.remove("123"); 

RMap接口包括对Async,Reactive和RxJava2的支持。此外,RMap还具有本地缓存​​和数据分区等功能,因此可以极大地加快读取操作并提高可伸缩性。

 

2.Set

Java中的Set接口用于无重复值的元素的无序集合。

Redisson器具设置在Redis的与RSET接口。RSET实现所有的Redis的熟悉的设置方法:add(),addAll(),clear(),contains(),containsAll(),equals(),isEmpty(),remove(),removeAll(),size(),等等。

以下是有关如何在Redisson中使用RSet接口的快速示例:

 

  1. RSet<SomeObject> set = redisson.getSet("anySet"); 
  2. set.add(new SomeObject()); 
  3. set.remove(new SomeObject()); 

与RMap一样,RSet也支持数据分区,以提高性能并加快读/写操作。另外,用户可以为RMap中的元素定义驱逐策略(即每个条目的生存时间)。

3.holder

Java中的Holder类用于存储指定类型的值,同时允许对该值进行副作用修改(例如,为了在Java中实现按引用调用)。

Redisson通过RBucket接口在Redis中实现了Holder类,该接口可以容纳任何类型的对象。RBucket工具方法,如compareAndSet(),get(),getAndDelete(),getAndSet(),set(),size(),trySet(),等等。对象的最大大小为512兆字节。

以下是有关如何在Redisson中使用RBucket接口的快速示例:

 

  1. RBucket<AnyObject> bucket = redisson.getBucket("anyObject"); 
  2. bucket.set(new AnyObject(1)); 
  3. AnyObject obj = bucket.get(); 
  4. bucket.trySet(new AnyObject(3)); 
  5. bucket.compareAndSet(new AnyObject(4), new AnyObject(5)); 
  6. bucket.getAndSet(new AnyObject(6)); 

RBucket接口包括对Async,Reactive和RxJava2的支持。

 

4.Lock

Java中的Lock类用于“锁定”对共享资源的访问,以同步多个线程。锁是多线程和分布式编程的关键部分,这就是为什么锁在Redisson用户中也很受欢迎的原因。

Redisson通过RLock接口在Redis中实现Lock类。RLOCK实现所有的Redis的熟悉锁方法:lock(),lockInterruptibly(),tryLock(),unlock(),等等。

以下是有关如何在Redisson中使用RLock接口的快速示例:

 

  1. RLock lock = redisson.getLock("myLock"); 
  2. //传统的锁定方法 
  3. lock.lock(); 
  4. // 或获取锁定,并在10秒后自动将其解锁 
  5. lock.lock(10, TimeUnit.SECONDS); 
  6. //或等待锁获取长达100秒  
  7. //并在10秒后自动将其解锁 
  8. boolean res = lock.tryLock(100, 10, TimeUnit.SECONDS); 
  9. if (res) { 
  10.    try { 
  11.      ... 
  12.    } finally { 
  13.        lock.unlock(); 
  14.    } 

RLock接口包括对Async,Reactive和RxJava2的支持。Redisson还实现了各种类型的锁,例如公平锁,MultiLock,Redlock和ReadWriteLocks。

 

5.ExecutorService

Java中的ExecutorService接口用于异步执行Runnable和Callable对象。

Redisson实现了Redis的的ExecutorService的接口与RExecutorService接口。RExecutorService实现所有的Redis的熟悉的ExecutorService方法:invokeAll(),invokeAny(),isShutdown(),isTerminated(),shutdown(),shutdownNow(),submit(),等等。

以下是有关如何在Redisson中使用RExecutorService接口的快速示例:

 

  1. RExecutorService executorService = redisson.getExecutorService("myExecutor", options); 
  2. executorService.submit(new RunnableTask(123)); 
  3. RExecutorService executorService = redisson.getExecutorService("myExecutor", options); 
  4. Future<Long> future = executorService.submit(new CallableTask()); 
  5. Long result = future.get(); 

RExecutorService接口包括对Runnable和Callable对象,Lambda任务以及Spring Bean任务的支持。

结论

Redisson内置了对Redis中许多最常见Java对象的内置支持,包括Map,Set,Objectholder,Lock和ExecutorService。

责任编辑:华轩 来源: 今日头条
相关推荐

2019-07-15 14:49:16

网络安全云计算软件

2009-12-09 09:40:31

Linux云计算

2018-03-07 13:30:09

数据库Redis

2011-12-05 10:38:37

Java面试

2012-02-02 10:27:23

Windows8 Be问题

2011-07-27 09:30:21

HTML 5

2018-02-09 08:09:24

Redis软件用法

2018-11-19 05:34:31

云计算云安全IT

2015-10-08 09:28:47

JavaDocker镜像

2010-08-04 13:43:59

Flex项目

2016-01-20 10:11:56

华丽CanvasHTML5

2021-04-26 08:36:56

Javascript轮播库开发

2017-02-28 20:34:08

Linux移动应用程序员

2020-08-23 09:12:52

JavaJava IDE框架

2019-02-18 13:36:03

Redis数据库面试

2012-04-05 13:19:06

WEBHTML5

2009-07-14 09:06:08

Java对象类型转换

2020-11-24 09:45:57

JavaScript开发框架

2019-07-10 15:41:50

RedisJava缓存

2024-02-29 09:20:10

点赞
收藏

51CTO技术栈公众号