一、Memcache

1.     memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小
redis有部份存在硬盘上,这样能保证数据的持久性。

2.      Memcache使用了Slab Allocator的内存分配机制:按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题。

3.      memcache 存在内存中,分配的内存满后,会按一定的规则删除一些k/v数据,重启后自然全部丢失。

4.      过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定。

5.      首先要说明的是Memcached支持最大的存储对象为1M。它的内存分配比较特殊,但是这样的分配方式其实也是基于性能考虑的,简单的分配机制可以更容易回收再分配,节省对CPU的使用。大于1M需要拆分。

6.      memcached能接受的key的最大长度是,255字符。

7.     同一份数据同时发送了一个set命令和一个get命令,它们不会影响对方,但是get以后,处理期间可能先被其他Set了,后面的Set会覆盖前面的,但是memcached 1.2.5以及更高版本,提供了gets和cas命令,它们可以解决上面的问题。如果您使用gets命令查询某个key的item,memcached会 给您返回该item当前值的唯一标识。如果您覆写了这个item并想把它写回到memcached中,您可以通过cas命令把那个唯一标识一起发送给 memcached。如果该item存放在memcached中的唯一标识与您提供的一致,您的写操作将会成功。如果另一个进程在这期间也修改了这个 item,那么该item存放在memcached中的唯一标识将会改变,您的写操作就会失败。

8.     无身份验证,认为身份验证是更高层的问题。

9.     删除Delete操作只是将该chunk置为删除状态,这样在下次使用将优先利用这样的chunk。

10.             Flush操作相当于将所有的item失效的一个动作。并不会改变memcache内存分配情况。

11.         memcache已经分配的内存不会再主动清理。

12.         memcache分配给某个slab的内存页不能再分配给其他slab。

13.         flush_all不能重置memcache分配内存页的格局,只是给所有的item置为过期。

14.         memcache最大存储的item(key+value)大小限制为1M,这由page大小1M限制。

15.         由于memcache的分布式是客户端程序通过hash算法得到的key取模来实现,不同的语言可能会采用不同的hash算法,同样的客户端程序也有可能使用相异的方法,因此在多语言、多模块共用同一组memcached服务时,一定要注意在客户端选择相同的hash算法。

16.         启动memcached时可以通过-M参数禁止LRU替换,在内存用尽时add和set会返回失败。

17.         memcached启动时指定的是数据存储量,没有包括本身占用的内存、以及为了保存数据而设置的管理空间。因此它占用的内存量会多于启动时指定的内存分配量,这点需要注意。

二、Redis

1.      Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。

2.  Redis支持数据的备份,即master-slave模式的数据备份。

3.  Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

4.  Redis,具备一定的数据库特征。

5.  Redis数据可以存储到硬盘,基本没有过期策略。

6.  redis有一个致命缺陷 当内存满了时 dump数据cpu占用100%。

7.

三、Memcache和Redis区别

  1. Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别。
  2. Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcached只是简单的K/V缓存。
  3. 他们的扩展都需要做集群;实现方式:master-slave、Hash。
  4. 在100k以上的数据中,Memcached性能要高于Redis。
  5. 如果要说内存使用效率,使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。当然,这和你的应用场景和数据特性有关。
  6. 如果你对数据持久化和数据同步有所要求,那么推荐你选择Redis,因为这两个特性Memcached都不具备。即使你只是希望在升级或者重启系统后缓存数据不会丢失,选择Redis也是明智的。
  7. Redis和Memcache在写入性能上面差别不大,读取性能上面尤其是批量读取性能上面Memcache更强。

四、其他分布式缓存

转载于:https://www.cnblogs.com/gowhy/archive/2012/12/20/2826819.html

