0

我正在尝试在 java中实现一个基本的redis 服务器。但是我不确定我必须使用什么数据结构来实现它的数据库。首先我认为简单HashMap就足够了,因为它可以存储<Object, Object>值,我可以实现GETSET命令。但是当我深入研究时,我可以找到像GETBIT,等这样的命令SETBIT,这些命令ZADD需要更复杂的数据库数据结构。

我想我应该使用带有 ConcurrentSkipListMap 类型的值列的 HashMap。我对吗?请帮忙。

而且,我应该在将 Set 命令的字符串值转换为二进制值后存储它吗?

4

2 回答 2

1

实现(甚至是客户端)的完整Java克隆并不是一项简单的任务,并且绝对不适合 SO 答案。redisredis

好消息是,您不需要:您可以使用许多redis Java 客户端。或者,您可以探索其中任何一个客户的代码,并了解您需要什么才能自己实现。

于 2016-10-10T11:59:54.220 回答
0

redis-protocol项目有

netty4-server/ 一个非常高性能的 in-JVM 内存 redis 服务器克隆

作为参考,您可能会发现它很有用。似乎作者主要将数据结构保存在util目录中;这些是您要查看的内容。

这些数据结构当然只是内存中的版本,但是对于一个简单的持久性实现,您可以首先将所有内存中的结构序列化到一个文件中,除非您希望文件可以被真正的 Redis 读取,否则序列化格式应该没关系。

于 2017-05-26T16:01:06.793 回答