Redis和Memcache都是将数据存放在内存中,都是内存数据库。本文介绍两者的区别。
Redis和Memcached比较
Memcached是多线程,而Redis使用单线程.
Memcached使用预分配的内存池的方式,Redis使用现场申请内存的方式来存储数据,并且可以配置虚拟内存。
Redis可以实现持久化,主从复制,实现故障恢复。
Memcached只是简单的key与value,但是Redis支持数据类型比较多。
Redis的存储分为内存存储、磁盘存储 .从这一点,也说明了Redis与Memcached是有区别的。Redis 与Memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改 操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis有两种存储方式(默认:snapshot)
- snapshot
实现方法是定时将内存的快照(snapshot)持久化到硬盘,
这种方法缺点是持久化之后如果出现crash则会丢失一段数据。
因此在完美主义者的推动下作者增加了aof方式。
- aof
即append only mode,在写入内存数据的同时将操作命令保存到日志文件,在一个并发更改上万的系统中,命令日志是一个非常庞大的数据,管理维护成本非常高,恢复重建时间会非常长,这样导致失去aof高可用性本意。另外更重要的是Redis是一个内存数据结构模型,所有的优势都是建立在对内存复杂数据结构高效的原子操作