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

相关推荐
一块plus几秒前
创造 Solidity、提出 Web3 的他回来了!Gavin Wood 这次将带领波卡走向何处?
javascript·后端·面试
Aphasia31126 分钟前
性能优化之重绘和重排
前端·面试
掘金安东尼1 小时前
代理式AI,从被动响应到主动执行的技术演进
面试
AI 嗯啦2 小时前
SQL详细语法教程(七)核心优化
数据库·人工智能·sql
ClouGence3 小时前
三步搞定!GaussDB 实时数据入仓
数据库·后端
阿杆4 小时前
零成本 Redis 实战:用Amazon免费套餐练手 + 缓存优化
redis·后端
Java技术小馆4 小时前
InheritableThreadLoca90%开发者踩过的坑
后端·面试·github
鼠鼠我捏,要死了捏4 小时前
生产环境MongoDB分片策略优化与故障排查实战经验分享
数据库·mongodb·分片
KaiwuDB5 小时前
KWDB 分布式架构探究——数据分布与特性
数据库·分布式
诗和远方14939562327345 小时前
iOS 异常捕获原理详解
面试