一、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