Memcahce和Redis比较相关推荐

  1. linux系统sql语句报错_linux之SQL语句简明教程---CREATE VIEW

    视观表 (View) 可以被当作是虚拟表格.它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料. 建立一个视观表的语法如下: CREATE VIEW & ...

  2. redis和Memcached的区别,都什么时候使用?

    redis和Memcached的区别,都什么时候使用? 缓存在互联网公司占得比例还是蛮大的,提到缓存呢,就一定会想到redis和memcache,现在绝大多数的公司呢,都是推荐使用redis,这是为什 ...

  3. php 错误日志 redis' already loaded in Unknown on line 0

    环境介绍:LNMP 报错信息: 注:这个php_errors.log 是我在php.ini 中定义的错误日志路径 问题原因: 报错信息给出的意思是:redis和memcache 模块已经加载过 问题解 ...

  4. Memcache、Redis应用场景与高级用法

    做项目用了挺多次redis,记不住,还是自己参考+总结下吧... 文章目录 0. memcache区别 1. string 应用场景 1.图片.手机验证码 2.登陆限制 2. hash 应用场景 1. ...

  5. Redis高级(一):redis特点、redis优缺点、redis应用场景

    Redis特点 一:速度快 1. 由c语言编写,更快解析语言代码. 2. 数据都是缓存在内存中,纯内存操作. 3. 采用单线程,避免了不必要的上下文切换和竞争条件,不存在多进程或者多线程导致的切换而消 ...

  6. Spring AOP + Redis解决重复提交的问题

    Spring AOP + Redis解决重复提交的问题 用户在点击操作的时候,可能会连续点击多次,虽然前端可以通过设置按钮的disable的属性来控制按钮不可连续点击,但是如果别人拿到请求进行模拟,依 ...

  7. Redis问题——Error: 磁盘在使用中,或被另一个进程锁定。

    Redis出于对数据保护,默认只能本地客户端连接.远程连接就会出现以上错误.如何解决这一问题,看下: server -A,PC-A, 修改server-A的redis.conf:注释掉本地绑定: bi ...

  8. 实现 连续15签到记录_MySQL和Redis实现用户签到,你喜欢怎么实现?

    现在的网站和app开发中,签到是一个很常见的功能 如微博签到送积分,签到排行榜 微博签到 如移动app ,签到送流量等活动, 移动app签到 用户签到是提高用户粘性的有效手段,用的好能事半功倍! 下面 ...

  9. Redis 笔记(16)— info 指令和命令行工具(查看内存、状态、客户端连接数、监控服务器、扫描大key、采样服务器、执行批量命令等)

    Info 命令返回关于 Redis 服务器的各种信息和统计数值.通过给定可选的参数 section ,可以让命令只返回某一部分的信息. 1. 显示模块 server : 一般 Redis 服务器信息, ...

最新文章

  1. python 类-python--类
  2. 使用代码生成建立可扩展序列化器(上)
  3. Linux平台安装xtools
  4. 四元数(Quaternion)和欧拉角(Eulerangle)
  5. c语言字符串匹配函数index,C语言(函数)学习之index、rindex
  6. 在玩客云或树莓派上通过ffmpeg将视频推流到直播平台
  7. 在MySQL中当有多个索引时 你知道MySQL是如何选择索引的吗 ???
  8. C语言之字符串探究(十):递归逆置字符串
  9. python打砖块游戏算法设计分析_python小游戏--打砖块的实现与讲解(python自学总结系列)...
  10. HDU3786 找出直系亲属【关系闭包】
  11. Python 进阶 —— x = x+1 vs x += 1
  12. pythongui日历控件_python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例...
  13. php pdoconnection,php使用pdo连接报错Connection failed SQLSTATE的解决方法
  14. 思科asa5515端口映射_思科防火墙ASA端口映射
  15. 组合模式-完美处理树形递归结构
  16. 对深度学习程序进行性能优化之前该理解的几个知识点(一)
  17. 移动应用推广的那些事儿:应用发现篇
  18. edge 打开PDF文件显示无法加载插件
  19. Flask后端实践 连载十三 Flask输出Excel报表
  20. “收藏本站” 的代码

热门文章

  1. 政府安全资讯精选 2018年第十期 美国CLOUD Act法案正式通过成为法律;英国发布“网络安全出口”战略 以促进对外贸易...
  2. 获取今日、本周、本月至今日的所有日期
  3. Spring AOP体系学习
  4. 【2015.9.1】微信开放平台
  5. /bin/sh^M:损坏的解释器: 没有那个文件或目录
  6. 一步一步学solr:什么是solr?
  7. [转] PHP之加解密: Mcrypt函数
  8. PowerShell2.0之与COM对象交互(五)与脚本宿主代码协同工作
  9. 用Python统计瓦尔登湖的词频
  10. asp/php招聘,招聘ASP与PHP相关岗位的笔经