Memcache学习系列 -- 概念了解以及优缺点分析

官方对Memcache的描述是免费开源、高性能、分布式内存对象缓存系统。这里有几个关键字:免费开源、高性能、分布式、内存对象缓存。OK,首先分析一下这几个关键字

免费开源:免费就是不用付费使用,开源就是可以看到其源码,方便分析实现原理

高性能:可以高效的实现某些功能,比如平响更低、资源占用更小、QPS/TPS更高

分布式:分布式是与集中式比较而言的,这里的“分布式”不是指的服务端的分布式,而是指的客户端的分布式

内存缓存:数据都是一直存放在内存中的,并没有持久化存储。

1、Memcache也是C/S结构的,客户端与服务端协议简单。 

2、Memcache服务没有单独的配置文件,是否作为守护进程运行以及分配的内存大小、连接数、监听的端口等信息都是在服务启动时设置,如下所示:

/usr/local/memcached/bin/memcached -d -m 64M -u root -l 192.168.0.200 -p 11211 -c 256 -P /tmp/memcached.pid

  • -d是启动一个守护进程;
  • -m是分配给Memcache使用的内存数量,单位是MB;
  • -u是运行Memcache的用户;
  • -l是监听的服务器IP地址,可以有多个地址;
  • -p是设置Memcache监听的端口,,最好是1024以上的端口;
  • -c是最大运行的并发连接数,默认是1024;
  • -P是设置保存Memcache的pid文件

3、服务端可以通过status命令查看运行时信息,比如连接数、已用内存、端口等信息

4、因为是内存级存储,只能用来存储小块的任意数据(字符串、序列化对象),这些数据可以是数据库调用、API调用或者是页面渲染的结果,存储量受机器物理内存的限制(不能超过物理内存)

5、不支持数据的备份以及还原

6、常用的有set、get、gets、add、replace、append、preappend、del 等命令,数据类型(字符串、序列化对象)也比较单一

总结:

(1)轻量级、对于各种语言的支持都比较好

(2)内存级的数据缓存,不能进行持久化;不能进行数据的备份以及还原,机器重启、断电灯突发情况会造成数据的丢失,所以不能存放重要数据。

(3)假的分布式,真正的分布式是在客户端实现的,多台服务器之间并不能实现数据的一致性;和业务的耦合性太强,不能响应业务需求的快速变化

(4)相较于Redis而言,数据类型比较单一,不能cover复杂的业务场景

(5)操作API比较单一,只有add set get等基本操作

猜你喜欢

转载自blog.csdn.net/ydm19891101/article/details/80785118