温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

protobuf在java redis中怎么使用

发布时间:2021-11-24 14:39:55 来源:亿速云 阅读:748 作者: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