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

<think>好的,我需要回答用户关于Redisson API教程或使用指南的问题。首先,用户之前提到过Redis的布隆过滤器应用,现在想更深入了解Redisson的API。根据引用[3],用户可能对分布式系统中的高效数据判断感兴趣,比如缓存穿透或URL去重。我需要确保回答覆盖官方文档、核心功能以及实际应用场景。 首先,我应该推荐官方文档,因为这是最权威的来源。Redisson的官网提供了详细的指南和配置说明,用户需要知道如何访问。接下来,核心API模块是关键部分,包括分布式对象、锁、布隆过滤器等,用户之前提到布隆过滤器,这部分需要详细说明。 然后,实际使用示例很重要,用户可能需要代码示例来快速上手。例如,配置Redisson客户端、使用布隆过滤器的代码片段。此外,用户可能对高级功能如分布式锁、限流器感兴趣,这些可以提升他们的应用性能。 参考资源部分,除了官方文档,GitHub和中文社区也是重要的学习渠道。用户可能需要中文资料,所以推荐掘金、博客园等平台。最后,相关问题需要引导用户深入,比如性能优化或与其他工具的对比,这有助于他们全面了解Redisson的应用。 需要检查是否符合用户的要求:结构清晰、步骤明确、引用正确。确保所有数学公式和代码块格式正确,使用中文回答,并生成相关问题。同时,引用之前的引用[3]来支持布隆过滤器的应用场景,保持回答真实可靠。</think>### Redisson API 使用指南 #### 1. 官方文档入口 Redisson官方提供了完整的API文档和配置说明,覆盖分布式对象、锁、集合等核心功能: - **官网文档**:https://redisson.org[^3] - **GitHub仓库**:https://github.com/redisson/redisson #### 2. 核心API模块 | 模块别 | 主要功能 | |-------------------|--------------------------------------------------------------------------| | 分布式对象 | `RAtomicLong`(原子长整型)、`RBucket`(通用对象存储) | | 分布式锁 | `RLock`(可重入锁)、`RReadWriteLock`(读写锁) | | 分布式集合 | `RList`(列表)、`RSet`(集合)、`RMap`(映射) | | 高级工具 | 布隆过滤器(`RBloomFilter`)、限流器(`RRateLimiter`) | #### 3. 实际使用示例 **配置Redisson客户端**: ```java Config config = new Config(); config.useSingleServer() .setAddress("redis://127.0.0.1:6379"); RedissonClient client = Redisson.create(config); ``` **布隆过滤器应用**(参考缓存穿透场景[^3]): ```java RBloomFilter<String> bloomFilter = client.getBloomFilter("urlFilter"); bloomFilter.tryInit(100000L, 0.03); // 初始化容量10万,误判率3% bloomFilter.add("https://example.com"); boolean exists = bloomFilter.contains("https://example.com"); // 判断是否存在 ``` #### 4. 高级功能说明 - **分布式锁**: ```java RLock lock = client.getLock("resourceLock"); lock.lock(); // 加锁 try { // 执行临界区代码 } finally { lock.unlock(); // 确保释放锁 } ``` - **数据分片**:通过`Cluster`模式支持多节点扩展,提升吞吐量。 #### 5. 参考资源推荐 - **中文教程**:掘金社区《Redisson分布式锁原理剖析》 - **视频课程**:B站《Redisson从入门到实战》 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值