Go语言开发的简易版 Redis

Go语言开发的简易版 Redis
Go语言开发的简易版 Redis
Go语言开发的简易版 Redis
Go语言开发的简易版 Redis

今天给大家推荐一个我最近正在学习的 Go 开源项目,一个使用 Go 语言实现的简易版 Redis —— Godis。

目前,Godis 这个项目在 Github 上收获了 2.3k star。

麻雀虽小,五脏俱全!目前这个项目已经支持下面这些功能:

  • 支持 string, list, hash, set, sorted set, bitmap 数据结构
  • 自动过期功能(TTL)
  • 发布订阅
  • 地理位置
  • AOF 持久化及 AOF 重写
  • 加载和导出 RDB 文件
  • Multi 命令开启的事务具有原子性隔离性. 若在执行过程中遇到错误, godis 会回滚已执行的命令
  • 内置集群模式. 集群对客户端是透明的, 您可以像使用单机版 redis 一样使用 godis 集群
    • MSETMSETNXDELRenameRenameNX 命令在集群模式下原子性执行, 允许 key 在集群的不同节点上
    • Multi 命令开启的事务在集群模式下支持在同一个 slot 内执行
  • 并行引擎, 无需担心您的操作会阻塞整个服务器.

如果你正在学习 Redis 的话,这个项目有助于你理解 Redis 的底层运行原理。

如果你正在学习 Go 语言的话,这个项目不仅可以让你对 Go 语言有进一步的认识,还能让你知道如何使用 Go 语言开发高并发中间件。

项目地址:https://github.com/HDT3213/godis 。

项目运行

你可以在 Release 页下载 Darwin(MacOS) 和 Linux 版可执行文件,然后使用下面的命令启动:./godis-darwin
./godis-linux

然后,我们可以使用 redis-cli 或者其它 redis 客户端连接 Godis 服务器(默认监听 6399 端口):redis-cli -p 6399

这个项目的源代码还是比较多的。不过,如果你想要学习的话,也没有关系。

源码学习

我建议你看看作者提供了一系列非常详细的指导教程,一共有 10 多篇文章。

从使用 Go 编写 TCP 服务器,到使用 Go 实现内存数据库再到使用 GeoHash 实现搜索附近的人,再到 RDB 文件实现,都有介绍到。

文章地址:https://www.cnblogs.com/Finley/category/1598973.html 。

作者:JackLee,如若转载,请注明出处:https://www.wlwlm.com/article/5747.html

JackLee的头像JackLee超级管理员
上一篇 2024年2月20日
下一篇 2024年2月21日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注