Redis为什么这么快?

最主要的原因肯定是他是基于内存存储,读写超级快

其次是执行命令是单线程,避免了线程上下文切换带来的开销

第三个是Redis底层的数据结构如SDS、SkipList做了大量的优化,性能极好

Redis6.0后 使用IO多路复用来并发处理连接。

追问:这么快咋不用来做主数据库呢?

内存资源相较于磁盘较小

数据存储在内存中如果崩溃或者断电来不及及时备份,虽然redis支持rdb和aof

访问控制不足

事务也比较简单,跨多个键就不行。

重生之八股仙帝 文章被收录于专栏

曾有一千古奇人,精修八股文,成遁世之高人,彻天彻地畅游天地间。 今人皆忙忙,急于求成,岂不知八股乃道门口径,背负天人,若经熟读背诵,更能开拓智慧之门,探寻未来之路。 天下繁华,不尽长夜,唯有读书为伴,熟读八股文更是攀登高峰之路。磨砺文字,升腾智慧,唯有勤玉立志,始可破天荒,登临九重不竭之巅! 吾辈修炼之路,虽曲折荆棘,但信念不曾磨灭,唯有铭记八股精髓,方能指引灵魂归宿,成就一生辉煌!

全部评论
接着追问,来着字节面试官的题。你说单线程没有上下文开销,那我多线程能重复利用多个cpu呀,是不是也能弥补上下文开销带来的性能损失。 大概的答案:除了没有上下文切换开销外,单线程不会出现锁竞争也是他快的一个原因
12 回复 分享
发布于 2023-08-30 23:58 陕西
redis快还有一个原因是他rehash是渐进式的,不会造成长时间的阻塞。
3 回复 分享
发布于 2023-08-31 10:35 福建
追问:这么快咋不用来做主数据库呢? 其实可以直接说Redis对ACID支持不够好,Redis只支持隔离性和一致性,不保证原子性和持久性。
1 回复 分享
发布于 2025-05-06 20:07 湖北
个人认为它快绝大部分是因为面向内存和牺牲了很多功能,比如事务、实时持久化、sql 都不支持,数据还得在内存里,不能存太多。 虽然 redis 实现很好,但 innodb 和其它数据库的数据结构难道就没有做大量优化吗?不可能的,只是他们要做的事更多任务更多,肯定没法比
1 回复 分享
发布于 2023-08-31 22:40 北京
我们这边校招需要牛人 ,https://www.nowcoder.com/share/jump/1359800161693547815197
点赞 回复 分享
发布于 2023-09-01 13:57 浙江

相关推荐

03-19 20:17
已编辑
东莞理工学院 Java
📍面试公司:淘米🕐面试时间:03/17💻面试岗位:golang服务端开发❓面试问题:1. 算法:给定一个只包含0和1的数组,最多可以操作n次,返回操作后最长连续1的长度。2. 实习相关内容有哪些?3. redis和MySQL相关知识4.Redis和MySQL的区别是什么5.redis和MySQL的事物区别6. 为什么MySQL要有redo log和undo log?7. Redis的原子性和MySQL的原子性有什么区别?8. Redis是怎么实现原子性的,可以回滚吗,为什么不设计一个回滚?9. Redis有隔离性吗?10. Redis的持久化和MySQL的持久化有什么区别?11. 为什么对于持久化数据要优先选择MySQL?12. MySQL的redo log和bin log职能不是差不多吗?为什么要分成两个呢?13. 如果让你设计,能否把redo log和bin log合并成一个?14. 合并的话数据结构怎么选择(STATEMENT和ROW)?15. 为什么选择混合模式?16. 你对游戏服务端开发了解多少?17. 游戏服务端开发和传统的后端开发有什么区别?18. 如果让你去写一个游戏的后端,需要注意什么问题?19. 游戏后端开发为什么要用长连接?20. 你是怎么使用AI相关技术的?21. 你开发时使用AI的流程是怎么样的?22. 引入了多个skill,你会怎么管理?23. 引入多个skill会触发什么问题?24. 你怎么理解agent?25. agent的调用流程是怎么样的?26. 你觉得agent有哪些地方可以优化?🙌面试感想:面试体验感一般般,面试官老是打断人说话,说的复杂了叫我说简单一点,说的简单了叫我按1234排列从头往后说详细一些,但是大部分问题还是答出来了,有一些问题问的也比较有价值有深度,好在是过了,明天hr面
查看26道真题和解析
点赞 评论 收藏
分享
评论
11
70
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务