日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java使用Lettuce客戶端在Redis在主從復制模式下命令執行的操作

瀏覽:22日期:2022-08-14 17:04:25
1 redis主從復制的概念

多機環境下,一個redis服務接收寫命令,當自身數據與狀態發生變化,將其復制到一個或多個redis。這種模式稱為主從復制。在redis中通過命令salveof命令讓執行該命令的redis復制另一個redis數據與狀態。我們將主服務器稱為master,從服務器稱為slave。

主從復制保證了網絡異常正常時,網絡斷開重的情況下將數據復制。網絡正常時master會通過發送命令保持對slave更新,更新包括客戶端的寫入,key的過期或被逐出等網絡異常,master與slave連接斷開一段時間,slave重連上master后會嘗試部分重同步,重新獲取連接斷開期間丟失的命令。當無法進行部分重同步,則會執行全量重同步。

2 為什么需要主從復制

為了保證數據不丟失,有時會用到持久化功能。但這樣會增加磁盤IO操作。通過使用主從復制,可以替代持久化并減少IO操作,降低延遲提高性能。

主從模式下,master負責處理寫,slave負責讀。雖然主從同步會導致在數據存在不一致窗口,但可以增加讀操作的吞吐量。主從模式避免了redis單點風險。通過副本提高系統可用性。當master掛掉,從slave中選舉新的機器作為master保證系統可用。

3 主從復制配置及原理

主從復制可以分為三個階段:初始化、同步、命令傳播。

初始化:從服務器執行完 slaveof 命令后,slave與master建立socket連接。連接建立完畢后通過ping進行心跳檢測,若master正常,則返回響應。如果出現故障收不到響應,那么slave會重新嘗試連接master。如果master設置了認證信息,則會再檢查認證數據是否正確。如果認證失敗,則會報錯。

同步:當初始化完畢,master收到slave的數據同步命令后,需要判斷是否執行全量同步還是部分同步。

命令傳播:同步完成后,master與slave通過心跳檢測判斷對方是否在線。slave同時向master發送自己復制緩沖區的偏移量。master根據這些請求,判斷是否向slave同步新產生的命令。slave收到同步的命令后執行,最終與master保持同步。

4 使用Lettuce在主從模式下執行命令

常用的Java Redis客戶端有Jedis、Redission、Lettuce。這里將通過Lettuce來演示主從模式下的讀寫分離命令執行。

<dependency> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> <version>5.1.8.RELEASE</version></dependency>

下面通過

package redis;import io.lettuce.core.ReadFrom;import io.lettuce.core.RedisClient;import io.lettuce.core.RedisURI;import io.lettuce.core.api.sync.RedisCommands;import io.lettuce.core.codec.Utf8StringCodec;import io.lettuce.core.masterslave.MasterSlave;import io.lettuce.core.masterslave.StatefulRedisMasterSlaveConnection;import org.assertj.core.util.Lists; class MainLettuce { public static void main(String[] args) {List<RedisURI> nodes = Lists.newArrayList(RedisURI.create('redis://localhost:7000'),RedisURI.create('redis://localhost:7001'));RedisClient redisClient = RedisClient.create();StatefulRedisMasterSlaveConnection<String, String> connection = MasterSlave.connect(redisClient,new Utf8StringCodec(), nodes);connection.setReadFrom(ReadFrom.SLAVE);RedisCommands<String, String> redisCommand = connection.sync();redisCommand.set('master','master write test2');String value = redisCommand.get('master');System.out.println(value);connection.close();redisClient.shutdown(); }}

補充:Redis 客戶端之Lettuce配置使用(基于Spring Boot 2.x)

開發環境:使用Intellij IDEA + Maven + Spring Boot 2.x + JDK 8

Spring Boot 從 2.0版本開始,將默認的Redis客戶端Jedis替換問Lettuce,下面描述Lettuce的配置使用。

1.在項目的pom.xml文件下,引入Redis在Spring Boot 下的相關Jar包依賴

properties><redisson.version>3.8.2</redisson.version> </properties> <dependencies><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId></dependency> </dependencies>2.在項目的resources目錄下,在application.yml文件里添加lettuce的配置參數

