1 分•作者: felineflock•10 个月前
返回首页
最新
2 分•作者: breve•10 个月前
1 分•作者: pardnchiu•10 个月前
你好!
我启动并开始一个长期项目,旨在深入理解现代数据库架构和实现。
这个项目是 [go-redis-fallback](<a href="https://github.com/pardnchiu/go-redis-fallback">https://github.com/pardnchiu/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`。
1 分•作者: Bluestein•10 个月前
1 分•作者: Bluestein•10 个月前
2 分•作者: DEMOCRACY360•10 个月前
1 分•作者: qwikhost•10 个月前
1 分•作者: bikenaga•10 个月前
1 分•作者: hez2000•10 个月前
1 分•作者: Bluestein•10 个月前
1 分•作者: fprog•10 个月前
1 分•作者: colinprince•10 个月前
1 分•作者: MintNow•10 个月前
1 分•作者: chriscbr•10 个月前
2 分•作者: PaulHoule•10 个月前
1 分•作者: colinprince•10 个月前
1 分•作者: aravindputrevu•10 个月前
1 分•作者: turbokit•10 个月前
2 分•作者: mountainview•10 个月前
1 分•作者: gnabgib•10 个月前