时间:2021-07-01 10:21:17 帮助过:2人阅读
分布式,内存缓存,服务器
内存缓存:
提供将数据缓存到内存中服务。数据在内存中,为一个临时的存储器,通常作为缓存服务器来使用,而不是数据服务器来使用。
缓存:将中间结果临时存储,就是缓存技术。
Memcache是缓存服务器,仅仅提供存储缓存数据,而不决定什么样的数据存储于缓存中。
分布式:
多台memcache服务器,组成memcache集合。
下载,解压,并拷贝到指定目录
官网:http://memcached.org/
Memcached的服务器端程序。
Linux:
Memcached服务器安装完毕。
方案一:基于CMD(命令行)的程序
通过CMD命令行,进行管理:
全部使用默认参数,即可开启memcached服务器:
此时,该memcached服务器,监听任意网卡(IP),11211端口上的请求。
典型的选项:
-p 所监听的端口
-l 所监听的网卡接口
如果一台电脑存在多个网络连接,可以指定监听哪个网络的请求
方案二:针对windows:
通过访问的方式,管理memcached。
选择–d 来控制该守护进程(deamon)
以管理员权限运行cmd
-d install安装服务
-d uninstall卸载服务
刚刚memcached是服务器端软件。
需要提供客户端软件。
Memcached的数据交互协议,基于文本的。因此只要可向目标服务器发送文本,即可memcached客户端使用。例如:telnet。
通过客户端软件 secureCRT来发送telnet协议,连接memcached服务器:
(putty,windows自带的telnet都可以)
一个KEY,对应一个值。
Set KEY 是否压缩 有效期 长度
值
Key: 具有独立标志功能的字符串,长度在250个字节之内。
是否压缩: 是否将数据压缩后进行存到服务器端。节省存储空间(需要压缩与解压时间)。
有效期: 数据在服务器端存储的有效时间。有效期的表示方式存在2种,时间间隔,时间戳。其判断使用哪种方式,依据有效期整数值的大小。临界值为: 30*24*3600 = 2592000
测试获取:
发现e3过期,因为:超过2592000当作时间戳来处理。
如果需要设置超过30天的数据,则使用时间戳的形式:
Time()+间隔
长度: 数据占用的空间,单位字节。与字符集相关。
存在则替换,不存在则创建。
添加
使用方式与参数与set一致。
仅仅可以完成添加,如果key已经存在,则add失败。
替换
使用方式与参数与set一致。
仅仅完成存在时替换。
Increment,递增
将已有值,递增N个数
(get,+,set)
Decrement,递减
(get,-,set)
Get KEY
删除某个key
删除全部
获取当前服务器状态信息
PHP作为memcached服务器的客户端来使用。
将扩展文件:php_memcached.dll 看拷贝到PHP的扩展目录
修改PHP.ini增加开启该扩展指令:
该扩展提供面向对象的操作语法:
Connect
$mem->set(KEY, VALUE, 是否压缩, 有效期)
$mem->add(KEY, VALUE, 是否压缩, 有效期);
$mem->replace(KEY, VALUE, 是否压缩, 有效期);
如果需要压缩存储,将flag标志设置为
MEMCACHE_COMPRESSED
$mem->increment();
$mem->decrement();
$mem->get(KEY);
分成两类进行处理:
标量类型:
整型,浮点型,布尔型,字符串
以字符串的形式进行存储:
非标量类型:
数组,对象, NULL
数据类型可以被保存,获得原始数据。可见,set方法,在判断当前的数据为非标量类型时,自动进行序列化存储,获取时完成反序列化返回。
各个memcached服务器间互不通讯的分布式算法。
要求,分布式算法(一个key 对应哪台memcached服务器)是由客户端决定(实现)的。
Memcached默认实现的是:
取模(求余):依据服务器的数量,计算余数,对应某台memcached服务器。
使用:
后续的使用与基本操作是相同的: