Redisson底层基于Netty,所以说,它可以用来做很多事情。

  • Redis客户端工具
  • Redis命令执行
  • Redis服务治理(节点管理)
  • 分布式服务
  • 分布式远程服务(RPC)
  • 分布式实时对象服务(Live Object)
  • 分布式执行服务(Executor Service)
  • 分布式调度任务服务(Scheduler Service)
  • 分布式映射归纳服务(MapReduce)
  • 集成到Spring等第三方框架

Redis服务目前有四种形式:单机、主从模式、哨兵模式、集群模式。Redisson作为一款实用很普遍的Redis应用客户端,也支持者几种模式的配置。

单机模式

// 默认连接地址 127.0.0.1:6379
RedissonClient redisson = Redisson.create();
Config config = new Config();
config.useSingleServer().setAddress("myredisserver:6379");

RedissonClient redisson = Redisson.create(config);

主从模式

个人感觉,主从模式,是Redis服务比较核心的一种场景。其中涉及数据同步(全量复制等)、数据备份(持久化:RDB、AOF)、读写分离(master写,slave读)等知识点,在主从模式中都可以说的清楚。

Config config = new Config();
config.useMasterSlaveServers()
        //可以用"rediss://"来启用SSL连接
        .setMasterAddress("redis://127.0.0.1:6379")
        .addSlaveAddress("redis://127.0.0.1:6389", "redis://127.0.0.1:6332", "redis://127.0.0.1:6419")
        .addSlaveAddress("redis://127.0.0.1:6399")
        .setDnsMonitoringInterval(5000) //DNS监控间隔,单位:毫秒
        .setReadMode(ReadMode.MASTER_SLAVE) //读取操作的负载均衡模式
        .setSubscriptionMode(SubscriptionMode.SLAVE) //订阅操作的负载均衡模式,SLAVE - 只在从服务节点里订阅。 MASTER - 只在主服务节点里订阅
        .setLoadBalancer(new org.redisson.connection.balancer.RoundRobinLoadBalancer()) // 负载均衡算法类的选择
        .setSubscriptionConnectionMinimumIdleSize(1) //从节点发布和订阅连接的最小空闲连接数
        .setSubscriptionConnectionPoolSize(50) //从节点发布和订阅连接池大小
        .setSlaveConnectionMinimumIdleSize(32) //从节点最小空闲连接数
        .setSlaveConnectionPoolSize(64) //从节点连接池大小
        .setMasterConnectionMinimumIdleSize(32) //主节点最小空闲连接数
        .setMasterConnectionPoolSize(64) //主节点连接池大小
        .setIdleConnectionTimeout(10000) //连接空闲超时,单位:毫秒
        .setConnectTimeout(10000) //连接超时,单位:毫秒
        .setTimeout(3000) //命令等待超时,单位:毫秒
        .setRetryAttempts(3) //命令(发送)失败重试次数
        .setRetryInterval(1500) // 命令重试发送时间间隔,单位:毫秒,与retryAttempts配合,三次重试均失败,则对应节点需要被剔除
        .setDatabase(0) // 数据库编号
        //.setPassword("") //密码设置
        .setSubscriptionsPerConnection(5) //单个连接最大订阅数量
        .setSslEnableEndpointIdentification(true) //启用SSL终端识别
        .setSslProvider(SslProvider.JDK) // SSL实现方式
        //.setSslTruststorePassword("") //SSL信任证书库密码
        //.setSslKeystore(new URI("")) //SSL钥匙库路径
        //.setSslKeystorePassword("")//SSL钥匙库密码
        .setClientName("clientName");
RedissonClient redisson = Redisson.create(config);

哨兵模式

Config config = new Config();
config.useSentinelServers()
    .setMasterName("mymaster")
    //可以用"rediss://"来启用SSL连接
    .addSentinelAddress("redis://127.0.0.1:26389", "redis://127.0.0.1:26379")
    .addSentinelAddress("redis://127.0.0.1:26319");

RedissonClient redisson = Redisson.create(config);

集群模式

Config config = new Config();
config.useClusterServers()
    .setScanInterval(2000) // 集群状态扫描间隔时间,单位是毫秒
    //可以用"rediss://"来启用SSL连接
    .addNodeAddress("redis://127.0.0.1:7000", "redis://127.0.0.1:7001")
    .addNodeAddress("redis://127.0.0.1:7002");

RedissonClient redisson = Redisson.create(config);