Memcache
定义:
是一个高性能的分布式内存对象缓存系统
与mysql做比较
(1)该软件是一个c/s架构,
(2)mysql的数据是存储到哪里的?是存储到磁盘里面的。
memcache的数据是存储到内存里面
(3)mysql的数据存储是,由数据库,数据表,数据的记录,存储数据是按照表的结构进行存储的。
memcache的数据存储格式是:key/value的格式,来存储的,相当于在内存里面有一张两列的哈希表。类似于php的里面的关联数组
key (键名) 值
原理:
发送请求从数据库中读取数据memcache把数据库中的数据缓存到内存中生成静态文件,当下次请求数据库时调用静态页面
安装步骤:
1、在apache 同级目录下建立memcache文件 将memcached_win32_1.4.5中文件全部复制到memecache中
2、右键点击cmd.exe (黑窗口)以管理员身份打开 d: cd phpstudy cd memcache 输入 memcache.exe -d install 右键点击计算机 点击管理 点击服务启动memcache
使用方式:
cmd 中telnet
安装 :点开控制面板-程序功能-左侧添加window功能将telnet客户端选中
添加一般使用set eg:set username 0 60 4
list
键名 0|1(是否压缩) 缓存周期 值的长度 [按回车,进行输入要添加的数据]
值的长度:长度的单位和客户端有关,此处是字节。
缓存周期:单位是秒,
set命令和add的语法是一样的。
如果键已经存在,则是完成修改,如果键不存在则是添加操作。
获取数据eg :get 键名
(3)删除数据 delete 键名
flush_all 清空所有的数据,
(4)数据追加
append 在原有值的后面追加数据
preappend 在原有值的前面追加数据。
5)查看当前状态的一个命令:
通过该stats 命令能够获取,执行了多少次的get查询,有多少次能够使用get查询到数据,有多少次能够使用get查询失败,计算命中率,
计算命中率 get成功查询的次数/get的总的查询次数,通过命中率来判断memcache服务性能。
端口号:
11211
php调用memecache
$mem=new Memcache(); 实例化对象
$mem->connect('localhost',11211); 主机名 端口号
$mem->addServer('192.168.1.66'); 添加缓存服务器
缓存周期
如果缓存周期设置为0表明此数据永不过期
第一种使用:秒数,最大不能超过30天,即2592000秒
第二种使用:使用时间戳,该时间戳是到的哪个时间点
eg:比如我们要把一个数据缓存60天,
$mem->add($key,$value,0,time()+60*24*3600)
是否压缩:
0表示不压缩
1表示压缩
注意:如果键值已经存在则添加失败
$mem->get('usename'); 获得值
eg:$mem->add('arr',array(1,2,3),0,30);
var_dump($mem->get('arr')); 数组将以序列化形式存储
分布式没有集群安全
服务器顺序存取顺序一致
哈希算法
分布式哈希
ini_get(memcache.hash_strategy); 获取php.ini中 哈希算法的类型 standard(标准)分布式哈希
ini_get(memcache.hash_function); 获取哈希算法方法
一致性哈希
定义:
是一个高性能的分布式内存对象缓存系统
与mysql做比较
(1)该软件是一个c/s架构,
(2)mysql的数据是存储到哪里的?是存储到磁盘里面的。
memcache的数据是存储到内存里面
(3)mysql的数据存储是,由数据库,数据表,数据的记录,存储数据是按照表的结构进行存储的。
memcache的数据存储格式是:key/value的格式,来存储的,相当于在内存里面有一张两列的哈希表。类似于php的里面的关联数组
key (键名) 值
原理:
发送请求从数据库中读取数据memcache把数据库中的数据缓存到内存中生成静态文件,当下次请求数据库时调用静态页面
安装步骤:
1、在apache 同级目录下建立memcache文件 将memcached_win32_1.4.5中文件全部复制到memecache中
2、右键点击cmd.exe (黑窗口)以管理员身份打开 d: cd phpstudy cd memcache 输入 memcache.exe -d install 右键点击计算机 点击管理 点击服务启动memcache
使用方式:
cmd 中telnet
安装 :点开控制面板-程序功能-左侧添加window功能将telnet客户端选中
添加一般使用set eg:set username 0 60 4
list
键名 0|1(是否压缩) 缓存周期 值的长度 [按回车,进行输入要添加的数据]
值的长度:长度的单位和客户端有关,此处是字节。
缓存周期:单位是秒,
set命令和add的语法是一样的。
如果键已经存在,则是完成修改,如果键不存在则是添加操作。
获取数据eg :get 键名
(3)删除数据 delete 键名
flush_all 清空所有的数据,
(4)数据追加
append 在原有值的后面追加数据
preappend 在原有值的前面追加数据。
5)查看当前状态的一个命令:
通过该stats 命令能够获取,执行了多少次的get查询,有多少次能够使用get查询到数据,有多少次能够使用get查询失败,计算命中率,
计算命中率 get成功查询的次数/get的总的查询次数,通过命中率来判断memcache服务性能。
端口号:
11211
php调用memecache
$mem=new Memcache(); 实例化对象
$mem->connect('localhost',11211); 主机名 端口号
$mem->addServer('192.168.1.66'); 添加缓存服务器
$mem->add('username','zhangsan',0); ‘键值’,'值','是否压缩','缓存时间'
$mem->set('username','zhangsan',0); ‘键值’,'值','是否压缩','缓存时间'
缓存周期
如果缓存周期设置为0表明此数据永不过期
第一种使用:秒数,最大不能超过30天,即2592000秒
第二种使用:使用时间戳,该时间戳是到的哪个时间点
eg:比如我们要把一个数据缓存60天,
$mem->add($key,$value,0,time()+60*24*3600)
是否压缩:
0表示不压缩
1表示压缩
注意:如果键值已经存在则添加失败
$mem->get('usename'); 获得值
eg:$mem->add('arr',array(1,2,3),0,30);
var_dump($mem->get('arr')); 数组将以序列化形式存储
分布式没有集群安全
服务器顺序存取顺序一致
哈希算法
分布式哈希
ini_get(memcache.hash_strategy); 获取php.ini中 哈希算法的类型 standard(标准)分布式哈希
ini_get(memcache.hash_function); 获取哈希算法方法
一致性哈希