Redis与Memcached都是比较优秀的缓存中间件.对于这两者的选择,我们可以根据情景的不同做出不同的选择.本文简述一下这两者的部分区别.如下
数据类型方面
Redis支持五种数据类型.(String,List,Hash,Set,SortedSet)
而MemCached仅支持一种数据类型.(String)
持久化方面
Redis可以进行持久化操作
Redis将数据存储于内存中,但也会定时的将数据存放到硬盘中.
我了解到的存储到硬盘的方式有两种:
RDB和AOF
RDB:就是将数据创建一个快照,存储到硬盘中,通常是隔一段时间执行一次,如果频繁执行会影响Redis的速度.
AOF:就是每隔一段时间将Redis使用的命令存放的硬盘中.如果不考虑性能可以每执行一次命令存入一次.
在项目中通常使用RDB和AOF共存的方式保证数据的完整性和恢复数据的速度.
Memcached只存储于内存中
内存管理方面
Redis采用内存申请的方式 当数据超量时,会引用swap 刷掉冷数据到磁盘
Memcached采用预分配池管理内存.
集群方面
Redis原生支持集群
Memcached需要借助客户端完成集群.
借助客户端就需要用到io操作,拖慢运行速度.
底层环境方面
Redis有自己的VM,无需调用系统函数.
Memcached需要调用系统函数.有些情况下调用系统函数会影响速度.
性能方面
Memcached使用多线程,所以吞吐量较高,对于高于100kb的数据性能较Redis好,但是可能会出现锁冲突
Redis使用单线程,可以不用考虑锁对数据插入修改的影响,对于小于100kb的数据来说性能较Memcached好,但是无法利用多核提高吞吐量,只能使用多开的方式.
value存储大小
Memcached的value存储量最大为1M
而Redis的value最大存储量为1G
个人结论:
在没有复杂的数据操作的情况下,只有k,v 使用Memcached更快.
Memcached更适合做内存,Redis更适合做数据存储
如果您发现本文中含有错误内容,欢迎指正,如果有补充,欢迎在评论区提出.期待您的不吝赐教!