gredis采用接口化设计,具有强大的灵活性和扩展性。

接口定义

https://pkg.go.dev/github.com/gogf/gf/v2/database/gredis#Adapter

相关方法

// SetAdapter sets custom adapter for current redis client.
func (r *Redis) SetAdapter(adapter Adapter) 

// GetAdapter returns the adapter that is set in current redis client.
func (r *Redis) GetAdapter() Adapter

更进一步

由于gredis组件的接口实现是高阶功能,一般来说开发者也无需替换Redis接口实现。感兴趣的朋友可以自行研究。

Content Menu

  • No labels

3 Comments

  1. 问题:现在我需要给Redis操作进行打点,切入日志、Prometheus业务指标采集。看完文档与源码,在gredis层面只能通过自定义Adapter,在创建redis client的时候添加Hook实现,除了这种还有其他方式吗?

    1. 可以参考数据库ORM的Driver实现,"继承"新版本的社区组件Adapter实现,自己覆盖底层的Do方法打点即可,不过可能需要改进下社区组件内部实现把接口对象传递进去(目前内部调用的Do没法覆盖)。

  2. 我应该如何获取底层的 go-redis 实例?我看了下源码似乎没找到获取的方式,请问如何能实现? 郭强