redissonclient类_Redisson入门教程

Redisson入门

Author:RickyDate:2017-04-24

Redisson概述

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

地址:https://github.com/redisson/redisson

Redisson功能

8c3d307f35fe42715d4af4a54a99be2c.png

Redisson功能

支持同步/异步/异步流/管道流方式连接

多样化数据序列化

集合数据分片

分布式对象

分布式集合

分布式锁和同步器

分布式服务

独立节点模式

三方框架整合

HelloWorld

引入依赖包

org.redisson

redisson

3.3.2

程序化配置方法

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"));

Config

config = Config.fromYAML(new File("config-file.yaml")); RedissonClient

RedissonClient  redisson =

Redisson.create(config);

Spring方式

address=“127.0.0.1:6379" />

HelloWorld 3

验证是否成功

redisson.getConfig().toJSON().toString()

结果

{"singleServerConfig":{"idleConnectionTimeout":10000,"pingTimeout":1000,"connectTimeout":10000,"timeout":3000,"retryAttempts":3,"retryInterval":1500,"reconnectionTimeout":3000,"failedAttempts":3,"subscriptionsPerConnection":5,"address":"redis://127.0.0.1:6379","subscriptionConnectionMinimumIdleSize":1,"subscriptionConnectionPoolSize":50,"connectionMinimumIdleSize":10,"connectionPoolSize":64,"database":0,"dnsMonitoring":false,"dnsMonitoringInterval":5000},"threads":0,"nettyThreads":0,"codec":{"class":"org.redisson.codec.JsonJacksonCodec"},"codecProvider":{"class":"org.redisson.codec.DefaultCodecProvider"},"resolverProvider":{"class":"org.redisson.liveobject.provider.DefaultResolverProvider"},"redissonReferenceEnabled":true,"useLinuxNativeEpoll":false}

连接方式

RedissonClient

client = Redisson.create(config);

RAtomicLong longObject =

client.getAtomicLong(‘myLong‘);

//

同步执行方式

longObject.compareAndSet(3, 401);

//

异步执行方式

longObject.compareAndSetAsync(3, 401);

RedissonReactiveClient client = Redisson.createReactive(config);

RAtomicLongReactive longObject = client.getAtomicLong(‘myLong‘);

//

异步流执行方式

longObject.compareAndSet(3,

401);

数据序列化

f9b5dbbade2ba1e460d1fdd8580985aa.png

集合数据分片

在集群模式下,Redisson为单个Redis集合类型提供了自动分片的功能。

在自动分片功能的帮助下,单个集合拆分以后均匀的分布在整个集群里,而不是被挤在单一一个节点里。

Redisson通过自身的分片算法,将一个大集合拆分为若干个片段(默认231个,分片数量范围是3 - 16834),然后将拆分后的片段均匀的分布到集群里各个节点里,保证每个节点分配到的片段数量大体相同。比如在默认情况下231个片段分到含有4个主节点的集群里,每个主节点将会分配到大约57个片段,同样的道理如果有5个主节点,每个节点会分配到大约46个片段。

目前支持的数据结构类型包括Set和Map.

分布式对象

通用对象桶(Object

Bucket)

二进制流(Binary

Stream)

地理空间对象桶(Geospatial

Bucket)

BitSet

原子整长形(AtomicLong)

原子双精度浮点数(AtomicDouble)

话题(订阅分发)

布隆过滤器(Bloom

Filter)

基数估计算法(HyperLogLog)

示例

通用桶对象

RBucket

bucket = redisson.getBucket("anyObject"); bucket.set(new AnyObject(1));

AnyObject

obj = bucket.get();

原子整长型

RAtomicLong

atomicLong = redisson.getAtomicLong("myAtomicLong");

atomicLong.set(3);

atomicLong.incrementAndGet();

atomicLong.get();

分布式集合

映射(Map)

多值映射(Multimap)

集(Set)

有序集(SortedSet)

计分排序集(ScoredSortedSet)

字典排序集(LexSortedSet)

列表(List)

列队(Queue)

双端队列(Deque)

阻塞队列(Blocking

Queue)

有界阻塞列队(Bounded

Blocking Queue)

阻塞双端列队(Blocking Deque)

