Memcache和Redis的详细理解与区别

1. Memcache

Memcache是一个高性能,分布式内存对象缓存系统,通过在内存中缓存一个巨大的hash表,他能够存储包括图像,文件,索引,sql语句结果等数据,可以理解为它理解为一个为提升读取效率的数据容器,先将数据从数据库提取到内存中,然后在内存中读取,从而提升读取效率

1.1 Memcache的特性

  • 使用物理内存作为缓存区,可独立运行在服务器上,每个进程最大内存为2G。如果想缓存更多的数据,可以开辟更多的Memcache进程(不同端口)或者使用分布式Memcache进行缓存。
  • 使用K-V形式的方式来存储数据,这是一种单索引的结构化数据组织形式,查询的效率高
  • 协议简单:基于文本行的协议,直接通过telnet在Memcache服务器上进程存取数据操作,简单
  • 基于libevent高性能通信
  • 内置的内存管理方式:使用stab Allcation进行内存管理,按照既定的内存,将内存切割成特定的长度来存储相应的数据
  • 分布式:使用hash一致性算法,进行分布式存储数据,各个Memcache服务器之间互不通讯,各自独立存取数据,不共享任何信息,服务器并不具有分布式功能,分布式部署取决于memcache客户端
  • 缓存策略:LRU到期失效策略,即在内存用完之后,服务器端会根据LRU策略,计算最近没有使用过的数据,将其进行替换

2. Redis

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

2.1 Redis的特性

  • Redis支持永久性操作,可以从内存永久化保存在磁盘,下次重启可以从磁盘中恢复数据
  • 除去K-V形式之外,还支持list,set,zset,hash等多种数据结构
  • 支持主从架构数据备份

2.2 Redis各种数据类型应用和实现方式

  • String:数据结构是简单的K-V类型,v可以是数据,也可以是数字(常用操作:set,get,decr,incr,mget)
  • set:sadd,spop,smembers,sunion,sinter
  • list :lpush/rpush,lpop/rpop,lpoprpush,lrange
  • hash:hset,hgetall,hget
  • zset:zadd,zrank,zrange,zrem,zcard

- Memcache与Redis的比较

  • 数据结构:Memcache仅能支持简单的K-V形式,Redis支持的数据更多
  • 多线程:Memcache支持多线程,Redis支持单线程,CPU利用Memcache利用率更高
  • 持久化:Redis支持持久化,Memcache不支持持久化
  • 分布式:Redis做主从结构,而Memcache服务器需要通过hash一致化来支撑主从结构
  • 虚拟内存:Redis当物理内存使用完时,会将一些很久没有用的内存交换到磁盘,而Memcache采取的LUR策略,将一部分数据刷新叼

    两者进行对比,是因为都是内存数据管理系统,而实际上两者之间区别还是很大,Redis更多的象一个键值对数据,包括数据的持久化,主从架构,数据备份等策略都是为了保证数据安全以及高可用,而Memcache更多的是一个数据缓存系统是为了提升数据的读取效率,所以两者的应用也有所不同,Memcache适合于适合于缓存SQL语句、数据集、用户临时性数据、延迟查询数据和session等工作场合,Redis除去做Nosql数据库使用外,还能用做消息队列,数据堆栈和数据缓存等。

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值