颜色选取网站,深圳罗湖商城网站建设,网站确定关键词 如何做,网站定制开发 团队目录 1 Redisson介绍
2. 与其他Java Redis客户端的比较
3.基本的配置与连接池
3.1 依赖和SDK
3.2 配置内容解析
4 实战案例#xff1a;优雅的让Hash的某个Field过期
5 Redisson的强大功能 1 Redisson介绍
Redisson 最初由 GitHub 用户 “mrniko” 创建#xff0c;并在…目录 1 Redisson介绍
2. 与其他Java Redis客户端的比较
3.基本的配置与连接池
3.1 依赖和SDK
3.2 配置内容解析
4 实战案例优雅的让Hash的某个Field过期
5 Redisson的强大功能 1 Redisson介绍
Redisson 最初由 GitHub 用户 “mrniko” 创建并在 Apache 2.0 许可证下发布。它的目标是提供一组强大的工具和 API帮助开发人员在分布式环境中处理数据并解决并发和一致性的问题。
Redisson 是一款在 Redis 的基础上实现的 Java 驻内存数据网格In-Memory Data Grid。它提供了很多分布式的java对象并直接映射到Redis服务器的数据结构。 Redisson 提供了一系列丰富的 Redis 对象供用户使用比如Bucket, Deque, Set, SortedSet, Map, Lock, AtomicLong, CountDownLatchPublish / SubscribeBloom filter, HyperLogLog 等等。它能使开发者可以直接在代码中操纵这些对象而不是维护细节提高了开发的效率。 Redisson 具有以下优势和特点
简单易用Redisson 提供了简单、一致的 API使得开发人员可以像使用本地对象一样使用分布式对象。高性能Redisson 使用了异步和无锁的设计以最大程度地提高性能和吞吐量。分布式数据结构Redisson 提供了一系列分布式数据结构如分布式集合、分布式映射、分布式列表等使得处理大规模数据变得更加高效。分布式锁Redisson 提供了可重入的分布式锁帮助开发人员解决并发访问的问题。分布式队列Redisson 提供了分布式队列支持先进先出和优先级队列适用于任务调度和消息传递等场景。高可用和故障恢复Redisson 支持主从复制和哨兵模式确保系统的高可用性和故障恢复能力。 2. 与其他Java Redis客户端的比较
和Jedis以及Lettuce等其他Redis Java客户端比较Redisson提供了更丰富的分布式对象模型以及更强大的并发处理和故障恢复特性。 Redisson的高级特性包括高级Java对象、故障转移、母子复制支持、公平锁支持和分布式服务等使它成为Java环境中最强大、最灵活的Redis客户端之一。 Redisson与其他Java Redis客户端(Jedis和Lettuce)的比较足以看出来他的天下无敌。
项目RedissonJedisLettuceRedis数据类型支持支持全部包括流支持全部支持全部高级Java对象多班并发和分布式Java对象没有没有连接池有有有集群支持有有有故障转移有没有有母子复制支持有没有有SSL支持有有有LUA scripting有有只读有只读响应式API有没有有事务支持有有有分布式锁有包括公平锁没有没有公平锁支持有没有没有发布和订阅有有有异步API有没有有分布式服务有例如BloomFilterBitSetAtomicLong等没有没有
3.基本的配置与连接池
3.1 依赖和SDK
通过在Maven或Gradle中添加以下依赖来使用Redisson dependencygroupIdorg.redisson/groupIdartifactIdredisson/artifactIdversion3.13.6/version/dependency
3.2 配置内容解析
Redisson的配置功能就就比较强大了我们通过下面的文件看一个配置示例
# Redisson 配置文件# Redisson 服务器地址
# 可以是单个服务器或多个服务器
# 多个服务器之间使用逗号分隔
redisson.address redis://127.0.0.1:6379,redis://127.0.0.2:6379# Redisson 连接超时时间毫秒
redisson.connectionTimeout 3000# Redisson 密码
redisson.password password# Redisson 连接池配置# 最小空闲连接数
redisson.connectionPool.minIdle 10# 最大连接数
redisson.connectionPool.maxSize 100# 连接空闲超时时间毫秒
redisson.connectionPool.idleTimeout 10000# 连接最大空闲时间毫秒
redisson.connectionPool.maxIdleTime 60000# Redisson 重试配置# 重试次数
redisson.retryAttempts 3# 重试间隔时间毫秒
redisson.retryInterval 1000# Redisson 序列化配置
# 可以选择不同的序列化方式如 JSON、Jackson、Kryo 等
redisson.codec org.redisson.codec.JsonJacksonCodec# Redisson 事件监听器配置# 是否启用事件监听器
redisson.listener.enable true# 事件监听器线程池大小
redisson.listener.threadPoolSize 10# Redisson 集群配置# 是否启用集群模式
redisson.cluster.enabled false# 集群节点地址
redisson.cluster.nodes redis://127.0.0.1:6379,redis://127.0.0.2:6379# 集群扫描间隔时间毫秒
redisson.cluster.scanInterval 2000通过在配置中设置 connectionMinimumIdleSize 和 connectionPoolSize 参数可以进行Redisson的连接池配置。
connectionMinimumIdleSize最小空闲连接数表示即使没有数据库连接时依然维持的空闲连接数量。默认值32connectionPoolSize最大连接池数量对所有ROUTER节点来说都是公用的。默认值64
注意配置中的其它参数也会影响Redisson的性能和行为比如timeout, retryAttempts, retryInterval等等。应根据实际应用需要来调整这些参数。 当然我们可以为每个配置项添加注释以方便理解每个参数的作用。下面是带注释的YAML配置文件
singleServerConfig:idleConnectionTimeout: 10000 # 空闲连接超时单位毫秒connectTimeout: 10000 # 连接超时单位毫秒timeout: 3000 # 命令等待超时单位毫秒retryAttempts: 3 # 命令失败重试次数retryInterval: 1500 # 命令重试发送间隔单位毫秒password: null # Redis 服务器密码subscriptionsPerConnection: 5 # 每个连接的最大订阅数量clientName: null # Redis 客户端名称address: redis://127.0.0.1:6379 # Redis 服务器地址subscriptionConnectionMinimumIdleSize: 1 # 订阅连接的最小空闲数量subscriptionConnectionPoolSize: 50 # 订阅连接的最大连接数量connectionMinimumIdleSize: 10 # 正常连接的最小空闲数量至少保持10个空闲连接connectionPoolSize: 50 # 正常连接的最大连接数量最多可以创建50个连接database: 0 # 连接的数据库编号默认是0dnsMonitoringInterval: 5000 # DNS监控间隔单位毫秒4 实战案例优雅的让Hash的某个Field过期
为了感受 redisson 的强大我们写一个redis其他客户端不具备的能力。 使用redisson 设置 hash结构的二级key过期。也就是设置hash 结构的 field 设置过期时间。我们使用redisson优雅的使Hash的某个Field过期。 redisson.yaml 示例:
singleServerConfig:idleConnectionTimeout: 10000connectTimeout: 10000timeout: 3000retryAttempts: 3retryInterval: 1500password: nullsubscriptionsPerConnection: 5clientName: nulladdress: redis://127.0.0.1:6379subscriptionConnectionMinimumIdleSize: 1subscriptionConnectionPoolSize: 50connectionMinimumIdleSize: 10connectionPoolSize: 50database: 0dnsMonitoringInterval: 5000测试
package com.icepip,redisson.example;import org.redisson.Redisson;
import org.redisson.api.RBucket;
import org.redisson.api.RMap;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;import java.util.concurrent.TimeUnit;public class Main {public static void main(String[] args) {Config config Config.fromYAML(Main.class.getClassLoader().getResource(redisson.yaml));RedissonClient redisson Redisson.create(config);// 设置Hash的key和valueRMapString, String map redisson.getMap(hash);map.put(field, value);// 对于相应的key设置过期时间RBucketString bucket redisson.getBucket(hash:field:expire);bucket.set(dummyValue, 5, TimeUnit.MINUTES);}
}5 Redisson的强大功能
在网上能看到这么一张图这些都是使用redissonredis可以实现的功能 由此可见其功能只强大。 这部分内容可以参考
redission分布式锁的实战案例
redisson使用全解——redisson官方文档注释