一、Redisson配置類
在使用Redisson之前,需要首先將Redisson的配置信息進行初始化。Redisson提供了很多種方式來實現配置信息的初始化,其中最為常用的是通過創建Config對象來設置Redisson的配置信息。創建Config對象有兩種方式,一種是通過代碼創建,另一種是通過讀取配置文件創建。
代碼創建Config對象的方式如下:
// 創建單機模式配置對象
Config config = new Config();
config.useSingleServer().setAddress("redis://127.0.0.1:6379");
RedissonClient redisson = Redisson.create(config);
配置文件創建Config對象的方式如下:
# 創建單機模式配置對象
singleServerConfig:
address: "redis://127.0.0.1:6379"
RedissonClient redisson = Redisson.create(Config.fromYAML(new ClassPathResource("redisson-single.yml").getInputStream()));
二、Redisson配置讀取不到
如果在通過配置文件創建Config對象時,程序運行過程中出現了無法讀取配置文件的情況,可以在創建Config對象時先打印日誌查看讀取了哪些配置文件,以及讀取的文件路徑是否正確。代碼如下:
// 打印日誌
Config config = Config.fromYAML(new ClassPathResource("redisson-single.yml").getInputStream());
log.info("配置文件路徑:" + config.toYAML());
// 創建RedissonClient
RedissonClient redisson = Redisson.create(config);
三、Redisson配置集群
在Redisson中,可以使用多種方式創建Redis的集群。在代碼創建Config對象時,可以使用useClusterServers()方法來創建集群配置對象。在配置文件創建Config對象時,則需要按照以下方式進行配置。
# 集群模式配置
clusterServersConfig:
nodeAddresses:
- "redis://127.0.0.1:6379"
- "redis://127.0.0.1:6380"
- "redis://127.0.0.1:6381"
RedissonClient redisson = Redisson.create(Config.fromYAML(new ClassPathResource("redisson-cluster.yml").getInputStream()));
四、Redisson配置文件
在使用Redisson時,除了可以通過代碼的方式來初始化Redisson的配置信息外,還可以通過配置文件來進行配置。Redisson支持多種配置文件格式,例如properties、json、yml等。以下是一個Redisson的yml配置文件示例:
# 單節點信息配置 singleServerConfig: address: "redis://127.0.0.1:6379" connectionPoolSize: 64 connectionMinimumIdleSize: 32 slaveConnectionPoolSize: 250 masterConnectionPoolSize: 250 readTimeout: 10000 connectTimeout: 10000 timeout: 3000 retryAttempts: 3 retryInterval: 1500 # 集群信息配置 # clusterServersConfig: # nodeAddresses: # - "redis://127.0.0.1:6379" # - "redis://127.0.0.1:6380" # - "redis://127.0.0.1:6381" # scanInterval: 1000 # 哨兵模式配置 # sentinelServersConfig: # masterName: myMaster # sentinelAddresses: # - "redis://127.0.0.1:26379" # - "redis://127.0.0.1:26380" # - "redis://127.0.0.1:26381" # masterConnectionPoolSize: 250 # slaveConnectionPoolSize: 250 # readTimeout: 10000 # connectTimeout: 10000 # timeout: 3000 # retryAttempts: 3 # retryInterval: 1500 # Redisson配置項 # threads: 16
五、Redisson配置哨兵
在使用哨兵模式時,需要創建SentinelServersConfig對象,並將其設置為Config對象的配置信息。代碼創建SentinelServersConfig對象的方式如下:
SentinelServersConfig sentinelConfig = new SentinelServersConfig();
sentinelConfig.setMasterName("mymaster");
sentinelConfig.addSentinelAddress("redis://127.0.0.1:26379");
sentinelConfig.addSentinelAddress("redis://127.0.0.1:26380");
sentinelConfig.addSentinelAddress("redis://127.0.0.1:26381");
config.useSentinelServers().setMasterName("mymaster")
.addSentinelAddress("redis://127.0.0.1:26379")
.addSentinelAddress("redis://127.0.0.1:26380")
.addSentinelAddress("redis://127.0.0.1:26381");
六、Redisson配置參數
根據Redisson的官方文檔,可以根據自己的需要來調整Redisson的各種參數,以達到最優的性能表現。以下是一些常用的配置參數及其說明。
- connectTimeout:連接超時時間,單位:毫秒
- timeout:讀寫超時時間,單位:毫秒
- retryAttempts:連接失敗重試次數,-1表示不限制重試次數
- retryInterval:重試時間間隔,單位:毫秒
- threads:響應請求線程數,最大為16
可以通過以下方式對Redisson的參數進行配置:
Config config = new Config();
config.useSingleServer()
.setAddress("redis://127.0.0.1:6379")
.setRetryAttempts(3)
.setRetryInterval(1500)
.setTimeout(3000)
.setThreads(8);
七、Redisson配置序列化
為了提高Redisson的性能表現,Redisson在數據存儲時使用了高效的序列化機制。在Redisson中,默認使用的是JDK序列化機制,但是考慮到JDK的序列化機制在序列化性能、序列化結果可讀性、可靠性等方面存在一些問題,因此Redisson提供了多種序列化方式供用戶選擇。
常用的序列化方式有三種:JDK序列化、FastJSON序列化和Kryo序列化。其中,Kryo序列化是性能最高的一種序列化方式,但是需要注意的是,Kryo序列化與JDK序列化不兼容,因此在使用Kryo序列化時需要注意操作系統的類型及JDK的版本。
如果要對Redisson的序列化機制進行定製,可以通過以下方式來實現。
// 基於Jackson序列化
SerializationConfig serialConfig = config.getCodec().getSerializationConfig();
serialConfig.setJacksonObjectMapper(new ObjectMapper());
// 基於FastJSON序列化
SerializationConfig serialConfig = config.getCodec().getSerializationConfig();
serialConfig.setSerializer("com.alibaba.fastjson.JSON").setDecoder("com.alibaba.fastjson.JSON");
// 基於Kryo序列化
SerializationConfig serialConfig = config.getCodec().getSerializationConfig();
Kryo kryo = new Kryo();
kryo.register(User.class);
kryo.register(Order.class);
kryo.register(Item.class);
kryo.register(ArrayList.class);
kryo.register(LinkedList.class);
kryo.register(RedisCommand.class);
UnicornKryoPool pool = new UnicornKryoPoolImpl(kryo);
serialConfig.setKryoPool(pool);
八、Redisson配置了集群不生效
如果在配置完Redisson集群之後,出現了集群無法使用的情況,可以先檢查一下Redisson的版本號是否與Redis的版本是否匹配。Redisson的版本號最好與Redis的版本號一致,否則可能會出現一些兼容性問題。
如果Redisson的版本號與Redis的版本號一致,那麼可以通過以下方式來檢查Redisson的配置是否正確:
RedissonClient redisson = Redisson.create(Config.fromYAML(new ClassPathResource("redisson-cluster.yml").getInputStream()));
// 打印Redisson的日誌
((RLogger)redisson.getConfig().getLogger()).setLevel(Level.DEBUG);
log.debug("Redisson配置信息:" + redisson.getConfig().toJSON());
九、Redisson配置yml
在使用Redisson時,可以根據自己的需求對Redisson的參數進行配置。可以將Redisson的配置信息存儲在一個名為redisson.yml的文件中,然後通過Config.fromYAML()方法來加載配置信息。以下是一個Redisson的yml配置文件示例:
singleServerConfig: address: "redis://127.0.0.1:6379" connectionMinimumIdleSize: 10 connectionPoolSize: 64 retryAttempts: 3 retryInterval: 1500 connectTimeout: 10000 timeout: 3000 threads: 64
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/179942.html
微信掃一掃
支付寶掃一掃