#Redis配置spring: redis: database: 6 #Redis索引0~15,默認為0 host: 127.0.0.1 port: 6379 password: #密碼(默認為空) lettuce: # 這里標明使用lettuce配置 pool:max-active: 8 #連接池最大連接數(使用負值表示沒有限制)max-wait: -1ms #連接池最大阻塞等待時間(使用負值表示沒有限制)max-idle: 5 #連接池中的最大空閑連接min-idle: 0 #連接池中的最小空閑連接 timeout: 10000ms #連接超時時間(毫秒)3.添加Redisson的配置參數讀取類RedisConfig

package com.dbfor.redis.config;import org.springframework.cache.annotation.CachingConfigurerSupport;import org.springframework.cache.annotation.EnableCaching;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration@EnableCachingpublic class RedisConfig extends CachingConfigurerSupport { /** * RedisTemplate配置 * @param connectionFactory * @return */ @Bean public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory connectionFactory) {// 配置redisTemplateRedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(connectionFactory);redisTemplate.setKeySerializer(new StringRedisSerializer());//key序列化redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());//value序列化redisTemplate.afterPropertiesSet();return redisTemplate; }}4.構建Spring Boot的啟動類RedisApplication

package com.dbfor.redis;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class RedisApplication { public static void main(String[] args) {SpringApplication.run(RedisApplication.class); }}5.編寫測試類RedisTest

package com.dbfor.redis;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;import org.springframework.test.context.junit4.SpringRunner;@SpringBootTest@RunWith(SpringRunner.class)@Componentpublic class RedisTest { @Autowired private RedisTemplate redisTemplate; @Test public void set() {redisTemplate.opsForValue().set('test:set1', 'testValue1');redisTemplate.opsForSet().add('test:set2', 'asdf');redisTemplate.opsForHash().put('hash1', 'name1', 'lms1');redisTemplate.opsForHash().put('hash1', 'name2', 'lms2');redisTemplate.opsForHash().put('hash1', 'name3', 'lms3');System.out.println(redisTemplate.opsForValue().get('test:set'));System.out.println(redisTemplate.opsForHash().get('hash1', 'name1')); }}6.在Redis上查看運行結果

Java使用Lettuce客戶端在Redis在主從復制模式下命令執行的操作

從上圖可以看到,Lettuce配置操作數據庫成功!

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩欧美一区二区三区免费看| 日韩美女精品| 欧美性www| 久久黄色影视| 九九99久久精品在免费线bt| 欧美激情三区| 91日韩免费| 99久精品视频在线观看视频| 亚洲国产综合在线看不卡| 少妇精品导航| 亚洲一区国产一区| 国产精品av一区二区| 欧美日韩国产欧| 亚洲综合婷婷| 国产日韩在线观看视频| 麻豆久久久久久| 久久久成人网| 亚洲精品乱码久久久久久蜜桃麻豆| 日韩精品亚洲专区| 精品久久久久中文字幕小说| 久久久久网站| 亚洲制服一区| 国产日韩电影| 亚洲午夜免费| 日韩欧美三级| **爰片久久毛片| 久久精品二区亚洲w码 | 国产亚洲一卡2卡3卡4卡新区| 国产精品成人一区二区网站软件| 国产成人精品一区二区三区视频 | 青青国产91久久久久久| 久久男人av| 夜夜嗨网站十八久久| 一区二区三区四区精品视频| 麻豆传媒一区二区三区| 日韩深夜视频| 国产一区 二区| 99精品一区| 高清在线一区| 日本不卡一区二区| 欧美福利在线| 成人精品高清在线视频| 亚洲精品一区二区在线播放∴| 欧美激情麻豆| 欧美日韩1区2区3区| 国产视频亚洲| 九色porny丨国产首页在线| 青青草精品视频| 亚洲乱码视频| 亚洲欧美日本日韩| 中文在线а√天堂| 国产精品久久久久久久久妇女| 日韩一区二区三区免费视频| 亚洲精品123区| 精品中文字幕一区二区三区av| 国产一区二区三区网| 国产高清视频一区二区| 日韩精选在线| 日韩福利在线观看| 亚洲精品伊人| 日韩av一区二区三区四区| 美女国产一区| 蜜臀精品一区二区三区在线观看| 韩日一区二区三区| 欧美+亚洲+精品+三区| 精品一区二区三区视频在线播放 | 日韩精品不卡一区二区| 麻豆久久一区二区| 精品一区二区三区视频在线播放 | 另类小说一区二区三区| 九九九精品视频| 国产三级精品三级在线观看国产| 日本不卡一二三区黄网| 欧美另类中文字幕| 久久精品国产精品亚洲毛片| 给我免费播放日韩视频| 日韩毛片视频| 女主播福利一区| 日韩中文字幕亚洲一区二区va在线 | 精品91福利视频| 久久男人av资源站| 精品理论电影在线| 欧美aa国产视频| 亚洲精品三级| 97国产成人高清在线观看| 久久精品不卡| 在线国产日韩| 精品久久国产一区| 国产亚洲网站| 欧美国产中文高清| 99久久婷婷| 日本天堂一区| 欧美日韩中文字幕一区二区三区| 亚洲欧美久久| 国产精品99久久精品| 一区在线视频观看| 亚洲精品黄色| 国产aⅴ精品一区二区三区久久| 999久久久91| 国产日本精品| 午夜久久一区| 美女精品久久| 免费人成在线不卡| 国产资源在线观看入口av| 免费久久99精品国产自在现线| 久久一区亚洲| 综合激情婷婷| 成人羞羞视频在线看网址| 亚洲一区二区三区久久久| 狂野欧美性猛交xxxx| 国产视频欧美| 色婷婷亚洲mv天堂mv在影片| 日韩有吗在线观看| 欧美一区三区| 国产一区调教| 国产精品天堂蜜av在线播放| 亚洲特级毛片| 神马久久午夜| 国产一区二区久久久久| 国产精品天堂蜜av在线播放| 日韩精品一区二区三区中文 | 欧美激情在线精品一区二区三区| 一本一本久久| 91精品国产91久久久久久黑人| 欧美日韩夜夜| 日韩精品视频在线看| 蜜臀精品久久久久久蜜臀| 欧美a级片一区| 91成人超碰| 亚洲精品小说| 欧美日韩国产免费观看| 亚洲91精品| 国产精品88久久久久久| 今天的高清视频免费播放成人| 亚洲国产综合在线看不卡| 欧美色图国产精品| 99久久久国产精品美女| 欧美亚洲激情| 美日韩精品视频| 日韩精品亚洲一区二区三区免费| 日韩精品一级| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 超碰成人av| 成人羞羞视频播放网站| 亚洲少妇诱惑| 欧美日韩a区| 国产一区二区三区国产精品| 日韩欧美自拍| 一区二区国产在线观看| 欧美一区激情| 欧美日韩一二三四| 日本在线不卡视频| 日本久久综合| 久久国产精品毛片| 国产精品久久久网站| 欧美一区久久久| 中文字幕亚洲影视| 国产一区国产二区国产三区| 99国产精品| 欧美极品中文字幕| 亚洲成人日韩| 欧美亚洲tv| 成人av二区| 91欧美日韩| 91欧美日韩在线| 黄色成人91| 四季av一区二区凹凸精品| 免费观看在线色综合| 国产传媒在线观看| 91精品福利观看| 在线综合亚洲| 快播电影网址老女人久久| 欧美自拍一区| 免费国产亚洲视频| 91精品国产调教在线观看| 久久99偷拍| 亚洲三级网站| 精品91久久久久| 国产在线欧美| 国内亚洲精品| 久久亚洲精品中文字幕蜜潮电影| 久久99久久人婷婷精品综合| 亚洲专区视频| 亚洲欧美激情诱惑| 99国产精品久久久久久久| 群体交乱之放荡娇妻一区二区| 国产精品www994| 国产乱码精品一区二区三区四区 | 国产伦精品一区二区三区千人斩| 欧美在线资源| 亚洲黄色在线| 国产亚洲一级| 国产色综合网| 国产精品社区| 亚洲欧美综合| 亚洲一区欧美二区| 欧美专区18| 亚洲婷婷丁香| 日本少妇一区二区| 国产欧美一区二区精品久久久 |