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. werkeug的WSGI服务器解析

    werkeug的WSGI服务器解析 1.      WSGI 1.1.    wsgi与flask flask默认的wsgi引用自wekurg 声明app:FLASK对象 app.run() run_ ...

  2. WinForm开发(6)——C#/winform程序打包部署时,如何把SQL数据库一起打包进去

    打包数据库到安装程序中 方法1. 备份/恢复先备份数据库:backup database 数据库 to disk='c:\备份.bak' 将备份文件打包到安装程序中. 在第一次运行程序的时候,进行数据 ...

  3. 小程序云函数调用http或https请求外部数据

    参考网址 https://blog.csdn.net/qiushi_1990/article/details/101220920 小程序云函数调用http或https请求外部数据 原创编程小石头 发布 ...

  4. intellij idea设置(字体大小、背景)

    1. 配置信息说明 Intellij Idea: 2017.2.5 2.具体设置 <1> 设置主题背景.字体大小 File---->Settings----->Appearan ...

  5. 针对sklearn.svm中的"dual_coef_"理解

    1.决策函数的表达式 公式: 其中: 2.SVM经过训练后,所得到的"dual_coef_" 其实"dual_coef_"就是"ai*yi" ...

  6. vector 踩过的坑

    今天,做LeetCode上的一道题,198题:Rob House,在纸上画了画,发现了重复的结构,就使用了递归的方式实现的 #include<iostream> #include<v ...

  7. php 安装 swoole

    1.安装swoole cd /usr/local/src wget https://github.com/swoole/swoole-src/archive/v1.9.1-stable.tar.gz ...

  8. python中 yield 的用法 (简单、清晰)

    首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都是头头是道,什么参数,什么传递的,还口口声声说自己的教程是最简单的,最浅显易懂 ...

  9. SpringBoot+JWT+SpringSecurity+MybatisPlus实现Restful鉴权脚手架

    若图片查看异常,请前往掘金查看:https://juejin.im/post/5d1dee34e51d4577790c1cf4 前言 JWT(json web token)的无状态鉴权方式,越来越流行 ...

  10. 1 Struts2基本概述及其入门

    什么是Struts2? webwork+Struts1 一个基于MVC设计模式的web层框架,本质上相当于一个Servlet.. 在MVC设计模式中,Struts2作为控制器Controller来建立 ...