Redis基础面试知识点(1)

相比于C字符串,SDS的优势:

  1. O(1)获取字符串的长度
  2. 不会缓冲区溢出
  3. 减少修改字符串时所需的内存重新分配的次数(空间预分配、惰性空间释放)
  4. 二进制API安全(通过len获取长度)
  5. 兼容部分C字符串函数

Redis hash策略

1. Redis中的字典使用哈希表作为底层,每个字典带有两个哈希表,一个平时使用,另一个仅在rehash的时候使用
2. 字典作为数据库或者哈希键的底层实现时,Redis使用MurmurHash2算法来计算键的哈希值
3. 哈希表使用链地址法来解决哈希冲突,被分配到同一个键值上的多个索引会链接形成一个单向链表
4. 在对哈希表进行扩展或者收缩时,rehash过程不是一次完成,而是渐进式完成

在这里插入图片描述

embstrraw

在这里插入图片描述

embtr优势:

  • embstr编码将创建字符串对象所需的内存分配次数从raw的两次降低为一次。
  • 同样,释放embstr编码的字符串对象只需要调用一次内存释放函数,而raw需要两次。
  • embstr编码所保存的所有数据都在同一块连续的内存里,而raw编码中的redisObjectsdshdr则是分别存储的,这样能更好地利用缓存的优势。

embstr编码实际上只读的,所以当我们对embstr编码的字符串对象执行修改命令时,会先将其修改为raw字符串对象再进行修改。

注:字符串对象是Redis中唯一会被其他四种对象嵌套的类型。

最后给大家推荐一个LinuxC/C++高级架构系统教程的学习资源与课程,可以帮助你有方向、更细致地学习C/C++后端开发,具体内容请见 https://xxetb.xetslk.com/s/1o04uB

相关推荐

  1. 面试Redis基础知识

    2024-05-12 17:42:08       30 阅读
  2. redis基本知识

    2024-05-12 17:42:08       20 阅读
  3. 基础知识全覆盖(1)

    2024-05-12 17:42:08       14 阅读
  4. CV 面试指南—深度学习知识总结(1

    2024-05-12 17:42:08       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 17:42:08       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 17:42:08       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 17:42:08       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 17:42:08       20 阅读

热门阅读

  1. GDB 使用python

    2024-05-12 17:42:08       12 阅读
  2. sql中的lag()和lead()是什么意思

    2024-05-12 17:42:08       11 阅读
  3. Go语言基础知识学习

    2024-05-12 17:42:08       10 阅读
  4. Android App开机启动

    2024-05-12 17:42:08       11 阅读
  5. vim 查找字符串的命令

    2024-05-12 17:42:08       12 阅读
  6. 关于XDC 约束固化flash流程

    2024-05-12 17:42:08       15 阅读
  7. 学习Uni-app开发小程序Day8

    2024-05-12 17:42:08       14 阅读