1作者: pardnchiu10 个月前
你好! 我启动并开始一个长期项目,旨在深入理解现代数据库架构和实现。 这个项目是 [go-redis-fallback](<a href="https:&#x2F;&#x2F;github.com&#x2F;pardnchiu&#x2F;go-redis-fallback">https:&#x2F;&#x2F;github.com&#x2F;pardnchiu&#x2F;go-redis-fallback</a>) 的一个扩展项目,将使用相同的缓存技术构建一个支持 AOF 日志和类似 MongoDB 查询功能的 TCP 连接数据库。 凭借 web-monitor、cim-prototype、rss-reader、im 等项目的经验,我擅长命令解析和动作设置,因此下一步是构建我自己的数据库以供分享。 我已经完成了以下功能: **完整的数据库系统架构** * TCP 服务器:实现一个监听 `127.0.0.1:7989` 的 TCP 服务器。 * CLI 客户端:支持 `cli` 交互和命令执行模式(`-c` 参数)。 * 多数据库支持:允许切换和隔离存储,最多支持 16 个数据库(0-15)。 **基本的 KV 操作系统** * 核心操作:完全实现了 `GET`、`SET`、`DEL`、`EXISTS`、`TYPE`。 * 模式匹配:`KEYS` 命令支持使用 `*` 和 `?` 的通配符搜索。 * TTL 管理:完全实现了 `TTL`、`EXPIRE`、`PERSIST`,并带有自动过期清理功能。 * 类型系统:自动检测类型,如 `string`、`int`、`object`、`array`。 **双重存储系统** * AOF 持久化:记录命令并支持启动时自动恢复。 * 文件缓存:基于 MD5 哈希的三级目录结构 (data/0/ab/cd/ef/hash.json)。 * JSON 格式:包括 `created_at`、`updated_at`、`expire_at`。