Redis在Windows上和Linux上的区别

Posted 傅小灰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis在Windows上和Linux上的区别相关的知识,希望对你有一定的参考价值。

在回答这个问题之前,我们先来看两个面试中经常会被问到的Redis问题

Redis为什么这么快?

  1. 完全基于内存操作
  2. C语言实现,优化过的数据结构,性能高
  3. 单线程,无切换上下文的成本
  4. 异步非阻塞IO(多路复用IO)

再深入一点,多路复用IO是怎么实现的?

在Redis源码中,很多地方都调用Linux的epoll方法来实现多路复用。

然而Windows系统是没有epoll方法的,对应的则是IOCP模型。具体这两者的区别可以看看这个epoll和IOCP之比较

Redis是如何进行持久化的?

  1. RDB 快照,内存数据的二进制序列化文件
  2. AOF 日志,修改内存数据的指令记录文本

RDB持久化的手动备份命令是bgsave,AOF文件过大的重写命令是bgrewriteaof

原理都是开辟一个子进程对内存进行处理(注意了是子进程,不是子线程),这就涉及到操作系统的多进程COW(Copy On Write)机制了。

或者换句话说Redis通过Linux系统的fork函数创建子进程,共享内存里面的代码段和数据段,从而实现了持久化。

然而Windows系统是没有fork函数的。

总结

总的来说,Redis在Windows和Linux上的区别主要还是操作系统的差异引起的(说起来像是一句废话)。Redis诞生之初就是基于Linux运行的,移植到Windows上时必定会有一些调整。

以上是关于Redis在Windows上和Linux上的区别的主要内容,如果未能解决你的问题,请参考以下文章

@Autowired写在成员变量上和set方法上的区别?

请问虚拟机安装在固态硬盘上和安装在普通硬盘上的性能差别有多大

vmware esxi 没用过请问怎么安装,linux 上和windows上

Windows 和 Linux 上Redis的安装守护进程配置

请问虚拟机安装在固态硬盘上和安装在普通硬盘上的性能差别有多大

memacahe在windows上的应用