这篇文章主要介绍“protobuf在java redis中怎么使用”,在日常操作中,相信很多人在protobuf在java redis中怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”protobuf在java redis中怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
成都创新互联-专业网站定制、快速模板网站建设、高性价比莱西网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式莱西网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖莱西地区。费用合理售后完善,十余年实体公司更值得信赖。
下面首先介绍在idea 中 使用插件 根据.proto 文件生成 .java 文件
1. 首先在此module 中编写一个.proto 文件
2 pom 引用插件
org.xolstice.maven.plugins protobuf-maven-plugin 0.5.0 com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier} grpc-java io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier} compile
|
点击 protobuf:complie 后
在项目target文件下 会生成一个 Java文件
将此文件复制到你项目源码目录即可使用。完毕后 pom 插件 注释掉。防止每次编译都会生成Java文件 导致项目报错。
2 关于spring Boot 如何集成redis 不再赘述 直接上关于RedisSerializer
类编写
我们现在要使用protobuf 作为redis 存储 序列化 工具。
故 需要编写一个RedisSerializer 实现类:
为了通用,故定义成泛型:
@Slf4jpublic class ProtobufRedisSerializer implements RedisSerializer { private MessageLite messageLite; private Class type; public ProtobufRedisSerializer(T messageLite, Class 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 recordRedisTemplate( RedisConnectionFactory connectionFactory) { RedisTemplate recordRedisTemplate = new RedisTemplate<>(); recordRedisTemplate.setConnectionFactory(connectionFactory); ProtobufRedisSerializer 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中怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
文章标题:protobuf在javaredis中怎么使用
分享地址:
http://shouzuofang.com/article/psicsg.html