中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

protobuf在java redis中怎么使用

發布時間:2021-11-24 14:39:55 來源:億速云 閱讀:749 作者:iii 欄目:大數據

這篇文章主要介紹“protobuf在java redis中怎么使用”,在日常操作中,相信很多人在protobuf在java redis中怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”protobuf在java redis中怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

下面首先介紹在idea 中 使用插件 根據.proto 文件生成 .java 文件

1. 首先在此module 中編寫一個.proto 文件

protobuf在java redis中怎么使用

2 pom 引用插件


<plugin>  <groupId>org.xolstice.maven.plugins</groupId>  <artifactId>protobuf-maven-plugin</artifactId>  <version>0.5.0</version>  <configuration>    <protocArtifact>      com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}    </protocArtifact>    <pluginId>grpc-java</pluginId>    <pluginArtifact>      io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}    </pluginArtifact>  </configuration>  <executions>    <execution>      <goals>        <goal>compile</goal>      </goals>    </execution>  </executions></plugin>
   

 

protobuf在java redis中怎么使用

點擊 protobuf:complie 后

在項目target文件下 會生成一個 Java文件

protobuf在java redis中怎么使用

將此文件復制到你項目源碼目錄即可使用。完畢后 pom 插件 注釋掉。防止每次編譯都會生成Java文件 導致項目報錯。

2 關于spring Boot 如何集成redis 不再贅述 直接上關于RedisSerializer

類編寫

我們現在要使用protobuf 作為redis 存儲 序列化 工具。

故 需要編寫一個RedisSerializer 實現類:

為了通用,故定義成泛型:


@Slf4jpublic class ProtobufRedisSerializer<T extends MessageLite> implements RedisSerializer<T> {  private MessageLite messageLite;  private Class<T> type;  public ProtobufRedisSerializer(T messageLite, Class<T> type) {    this.messageLite = messageLite;    this.type = type;  }  @Override  public byte[] serialize(T t) throws SerializationException {    return t.toByteArray();  }  @Override  public T deserialize(byte[] bytes) throws SerializationException {    try {      if (Objects.isNull(bytes) || bytes.length == 0) {        return null;      }      MessageLite messageLite = this.messageLite.getParserForType().parseFrom(bytes);      return type.cast(messageLite);    } catch (InvalidProtocolBufferException e) {      log.error("ProtobufRedisSerializer error", e);    }    return null;  }}
   

 

核心代碼如上:

附上RedisTenplateConfig


@Beanpublic RedisTemplate<String, DynamicRecord> recordRedisTemplate(    RedisConnectionFactory connectionFactory) {  RedisTemplate<String, DynamicRecord> recordRedisTemplate = new RedisTemplate<>();  recordRedisTemplate.setConnectionFactory(connectionFactory);  ProtobufRedisSerializer<DynamicRecord> protobufRedisSerializer = new ProtobufRedisSerializer<>(      DynamicRecord.getDefaultInstance(), DynamicRecord.class);  recordRedisTemplate.setValueSerializer(protobufRedisSerializer);  recordRedisTemplate.setHashValueSerializer(protobufRedisSerializer);  StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();  recordRedisTemplate.setKeySerializer(stringRedisSerializer);  recordRedisTemplate.setHashKeySerializer(stringRedisSerializer);  return recordRedisTemplate;}
   

 

到此,關于“protobuf在java redis中怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

基隆市| 齐齐哈尔市| 松溪县| 平武县| 永登县| 淅川县| 合山市| 大英县| 浮山县| 若羌县| 新津县| 南宁市| 抚顺市| 阿克苏市| 五大连池市| 龙南县| 双鸭山市| 汤阴县| 新闻| 望城县| 金川县| 多伦县| 盐城市| 汨罗市| 梅州市| 惠东县| 洱源县| 陆川县| 小金县| 禹城市| 长泰县| 扎鲁特旗| 巴林左旗| 玉龙| 若尔盖县| 双峰县| 侯马市| 盐池县| 广东省| 天祝| 东阳市|