谈到深度对比MemcacheD 和 Redis,作为老牌程序员首先想到的就是Memcache好一点,毕竟更节省内存。还可以存图片视频之类的,大部分市面上的cache都是MemcacheD。
但是评价一款cache并不能只看这一方面不是~
数据存储的安全系数
要知道,memcacheD的数据库是存储在内存上,非常容易丢失。
但是redis不一样,随着数据的增多,它会将一部分的数据转移到磁盘上,仅仅存储key,不进行过多占用内存的操作。
这样直接带来的好处就是,当突然灭掉电源时,redis的数据相比之下更加不容易丢失。
线程问题
首先我们要分清楚进程和线程的措辞,听起来好像一节语文课~
进程就是一个软件的执行, 但是线程是一个有专有栈指针、程序计数器的执行流。
区别就是,线程可以是多个线程执行同一个函数,但是进程就像一条线没有退路也没有分叉。
而这里的memcacheD是一款多线程的数据库,但是redis是单线程的。
看起来memcacheD好像比redis高级了很多,但是这种高效率和快节奏也会带来一些想不到的bug,十分令人头大。
毕竟,你想要一下子实现更多的骚操作,需要的技术也就更加复杂,也更加容易玩脱线。
而且memcache可以将一个进程(一个软件的执行时)拆分成多个线程(很多条路同时解决),是一个很好的方式可以解决高并发问题。但是也带来了很多麻烦,比如响应时间会很慢。
对CPU的占用来说,memcache就像一个不孝子,需要老父亲的监督和监视。
分布式存储
memcacheD本身可能并不是个分布式的程序,但是用过一些计算机的算法,比如一致性哈希这种,可以实现咱们的这个分布式存储。
这就带来了一个问题,因为一致性哈希是使用在客户端的,而redis在这一点上是在服务器这一端口实现分布式结构的存储功能的。
通过crc16( key ) % HASH_SLOTS_NUMBER,Redis Cluster将整个key的数值域分成4096个哈希槽,每一个节点可以存储多个哈希槽,通过这样的结构来实现分布式存储。
究竟孰优孰劣,想必大家心中已经有了一个高下立见的判断。
而说起来,学会了分布式存储,可以说你已经从一个入门级程序员进入到了一个资深程序员的思考领域。
可以尝试接一些外包进行技术输出,在我这里就不详细展开说明了。
还有什么想看的技术知识,欢迎评论区留言点赞,我们下期见~