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

相关推荐
Baihai_IDP4 分钟前
为什么 AI 巨头们放弃私有壁垒,争相拥抱 Agent Skills
人工智能·面试·llm
Moment15 分钟前
Agent 开发本质上就是高级点的 CRUD
前端·后端·面试
哈里谢顿11 小时前
0305乒乓xx agent运维开发岗面试记录
面试
哈里谢顿11 小时前
0309面试二总结
面试
哈里谢顿11 小时前
0309面试一记录
面试
哈里谢顿11 小时前
0310面试二记录
面试
哈里谢顿12 小时前
0310面试记录一
面试
boooooooom14 小时前
讲清 Proxy + effect + track/trigger 流程
javascript·vue.js·面试
DolphinDB15 小时前
集成 Prometheus 与 DolphinDB 规则引擎,构建敏捷监控解决方案
数据库
豆苗学前端15 小时前
彻底讲透浏览器缓存机制,吊打面试官
前端·javascript·面试