[缓存]关于memcached的详细介绍以及用法

简介:

   很久没用过memcached,觉得有些生疏了,现在做一次笔记,回忆一下,也为了以后更加方便的理解.

   关于memcached的历史之类的,就不说了,不熟,也没怎么看过,主要就是说memcached的原理以及方式吧.笔记比较杂乱.

   memcached其实是类似于软件的一种,它是用来为其他软件或者服务提供一种高性能来存在的.memcache是一种高性能的分布式缓存服务器,一般是为了通过缓存数据库查询的结果,减少访问的次数来提高Web的访问速度的.

   php_memcached 是 php 为 Memcached 提供的 PECL 扩展。由于 Memcached 简单的协议规范,因此,当 Memcached推出后,就有了 PHP 的接口规范和相关扩展。

    memcached 使用了同样的“Key=>Value”方式组织数据,但是它和共享内存等其他等本地缓存有非常大 的区别。Memcached 是分布式的,也就是说它不是本地的。它基于网络连接(当然它也可以使用 localhost)方式完 成服务,本身它是一个独立于应用的程序或守护进程(Daemon 方式)。

   memcached 使用 libevent 库实现网络连接服务,理论上可以处理无限多的连接,但是它和 Apache 不同,它更 多的时候是面向稳定的持续连接的,所以它实际的并发能力是有限制的。在保守情况下 memcached 的最大同时连 接数为 200,这和 Linux 线程能力有关系,这个数值是可以调整的。

   下面说说memcache命令行简单的使用吧.


memcache启动参数

-p  TCP端口号,默认11211

-UUDP监听端口,默认11211,0时关闭

-l绑定地址,默认所有允许,如果设置了,

-d以daemon方式运行

-u绑定使用指定用户运行的进程

-m允许使用内存,单位M(默认64)

-P将PID写入文件


连接:

telnet 127.0.0.1 11211


命令:

set向内存中增加键值对,如果存在,则替换

add向内存中增加键值对

replace如果值不存在,返回NOT_STORED,否则替换值

get获取值

delete删除

flush_all清空所有缓存


stats解释:


STAT pid 22459                             进程ID

STAT uptime 1027046                        服务器运行秒数


STAT time 1273043062                       服务器当前unix时间戳


STAT version 1.4.4                         服务器版本


STAT pointer_size 64                       操作系统字大小(这台服务器是64位的)


STAT rusage_user 0.040000                  进程累计用户时间


STAT rusage_system 0.260000                进程累计系统时间


STAT curr_connections 10                   当前打开连接数


STAT total_connections 82                  曾打开的连接总数


STAT connection_structures 13              服务器分配的连接结构数


STAT cmd_get 54                            执行get命令总数


STAT cmd_set 34                            执行set命令总数


STAT cmd_flush 3                           指向flush_all命令总数


STAT get_hits 9                            get命中次数


STAT get_misses 45                         get未命中次数


STAT delete_misses 5                       delete未命中次数


STAT delete_hits 1                         delete命中次数


STAT incr_misses 0                         incr未命中次数


STAT incr_hits 0                           incr命中次数


STAT decr_misses 0                         decr未命中次数


STAT decr_hits 0                           decr命中次数


STAT cas_misses 0    cas未命中次数


STAT cas_hits 0                            cas命中次数


STAT cas_badval 0                          使用擦拭次数


STAT auth_cmds 0


STAT auth_errors 0


STAT bytes_read 15785                      读取字节总数


STAT bytes_written 15222                   写入字节总数


STAT limit_maxbytes 1048576                分配的内存数(字节)


STAT accepting_conns 1                     目前接受的链接数


STAT listen_disabled_num 0                


STAT threads 4                             线程数


STAT conn_yields 0


STAT bytes 0                               存储item字节数


STAT curr_items 0                          item个数


STAT total_items 34                        item总数


STAT evictions 0                           为获取空间删除item的总数


   很早之前想的一个问题,如果缓存还存在,但是数据已经更新,那么用户不就看不到最新的数据了么?后来一大神给我解决,memcache可以存一个临时的,不是永久的.或者不经常改动的数据,还有统计在线人数,或者单点登录SSO等.都可以用到memcache,那会儿很傻的以为保存整个数据库的数据.

   希望这些也可以给大家个思路吧.至于其他的,还没有接触过很多.暂时确实对memcache的深度应用不足.










本文转自 3147972 51CTO博客,原文链接:http://blog.51cto.com/a3147972/1401401,如需转载请自行联系原作者
目录
相关文章
|
10月前
|
缓存 NoSQL Redis
Python缓存技术(Memcached、Redis)面试题解析
【4月更文挑战第18天】本文探讨了Python面试中关于Memcached和Redis的常见问题,包括两者的基础概念、特性对比、客户端使用、缓存策略及应用场景。同时,文章指出了易错点,如数据不一致和缓存淘汰策略,并提供了实战代码示例,帮助读者掌握这两款内存键值存储系统的使用和优化技巧。通过理解其核心特性和避免常见错误,可以提升在面试中的表现。
137 2
|
2月前
|
存储 缓存 Java
Java中的分布式缓存与Memcached集成实战
通过在Java项目中集成Memcached,可以显著提升系统的性能和响应速度。合理的缓存策略、分布式架构设计和异常处理机制是实现高效缓存的关键。希望本文提供的实战示例和优化建议能够帮助开发者更好地应用Memcached,实现高性能的分布式缓存解决方案。
51 9
|
8月前
|
存储 缓存 算法
深入了解Memcached:缓存技术的利器
Memcached是一个开源的高性能分布式内存缓存系统,用于加速动态Web应用。它通过将数据库查询结果、API调用结果或其他数据缓存到内存中,减少对数据库的访问频率,从而提高应用的响应速度。本文详细介绍了Memcached的基本原理、架构、安装配置、使用方法、测试方法以及应用场景。通过Memcached,开发者可以有效提升Web应用的性能,减少数据库负载,改善用户体验。
141 5
|
7月前
|
存储 缓存 关系型数据库
Django后端架构开发:缓存机制,接口缓存、文件缓存、数据库缓存与Memcached缓存
Django后端架构开发:缓存机制,接口缓存、文件缓存、数据库缓存与Memcached缓存
180 0
|
7月前
|
缓存 关系型数据库 MySQL
【缓存大对决】Memcached VS MySQL查询缓存,谁才是真正的性能之王?
【8月更文挑战第24天】在现代Web应用中,缓存技术对于提升性能与响应速度至关重要。本文对比分析了Memcached与MySQL查询缓存这两种常用方案。Memcached是一款高性能分布式内存对象缓存系统,支持跨服务器共享缓存,具备灵活性与容错性,但受限于内存大小且不支持数据持久化。MySQL查询缓存内置在MySQL服务器中,简化了缓存管理,特别适用于重复查询,但功能较为单一且扩展性有限。两者各有所长,实际应用中可根据需求单独或结合使用,实现最佳性能优化。
268 0
|
10月前
|
NoSQL Redis 缓存
【后端面经】【缓存】36|Redis 单线程:为什么 Redis 用单线程而 Memcached 用多线程?
【5月更文挑战第17天】Redis常被称为单线程,但实际上其在处理命令时采用单线程,但在6.0后IO变为多线程。持久化和数据同步等任务由额外线程处理,因此严格来说Redis是多线程的。面试时需理解Redis的IO模型,如epoll和Reactor模式,以及其内存操作带来的高性能。Redis使用epoll进行高效文件描述符管理,实现高性能的网络IO。在讨论Redis与Memcached的线程模型差异时,应强调Redis的单线程模型如何通过内存操作和高效IO实现高性能。
119 7
【后端面经】【缓存】36|Redis 单线程:为什么 Redis 用单线程而 Memcached 用多线程?
|
9月前
|
存储 缓存 负载均衡
OpenFeign高级用法:缓存、QueryMap、MatrixVariable、CollectionFormat优雅地远程调用
OpenFeign高级用法:缓存、QueryMap、MatrixVariable、CollectionFormat优雅地远程调用
|
10月前
|
缓存 NoSQL Redis
【后端面经】【缓存】36|Redis 单线程:为什么 Redis 用单线程而 Memcached 用多线程?--epoll调用和中断
【5月更文挑战第18天】`epoll`包含红黑树和就绪列表,用于高效管理文件描述符。关键系统调用有3个:`epoll_create()`创建epoll结构,`epoll_ctl()`添加/删除/修改文件描述符,`epoll_wait()`获取就绪文件描述符。`epoll_wait()`可设置超时时间(-1阻塞,0立即返回,正数等待指定时间)。当文件描述符满足条件(如数据到达)时,通过中断机制(如网卡或时钟中断)更新就绪列表,唤醒等待的进程。
91 6
|
10月前
|
缓存 NoSQL 中间件
【后端面经】【缓存】36|Redis 单线程:为什么 Redis 用单线程而 Memcached 用多线程?epoll、poll和select + Reactor模式
【5月更文挑战第19天】`epoll`、`poll`和`select`是Linux下多路复用IO的三种方式。`select`需要主动调用检查文件描述符,而`epoll`能实现回调,即使不调用`epoll_wait`也能处理就绪事件。`poll`与`select`类似,但支持更多文件描述符。面试时,重点讲解`epoll`的高效性和`Reactor`模式,该模式包括一个分发器和多个处理器,用于处理连接和读写事件。Redis采用单线程模型结合`epoll`的Reactor模式,确保高性能。在Redis 6.0后引入多线程,但基本原理保持不变。
87 2
|
9月前
|
缓存 Java Spring
SpringBoot配置第三方专业缓存技术Memcached 下载 安装 整合测试 2024年5000字详解
SpringBoot配置第三方专业缓存技术Memcached 下载 安装 整合测试 2024年5000字详解
69 0