阻塞公平列队(Blocking

Fair Queue)

延迟列队(Delayed

Queue)

优先队列(Priority Queue)

优先双端队列(Priority

Deque)

分布式集合

示例

Map

RMap

SomeObject> map = redisson.getMap("anyMap");

SomeObject

prevObject = map.put("123", new SomeObject());

SomeObject currentObject =

map.putIfAbsent("323", new SomeObject());

SomeObject

obj = map.remove("123");

Set

RSet set = redisson.getSet("anySet");

set.add(new

SomeObject());

set.remove(new

SomeObject());

分布式锁

可重入锁(Reentrant

Lock)

公平锁(Fair Lock)

联锁(MultiLock)

红锁(RedLock)

读写锁(ReadWriteLock)

信号量(Semaphore)

可过期性信号量(PermitExpirableSemaphore)

闭锁(CountDownLatch)

示例

RLock

lock = redisson.getLock("anyLock");

//

最常见的使用方法

lock.lock();

//

支持过期解锁功能

10秒钟以后自动解锁

// 无需调用unlock方法手动解锁

lock.lock(10,

TimeUnit.SECONDS);

//

尝试加锁,最多等待100秒,上锁以后10秒自动解锁

boolean res = lock.tryLock(100, 10, TimeUnit.SECONDS);

lock.unlock();

分布式服务

分布式远程服务(Remote

Service)

分布式实时对象(Live

Object)服务

分布式执行服务(Executor

Service)

分布式调度任务服务(Scheduler

Service)

分布式映射归纳服务(MapReduce)

服务端(远端)实例

RRemoteService remoteService = redisson.getRemoteService();

SomeServiceImpl someServiceImpl = new SomeServiceImpl();

// 在调用远程方法以前,应该首先注册远程服务

// 只注册了一个服务端工作者实例,只能同时执行一个并发调用

remoteService.register(SomeServiceInterface.class, someServiceImpl);

// 注册了12个服务端工作者实例,可以同时执行12个并发调用

remoteService.register(SomeServiceInterface.class,

someServiceImpl, 12);

客户端(本地)实例

RRemoteService

remoteService = redisson.getRemoteService();

SomeServiceInterface

service = remoteService.get(SomeServiceInterface.class);

String

result = service.doSomeStuff(1L, "secondParam", new AnyParam());

独立节点模式

Redisson Node指的是Redisson在分布式运算环境中作为独立节点运行的一种模式。Redisson Node的功能可以用来执行通过分布式执行服务或分布式调度执行服务发送的远程任务,也可以用来为分布式远程服务提供远端服务。

依赖redisson-all.jar

独立节点模式-配置

// Redisson程序化配置代码

Config config = ...

// Redisson Node 程序化配置方法

RedissonNodeConfig nodeConfig = new RedissonNodeConfig(config);

Map workers = new HashMap

Integer>();

workers.put("test", 1);

nodeConfig.setExecutorServiceWorkers(workers);

// 创建一个Redisson Node实例

RedissonNode node = RedissonNode.create(nodeConfig);

// 或者通过指定的Redisson实例创建Redisson Node实例

RedissonNode node = RedissonNode.create(nodeConfig, redisson);

node.start();

node.shutdown();

三方框架整合

Spring框架整合

Spring Cache整合

Hibernate整合

Tomcat会话管理器(Tomcat Session Manager)

Spring Session会话管理器

三方框架-Spring整合

基本配置:

id="myRedisson">

address="127.0.0.1:6379"/>

完全配置:

参照附件:Redisson说明文档.pdf

三方框架-Spring调用

@Service

public class RedissonUtils2 implements InitializingBean {

@Autowired

private RedissonClient

redissonClient;

public void afterPropertiesSet()

throws Exception {

Redisson redisson= (Redisson)

redissonClient;

RAtomicDouble dd=

redissonClient.getAtomicDouble("tt");

dd.set(1.22);

System.out.println("bean初始化后置方法"+redisson.getConfig().toJSON().toString());

}

}

总结

Redisson是redis分布式方向落地的产品,不仅开源免费,而且内置分布式锁,分布式服务等诸多功能,是基于redis实现分布式的最佳选择。

原文:http://www.cnblogs.com/LT0314/p/6757390.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值