java速成
在本文中,我们将使用RocksDB实现一个非常简单的客户端持久键值存储。 想法是将最简单的实现方式作为初始参考。
您可以在文章末尾的“参考”部分中找到包含该文章完整源代码的链接。
来自RocksDB文档 : RocksDB is a persistent and embeddable key-value store for fast storage environments
。 它是开源的,由Facebook创建并仍由其维护,并且已针对闪存驱动器和高速磁盘驱动器等快速,低延迟的存储进行了优化。
让我们创建一个示例,第一步是生成一个带有基本REST端点的初始SpringBoot应用程序,导航到start.spring.io并创建一个应用程序,选择Java 11将执行器和Web添加为依赖项(如果从未这样做过) , 请查看这篇文章 ,您将在最简单的步骤中找到如何做。 我们将此应用程序rocksdbBootApp
。
创建应用程序后,下一步就是将Rocksjava添加为依赖项,在这里您将看到如何使用maven进行操作的摘要。
<properties>
<java.version> 11 </java.version>
<rocksdb.version> 5.5.1 </rocksdb.version>
</properties>
<dependency>
<groupId> org.rocksdb </groupId>
<artifactId> rocksdbjni </artifactId>
<version> ${rocksdb.version} </version>
</dependency>
现在让我们创建一个接口,该接口带有我们想要的基本操作KeyValueRepository
的签名。
package io . stockgeeks . repository ;
public interface KeyValueRepository < K , V > {
void save ( K key , V value );
V find ( K key );
void delete ( K key );
}
好的,我们有基本的初始操作来保存,查找和删除条目,让我们实现这些基本操作,在以下代码片段中要注意的最重要的一点是RocksDB使用字节,因此在交互时它们都被转换为字节数组并返回使用它的API,因为在这个简单的示例中我们在这里使用Strings,我们可以简单地使用getBytes
将String转换为字节数组,然后使用String(byte[] bytes)
构造函数将其重新构建。 如果需要序列化对象,则可以使用spring SerializationUtils
或者如果不使用Spring,则可以使用apache-commons API中的SerializationUtils
类。
首先,我们实现接口,并用本地存储名称声明1个常量,该常量将反映在文件系统的一个目录中,RocksDB将保留数据结构,我们还定义了指向最终文件夹结构的java File
引用和RocksDB
我们要使用的参考,我们纪念类作为@Repository
与Spring注释,并添加使用记录龙目 @Slf4j
注