* 1024 ,
也就是说。 当大小小于 1MB 的字符串运行追加操作时,sdsMakeRoomFor 就为它们分配多于所需大小一倍的空间;
当字符串的大小大于 1MB 。 那么 sdsMakeRoomFor 就为它们额外多分配 1MB 的空间。

运行过 APPEND 命令的字符串会带有额外的预分配空间。
这些预分配空间不会被释放。 除非该字符串所相应的键被删除, 或者等到关闭 Redis 之后, 再次启动时又一次加载的字符串对象将不会有预分配空间。

由于运行 APPEND 命令的字符串键数量通常并不多,
占用内存的体积通常也不大。 所以这一般并不算什么问题。

还有一方面。 假设运行 APPEND 操作的键非常多。
而字符串的体积又非常大的话, 那可能就须要改动 Redis server。 让它定时释放一些字符串键的预分配空间。 从而更有效地使用内存。

小结

  • Redis 的字符串表示为 sds 。而不是 C 字符串(以 \0 结尾的 char*)。
  • 对照 C 字符串, sds 有下面特性:
    • 能够高效地运行长度计算(strlen);
    • 能够高效地运行追加操作(append);
    • 二进制安全;
  • sds 会为追加操作进行优化:加快追加操作的速度。并减少内存分配的次数,代价是多占用了一些内存。并且这些内存不会被主动释放。

最新文章

  1. potrace源码分析一
  2. UP Board 网络设置一本通
  3. iOS 开发快速导引:iOS 程序框架【草】
  4. Webstorm 10 for mac osx 注册机,序列号,kegen
  5. Largest Rectangle in Histogram
  6. json返回数据库的时间格式为/Date(1477294037000)/,怎样在前台进行格式化转换
  7. javascript 字符串相关知识汇总
  8. php操作redis常用方法源代码
  9. Linux Add a Swap File
  10. 利用Trie树对字符串集合进行排序并计算特征值
  11. python 自学笔记(四) 列表
  12. Struts学习之自定义结果集
  13. NodeJs的简单介绍
  14. POJ 2065 SETI [高斯消元同余]
  15. ELK学习笔记(五)简单搜索和DSL查询
  16. ThinkPHP简单的验证码实现
  17. Do-Now—团队冲刺博客三
  18. iCloud无法导入vCard问题。fix the error when import vcard/vcf to icloud.
  19. iis部署webservice问题集合
  20. Hdu2181 哈密顿绕行世界问题 2017-01-18 14:46 45人阅读 评论(0) 收藏

热门文章

  1. Geeks - Check whether a given graph is Bipartite or not 二分图检查
  2. PLSQL Developer连接远程Oracle方法(非安装client)
  3. 一个tomcat中部署多个项目
  4. Handler(2)
  5. 利用jspx解决jsp后缀被限制拿shell
  6. windows print 自定义字体颜色【python】
  7. java设计模式之组合
  8. win64 QT(VS2013) 配置 CGAL+libQGLViewer
  9. SugarCE问题点记录
  10. Linux内核project导论——网络:路由:路由原理