Skip to content

eutopia-ink/go_redis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go_redis

启动方式

  • 根目录下运行main文件即可 go run main.go
  • 配置文件为redis.conf,配置内容:
    • bind: 服务器地址
    • port:服务端口
    • databases:数据库连接池最大值
    • appendonly:是否开启AOF
    • appendfilename:AOF文件名
    • self:集群模式下使用,本机地址
    • peers:集群模式下使用,集群内部其他服务器地址,使用,隔开

TCP服务器框架

  • 实现了系统信号获取,以便于通知客户端服务关闭
  • 使用atomic包完成了布尔类型锁,避免handler的同步问题
  • 封装WaitGroup方法,实现可延时退出

Redis DB核心

  • 实现了 RESP 协议的封装与解析
  • 实现了基于sync/map的线程安全字典类型交互
    • TYPE $KEY
    • KEYS $KEY
    • FLUSHDB
    • RENAME $KEY1 $NEWKEY1
    • RENAMENX $KEY1 $NEWKEY1
    • DEL $KEY1 [$KEY2 ...]
    • EXIST $KEY1 [$KEY2 ...]
  • 实现了基于string的类型交互
    • GET $KEY
    • SET $KEY1 $VALUE [$KEY2 $VALUE2 ...]
    • SETNX $KEY1 $VALUE
    • GETSET $KEY1 $VALUE
    • STRLEN $KEY
  • 实现了 AOF 文件模块的自动读取与写入

集群模式

  • 实现了一致性哈希转发
  • 实现了各节点的连接池维护
  • 实现了应对不同命令类型的转发方式

About

使用go实现redis

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages