memcache与redis的区别

memcache 与 redis的区别:

        memcache:是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,以提高动态Web等应用的速度、 提高可扩展性。处理过程:服务器检查用户的请求在缓存中是否存在,如果存在只需将请求的数据返回,不用再去查数据库;如果请求的数据在缓存中找不到,就在去查询数据库,返回请求数据还要将请求数据缓存到内存中。如果数据发生改变,就要更新缓存信息。

        redis:是一个可基于内存亦可持久化的日志型、Key-Value数据库。支持存储的数据结构很多。支持不同的排序方式,并且在此基础上实现了master-slave主从同步。

1.在持久化上,redis可以实现数据的持久化,即可以保存到硬盘上,memcache不能实现持久化,只能将数据保存到内存中。

2.在读写性能上:memcache读的速度快于redis,造成的因素有很多,这与memcache使用的是多核而redis是单核有关。而在写入性能上,redis要优于memcache但是相差不太大,这是由于 Redis支持将数据同步到多台从数据库上,对提高读取性能很有益。

3.所支持的数据类型上:redis支持多种类型的数据结构,比如字符串 散列 列表 集合 有序集合等多种数据结构,memcache只支持key=>value。

4.在存储模式上:memcached是不互相通信的分布式,只能采用客户端实现分布式存储。Redis则在服务器端构建分布式存储,各个节点可以交流,可扩展性,可维护性更强大。

5.在可靠性上,memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复。Redis支持数据的备份,即master-slave模式的数据备份。

6.在存储大小上,Memcached单个key-value大小有限,一个value最大只支持1MB,而Redis最大支持512MB 。

7.在具体使用中, 在使用incr decr 上:memcache不能使用负数 redis可以使用负数 我们的redis是有密码验证功能的,可以在服务器端开启密码验证,登录的时候,就要输入密码!memcached服务器是没有密码验证功能。linux的扩展是.so结尾的,windows的是.dll结尾的memcached的add能够实现的效果,redis的setnx也同样能够实现。过期策略上,memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10。

 redis的主从分离主要解决的问题: 读写分离;并发分析。

    原文作者:camellia_halo_
    原文地址: https://www.jianshu.com/p/01ca24109fcb
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