zoukankan      html  css  js  c++  java
  • Redis为什么要自己实现一个SDS

    Redis是使用C语言开发的,在C语言中没有字符串这种数据类型,字符串大都是通过字符数组实现的,但是使用字符数组有以下不足:

    1. 字符数组的长度都是固定,容易发生空指针
    2. 获取字符数组的长度的时候需要便利数组,时间复杂度较高
    3. 字符数组长度发生改变之后需要重新分配内存
    4. 使用表示结尾,在存储二进制的时候就会出现问题。


    所以Redis就自己实现了SDS来解决上面的问题,下面是SDS相对的一些优点:
    1. 长度达到一定标准会有相应的扩容。从而解决内存溢出的问题。
    2. 在SDS的内部定义了字符串的长度,使用时可以直接获取。从而解决获取长度时间复杂度高的问题。
    3. SDS是空间预分配,惰性释放内存的。从而减少分配内存的次数
    4. SDS根据长度判断结束的位置。从而解决二进制不安全的问题。

  • 相关阅读:
    Android_方向传感器
    Android 网络图片查看器与网页源码查看器
    SQLite数据库_实现简单的增删改查
    Android 解析JSON
    多线程
    并发编程
    幂等性
    Django缓存机制
    计算机基础
    RESTful规范
  • 原文地址:https://www.cnblogs.com/excellencesy/p/11684549.html
Copyright © 2011-2022 走看看