博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Memcached
阅读量:6547 次
发布时间:2019-06-24

本文共 1965 字,大约阅读时间需要 6 分钟。

Memcached是一个高性能的分布式内存对象缓存系统,用于减轻数据库负载。它通过在内存中缓存数据来减少读取数据库的次数,从而提高接口的速度。

Window下安装Memcached

官网上并未提供Memcached的Window平台安装包,需要根据自己的系统及需要的版本号另行下载。在1.4.5版本以前Memcached可以作为一个服务安装,而在1.4.5及之后的版本删除了该功能。
1.下载安装包并解压。
2.管理员进入cmd,安装成服务memcached.exe -d install。

Memcached的特点及工作原理

1.完全基于内存缓存。
2.节点之间相互独立。
3.C/S模式架构,C语言编写,总共2000多行代码。
4.异步I/O模型,使用libevent作为事件通知机制。
5.被缓存的数据以key/value键值对形式存放。
6.全部数据存放在内存中,没有持久化设计,重启服务器后内存里的数据会丢失。
7.当内存中缓存的数据容量达到启动时设定的内存值时,就自动使用LRU算法删除过期的缓存数据。
8.可以对存储的数据设置过期时间,过期后的数据自动被清除,服务本身不会监控过期,而是在访问的时候查看key的时间戳,判断是否过期。
9.Memcached会对设定的内存进行分块,再把块分组,然后再提供服务。

协议

Memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。因此,通过telnet也能在memcached上保存数据、获取数据。

通信分布式

Memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个Memcached不会互相通信以共享信息,需要客户端实现。

Memcached连接

telnet 127.0.0.1 11211

set命令

set命令用于将数据存储在指定的key中,如果key已经存在,则更新数据。
set key flags exptime bytes [noreply]
value

参数说明:

key:键值,用于查找缓存值。
flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息。
exptime:在缓存中保存键值的时间长度(以秒为单位,0表示永远)
bytes:在缓存中存储的字节数
noreply(可选):该参数告知服务器不需要返回数据
value:存储的值(始终位于第二行)

set name 0 900 3

123
STORED

get name

VALUE runoob 0 3
123

输出信息说明:

STORED:保存成功。
ERROR:保持失败。
NOT_STORED:保持失败。

add命令用于将数据存储在指定的key中,如果key已经存在,则不更新数据。

replace命令用于替换已存在的数据。

append命令用于在后面追加数据。

prepend命令用于在前面追加数据。

cas命令用于执行一个"检查并设置"的操作。

get命令用于获取key的数据,多个key使用空格隔开,如果key不存在,则返回空。

gets命令用于获取带有cas令牌的数据,如果key不存在,则返回空。

delete命令用于删除。

flush_all命令用于清理缓存中的所有数据。该命令提供了一个可选参数time,用于在制定的时间后执行清理缓存操作。

Redis与Memcached的区别
1.网络IO模型
Redis:单线程的IO复用的网络模型。
Memcached:多线程的非阻塞IO复用的网络模型。
2.数据支持类型
Redis:key-value数据类型还支持list,set,zset,hash等数据结构的存储。
Memcached:key-value形式存储和访问数据。
3.数据持久化
Redis:支持数据持久化。
Memcached:不支持数据持久化。
4.数据一致性
Redis:提供了事务的功能,保证命令的原子性,中间不会被任何操作打断。
Memcached:提供了cas命令,保证多个并发访问操作同一份数据的一致性。
5.集群管理
Redis:服务器端构建分布式存储。
Memcached:只能采用客户端实现分布式存储。
6.性能
Redis:单核 数据量<100k(高) 数据量>100k(低)。
Memcached:多核 数据量<100k(低) 数据量>100k(高)。
7.内存使用效率
Redis:采用key-value存储结构利用率低,采用hash结构来做key-value存储(组合式的压缩方式)利用率高。
Memcached:采用key-value存储结构利用率高。

 

转载于:https://www.cnblogs.com/lc19149/p/9341112.html

你可能感兴趣的文章
Hadoop编译安装
查看>>
汇编字符串拷贝
查看>>
Lambda的前世今生
查看>>
TCP/IP模型简介和/etc/hosts文件说明
查看>>
UIButton常用属性
查看>>
主键自增归0
查看>>
mysql之 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 11
查看>>
如何批量修改文件后缀的方法
查看>>
Effective STL 笔记
查看>>
[LeetCode] 1. Two Sum
查看>>
POJ2538 ZOJ1884 UVA10082 WERTYU【输入输出】
查看>>
HDU5620 KK's Steel(C++语言版)
查看>>
旋转卡壳
查看>>
2016/10/09
查看>>
自定义HorizontalScrollView的scrollBar
查看>>
c++学习笔记和思考
查看>>
27.Docker集群部署
查看>>
DNS保存
查看>>
IOS 多线程02-pthread 、 NSThread 、GCD 、NSOperationQueue、NSRunLoop
查看>>
第一周冲刺第五天博客
查看>>