SSDB FAQ - 常见问题

收藏108

阅读11717

更新时间2022-04-11


  • 问: 这里没有我想问的问题和答案, 我应该怎么办?

答: 我推荐所有人通过学习文档和使用自己大脑思考来回答自己的问题.

如果你经过学习文档, 并且进行充分思考后, 仍然无法得到答案, 你可以到 Github 上提 issue.

注意, 作为一个技术产品的用户, 一个互联网工作者, 甚至是一个程序员, 你应该学会基本的提问技能. 如果你的提问没有得到回答, 那么责任不在被问者, 而在于你自己, 你自己没有像个正常的技术人那样正确地提问.


  • 问: 为什么我在本机可以访问 SSDB 服务器, 在其它机器却不能呢? 提示 Connection refused.

答: 默认的配置文件基于安全考虑, 只开放给本机访问. 如果你想开放给网络上的其它 IP 访问, 请按文档修改配置.

  • 问: 为什么并发数上不去? 服务器报错 Too many open files, 客户端报错 Connection reset by peer.

答: 请参考文档 进行配置.

  • 问: 我把一个, 两个, 或者所有的 key 都删除了, 为什么 SSDB 占用的内存和磁盘空间并没有释放?

答: SSDB 有自己策略来决定何时释放或者是否释放内存和硬盘占用, 你不能要求 SSDB 立即或者在未来某个时间, 或者基于某个条件 释放这些空间. 而且, 即使数据库清空了, SSDB 仍然会保留一些信息, 因此仍然占用部分硬盘空间. 你不应该关心这个问题.

  • 问: 为什么 SSDB 偶尔会使用 100% CPU?

答: SSDB 偶尔使用 100% CPU 是完全正常的, 请不要大惊小怪. 这是因为 SSDB/LevelDB 在进行数据库整理(Compaction)操作, 持续的时间一般随着数据变大而变长, 一般只持续数秒.

  • 问: 为什么 SSDB 偶尔会使用较多磁盘 IO?

答: SSDB 偶尔使用较多磁盘 IO 是完全正常的, 请不要大惊小怪. 这是因为 SSDB/LevelDB 在进行数据库整理(Compaction)操作, 持续的时间一般随着数据变大而变长, 一般只持续数秒.

  • 问: 为什么 SSDB 偶尔会使用较多内存空间, 然后又降下来?

答: SSDB 使用的内存空间是变动的, 可能忽高忽低. 使用的内存空间的上限在文档 中有描述.

  • 问: Compaction 时服务会有稍微变慢, 我能设定 Compaction 执行的时间吗?

答: 很遗憾, 你不能设定 Compaction 在何时执行, SSDB/LevelDB 有自己策略和机制, 决定何时应该进行 Compaction. 根据大多数用户的使用反馈, Compaction 对服务没有任何影响.

  • 问: 我原来的配置文件中没有打开压缩选项(compression: no), 我能中途把 compression 改为 yes 吗?

答: 是的, 你可以在任何时候修改 compression 选项, 只要你重启 ssdb-server, 新的修改就能生效. 更改后, 原来的数据依然兼容, 不会有任何问题.

  • 问: 我开启了压缩选项, 但 SSDB 的硬盘占用并没有变小, 这是怎么回事?

答: 无论你开启或者关闭压缩选项, 只要重启后, 新的选项就已经生效了. 但是, 新的选项不一定立即影响原来的旧数据, SSDB 会在合适的时候将新选项应用于旧数据, 你无法控制这一点.


  • 问: 有命令可以知道 SSDB 中存储的 key 总数吗?

答: 如果你想统计的是 KV 的数量, 那么, 在一开始时, 你就要把所有 KV 都放在同一个 HASH 中, 然后通过 hsize 命令就可以得到 key 的数量了. 如果一开始你没有这么做, 或者你想统计 KV 以外的数量, 那么答案很简单 - 没有这样的单个命令(除非你自己写脚本遍历统计).

  • 问: SSDB 支持 key 查找吗? 支持通配符 模糊查找吗?

答: SSDB 支持, 且支持前缀查找, 也就是类似a这样的查找, 而不支持 aa 或者其它的模糊查找. 具体用法请参见命令:scanhlistkeyshkeyshscanzlistzkeyszscanqlist 的文档.

注意, 这些命令都要求你省略  号!

  • 问: SSDB 不支持 sets 集合吗? Redis 的 sadd, sdiff 等求交集, 并集命令我都用不了了?

答: SSDB 不支持 sets, 以后也不太可能支持, 因为有替代方案. 你可以用 hash 来替代 sets, 因为一个 hash 的 key 是唯一的, 可以实现集合的特性. 至于交集, 并集等操作, 你只能自己实现. 例如, 求交集, 你可以遍历第一个 hash 的 key, 然后和第二个 hash 对比, 把结果存入第三个 hash.


  • 问: 我用 Twemproxy 配置 SSDB 做负载均衡和集群, 但是当我用 ssdb-cli 连接 Twemproxy 时, 会报错, 为什么?

答: 因为 Twemproxy 不支持 SSDB 网络协议, 所以, 你只能使用 redis-cli 连接 Twemproxy. 注意, 你可以用 ssdb-cli 或者 redis-cli 连接 SSDB, 那是因为 SSDB 支持两种协议, 而 Twemproxy 只支持一种.

  • 问: 如何在一台机器上部署多个 SSDB 实例?

答: 每一个实例使用不同的配置文件进行启动, 而且, 配置文件里的 work_dir server.port 不能相同, 也就是每个实例的数据库存储路径, 以及监听端口. 如果 pidfile logger.output 使用的是绝对路径, 也要保证不能相同, 如果是相对路径, 由不需要, 因为默认跟随 work_dir 而不同了.


相关

视频

RELATED VIDEOS

更多

免费

MySQLi面向过程极速入门
中级 MySQLi面向过程极速入门

127669次学习

收藏

免费

MySQLi面向对象编程极速入门

免费

MySQL权威开发指南(教程)

免费

MySQL高级进阶视频教程
高级 MySQL高级进阶视频教程

122147次学习

收藏

免费

肖文吉Oracle视频教程
初级 肖文吉Oracle视频教程

72226次学习

收藏

免费

魔乐科技oracle视频教程
初级 魔乐科技oracle视频教程

54966次学习

收藏

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.7万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

70.9万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号