优秀的编程知识分享平台

网站首页 > 技术文章 正文

Redisson启动及服务、命令模式分析

nanyue 2024-09-01 00:05:56 技术文章 6 ℃

以AtomicDoubleExamples为入口,初步分析redisson启动及命令、服务

  1. Redisson 启动的主类为org.redisson.Redisson, 启动主要是初始化connection pool,还有两个比较少用的evictionScheduler(local cache housekeeping?)及local cache用的WriteBehindService ?
  2. Redisson从config、connectionManager、connectionPool、Entry对象都按redis 类型来区分,如single ,masterslave、sentinel、cluster等,但核心都是masterSlave
  3. connection pool里面分Redission的Executor 及netty client两部分,默认都是Runtime.getRuntime().availableProcessors() * 2;
  4. pool的创建,以masterSlave(含single),都是在都 在protected MasterSlaveConnectionManager(Config cfg, UUID id)内创建
  5. 线程数量配置对应在 下面json的threads及nettyThread {
    “singleServerConfig”:{
    “idleConnectionTimeout”:10000,
    “pingTimeout”:1000,
    “connectTimeout”:10000,
    “timeout”:3000,
    “retryAttempts”:3,
    “retryInterval”:1500,
    “reconnectionTimeout”:3000,
    “failedAttempts”:3,
    “password”:null,
    “subscriptionsPerConnection”:5,
    “clientName”:null,
    “address”: “redis://192.168.157.130:6379”,
    “subscriptionConnectionMinimumIdleSize”:1,
    “subscriptionConnectionPoolSize”:2,
    “connectionMinimumIdleSize”:1,
    “connectionPoolSize”:2
    ,
    “database”:0
    },
    “threads”:1,
    “nettyThreads”:2,
    “codec”:{
    “class”:“org.redisson.codec.JsonJacksonCodec”
    },
    “transportMode”:“NIO”
    }

与Redis进行交互设计为多个Command, command 简单总结如下:

  1. 实际都是异步执行,同步通过封装feature、promise实现
  2. 关键package org.redisson.executor及package org.redisson.command;
  3. 最终执行commandExecutor.writeAsync(
  4. 命令清单:RedisCommands
  5. 命令类:RedisCommand 有一个关键实现convert,AtomicDouble在redis内实际是文本模式保存,通过convert进行转换

Tags:

最近发表
标签列表