Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于redis的错误使用 #93

Open
zhanghaou opened this issue Oct 22, 2019 · 4 comments
Open

关于redis的错误使用 #93

zhanghaou opened this issue Oct 22, 2019 · 4 comments

Comments

@zhanghaou
Copy link

在生产环境redis数据量比较大的情况下,使用keys命令会出现超时,https://github.com/shell909090/influx-proxy/blob/master/backend/config.go 代码中多次使用keys命令,建议使用set封装“b:”以及“m:”

@shell909090
Copy link
Owner

😓,你是我知道的第一个配置复杂到redis里不能用keys的。
正解其实不是用set去封装"b:"。"b:"下面的数据是个dict,没法装进set里。使用set只能对backend做一个索引,加速获得所有名字。这个修改会增加结构的复杂度,因为set中的内容和"b:"的内容要严格对应。
正解应该使用json这类可嵌套的结构,或者使用文档数据库去存储配置。其实整个配置就是三个json dict。或者打包到一起也可以说是一个json dict。增加一个config source,从http url上拉配置文件,然后生成配置,貌似是更可行的方案。
我原本的设计,redis只是一个过渡方案。最终方案是用etcd的。这样就不用请求更新配置了。不过貌似过渡方案运行的好好的,一过渡就这么着没动过了。

@zhanghaou
Copy link
Author

我们业务侧使用的redis和其他的系统共用,目前查看数据量已经达到4GB。keys命令的执行已经严重影响redis服务的整体性能了。
简单起见,我们为这个服务单独起个redis~
期待后续方案~

@shell909090
Copy link
Owner

其实不用。你试试开一个单独数据库。redis支持开多个数据库,新版的分支支持指定redis数据库。

@zhanghaou
Copy link
Author

好的,我们这边试一下。没想到这点。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants