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数据库使用外,还能用做消息队列,数据堆栈和数据缓存等。

Memcache和Redis的详细理解与区别的更多相关文章

  1. PHP面试常考内容之Memcache和Redis(1)

    你好,是我琉忆.继上周(2019.2-11至2-15)发布的"PHP面试常考内容之面向对象"专题后,发布的第二个专题,感谢你的阅读.本周(2019.2-18至2-22)的文章内容点 ...

  2. NoSQL数据库memcache和redis区别

    在web后台发开面试中,经常会被问道memcache和redis的区别和使用情况. 其中memcache和redis都是基于内存存储的缓存系统,存储形式key--value键值对的形式. 区别: 1. ...

  3. memcache and redis 的区别

    memcache和redis都属于缓存但是memcache的存储大小是收到 限制的memcache的 键值长度是250,内存的大小限制是1M并且memcache不支持数据的持久化缓存 redis支持五 ...

  4. 缓存框架有使用过哪些?memcache和redis有什么区别?项目中,怎么去选择?

    缓存有:ehcache,memcache和redis等 区别: 1. Redis和Memcache都是将数据存放在内存中,都是内存数据库.不过memcache还可用于缓存其他东西,例如图片.视频等等. ...

  5. 面试题:3年工作经验 已看1 有用 memcache和redis有什么区别

    此内容偏中高级,适合有三年经验者. 1.       java中wait和sleep有什么区别?多线程条件下如何保证数据安全? 答:最大区别是等待时wait会释放锁(乐观锁),而sleep会一直持有锁 ...

  6. Memcache与Redis有什么区别?

    Redis 和 Memcache 都是基于内存的数据存储系统.Memcached是高性能分布式内存缓存服务,其本质上就是一个内存key-value数据库.Redis是一个开源的key-value存储系 ...

  7. Python之路【第十篇】Python操作Memcache、Redis、RabbitMQ、SQLAlchemy、

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  8. (转)memcache、redis缓存

    memcache原理.内存模型: http://www.csdn.net/article/2016-03-16/2826609 redis原理: http://baike.baidu.com/link ...

  9. Python之路【第十篇】Python操作Memcache、Redis、RabbitMQ、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

随机推荐

  1. 鸡汤 - Choice is yours

    传送门 https://kamranahmed.info/blog/2018/03/24/choice-is-yours/ Our whole lives are driven by the choi ...

  2. JS线程及回调函数执行

    JS是单线程的程序,在某些方面来讲并不是十分准确.在浏览器的内核里面有很多的模块,比如js的解释执行的模块,html.css的处理模块,渲染模块等,多数模块是单线程执行的,但是有几个模块是多线程的,比 ...

  3. 关于永久POE

    1.传统POE 在我们的企业网络中,经常会使用交换机给IP电话或者无线AP供电,以使得其正常的工作. 正常情况下,我们都知道,普通的POE是在PSE交换机启动完成后,然后再给PD(Power Devi ...

  4. 【转载】Eclipse 最常用快捷键 (动画讲解),最简单的一些快捷键

    Eclipse有强大的编辑功能, 工欲善其事,必先利其器, 掌握Eclipse快捷键,可以大大提高工作效率. 小坦克我花了一整天时间, 精选了一些常用的快捷键操作,并且精心录制了动画, 让你一看就会. ...

  5. 【SSM】日志框架 logback

    logback.xml <?xml version="1.0" encoding="UTF-8" ?> <configuration scan ...

  6. 【PAT甲级】1003 Emergency (25 分)(SPFA,DFS)

    题意:n个点,m条双向边,每条边给出通过用时,每个点给出点上的人数,给出起点终点,求不同的最短路的数量以及最短路上最多能通过多少人.(N<=500) AAAAAccepted code: #in ...

  7. Python实现图片识别加翻译【高薪必学】

    Python使用百度AI接口实现图片识别加翻译 另外很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个Python交流.裙 :一久武其而而流一思(数字 ...

  8. 二分查找及几种变体的Python实现

    1. 在不重复的有序数组中,查找等于给定值的元素 循环法 def search(lst, target): n = len(lst) if n == 0: return -1 low = 0 high ...

  9. 14 JavaScript Window对象

    Window对象表示一个浏览器窗口或者一个框架. 在客户端JavaScript中,window对象是全局对象,所有的表达式都在当前的环境中计算. Window对象的子对象: JavaScript do ...

  10. python批量提取哔哩哔哩bilibili视频

    # -*- coding: utf-8 -*- """ Created on Tue Jan 29 13:26:41 2019 @author: kwy "&q ...