memcache和memcached的区别
memcached技术,这个很容易理解这是memcached是内存缓存,但是怎么还有memcache呢?
其实很简单,memcache是php的一个扩展,用于php管理memcached,php-memcache.dll。
(1)如果安装了memcached不安装扩展,那么php无法操控memcached,但是命令行使用起来没有问题
(2)如果安装了memcache扩展但是没有安装memcached服务,那么这个就无法使用
(3)只有同时安装了memcached服务和memcache扩展才可以在PHP中使用memcached提高动态网站性能
一、安装过程:1、下载memcache的windows64版本
2. 解压下载后的文件,把它放到一个目录中,如D:\memcached。
3. 打开cmd,进入memcached解压后存放的目录,运行命令:
memcached.exe -d install
4、测试是否安装成功:
打开cmd,进入memcached解压后存放的目录,运行命令:
memcached -h,若安装成功,会出现如下界面:
5. 启动memcached:
打开cmd,进入memcached解压后存放的目录,运行命令
memcached -m30 -llcoalhost -p9000 -d start
这时memcached已经启动,在任务管理器中可以看到这个进程:
6、memcache 的基本设置
Memcached 的基本设置 , 可以使用memcached -d ,而不需要memcached.exe -d
-p 监听的端口-l 连接的IP地址,默认是本机-d start 启动memcached服务-d restart 重启memcached 服务-d stop|shutdown 关闭正在运行的memcached服务-d install 安装memcached服务-d uninstall 卸载memcached 服务-u 以xx的身份运行(仅在root运行的时候有效)-m 最大内存使用,单位MB,默认是64MB,最大好像2G-M 内存耗尽时返回错误,而不是删除项-c 最大同时连接数,默认是1024-f 块大小增长因子,默认是1.25-n 最小分配空间 key+value+flags 默认是48-h 显示帮助
7、连接memcache
打开cmd,运行命令:
telnet 127.0.0.1 11211
即可连接Memcached。
注:
(1)win7中可能会出现“telnet’不是内部或外部命令”的错误,这是因为系统中默认没有安装telnet的缘故,可在“控制面板”->“程序”->“程序和功能”->“打开或关闭Windows功能”中打开“Telnet客户端”
(2)在使用telnet 过程中,可能会出现:”该指令无效”,原因是没有回车,
A. Telnet localhost 11211 【回车】
B. Ctrl + 】 打开回显功能
C. 回车
二、memcached常用的控制指令
(1)常用指令如下
命令 | 描述 | 例子 |
get | 获取一个key值 | Get mykey |
set | 设置一个key值 如果key值存在,更新 如果key值不存在,添加 | Set mykey 0 60 5 0(压缩标识)60(时间,秒)5(字符长度) |
add | 增加一个key值 如果值存在是要失败的 | Add newkey 0 60 5 回车之后,输入5个字符长度的数据 |
replace | 重写一个存在的key值 如果这个key 不存在是要报错的 | Replace key 0 60 5 和set类似,却别在于该变量不存在则不能存储 |
append | 追加一个数据到存在的key值的后面 Hello helloworld | Append key 0 60 15 |
Prepend | 追加一数据到存在的key值的前面 | Prepend key 0 60 15 |
Incr | 给key值加数 只有当key值是数字才可以加减 | Incr mykey 2 |
Decr | 给key值减数 只有当key值是数字才可以加减 | Decr mykey 5 |
Delete | 删除一个key | Delete mykey |
Flush_all | 清除所有key | Flush_all |
在一段时间(秒)后清除key | Flush_all 900 | |
stats |
| Stats |
| Stats slabs | |
| Stats malloc | |
| Stats detail | |
| Stats sizes | |
| Stats reset | |
version |
| Version |
Verbosity |
| Verbosity |
quit |
| quit |
(2)stats 的详细解释
Pid | Memcache服务器的进程ID |
Uptime | 服务器已经运行的秒数 |
Time | 服务器当前的unix时间戳 |
Version | Memcache版本 |
Pointer_size | 当前操作系统的指针(32位系统一般是32bit) |
Rusage_user | 进程累计用户时间 |
Rusage_system | 进程的累计系统时间 |
Curr_items | 服务器当前存储的items数量 |
Total_items | 从服务器启动后存储的items总数量 |
Bytes | 当前服务器存储items占用的字节数 |
Curr_connections | 当前打开着的连接数 |
Total_connections | 从服务器启动以后曾经打开过的连接数 |
Connection_structures | 服务器分类的连接构造数 |
Cmd_get | Get命令(获取)总请求次数 |
Cmd_set | Set命令(保存)总请求次数 |
Get_hits | 总命中次数 |
Get_misses | 总未命中次数 |
Evictions | 为获取空闲内存而删除的items 数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items) |
Bytes_read | 总读取字节数(请求字节数) |
bytes_written | 总发送字节数(结果字节数) |
limit_maxbytes | 分配给memcache的内存大小(字节) |
threads | 当前线程数 |
Stats items 查看变量的数量,以及变量的状态Stats cachedump 1 1 [1:指的是压缩时候的标记,后面的1表示的是查看第一条,不是查看第一条里面的记录]、Stats cachedump 1 0 [0:指的是查看所有memcache中存储的变量]
三、安装memcache的php扩展:
下载地址:
http://windows.php.net/downloads/pecl/releases/memcache 进入相关下载页面(下载相关版本)
(1)将下载的php_memcache.dll (根据php的相应版本)放到php的安装目录ext 下
(2)在php.ini 中配置 extension = php_memcache.dll 扩展
如果打开phpinfo()页面没有看到memcached说明没有安装成功
下载的php_memcache.dll 一定要与当前的php版本一致才能安装成功
若能打印出memcache中的信息,则说明php的memcache扩展已安装成功且能使用了!
注意:运行代码时若出现错误Fatal error: Class 'Memcache' not found,有可能是下载的 php_memcache.dll文件与php版本不符,或者与系统位数不符。我的是64位系统,php版本是5.5.12,下载的是php_memcache-3.0.8-5.5-ts-vc11-x64.zip这个文件。
(3)Memcache在php中的使用分为三部分
memcache扩展(php_memcache.dll),memcached扩展(php_memcached.dll),socket操作
①memcache扩展
下载相应版本的php_memcache.dll扩展,在php.ini中配置extension=php_memcache.dll
$mem = new Memcache;$mem ->connect('localhost' , 11211);//连接memcache缓存服务器 , pconnect()长连接,不会因为close而关闭
$mem ->add('demo' , 'hello world!' , false , 30);//插入数据
$demo = $mem ->get('demo');//取出数据
echo "demo的值是:".$demo."<br/>";
$mem->add('num' , 9 , false , 30);
$mem->increment('num' , 1);//将内存中的num 加1
$mem ->decrement('num' , 2);//将内存中的num减1 , 减的数字最小为0
$mem ->delete('num');//删除内存中的num$mem ->flush();//清空内存中所有的变量
$mem ->set('a' , '刘德华' , false , 30);//修改一个变量,当变量不存在时,增加
echo $mem ->get('a');
$mem ->replace('b' ,'demored' , false , 30);//替换一个已经存在的变量,变量不存在不作任何操作
echo $mem->get('b');$mem ->close();//关闭memcache
②Memcached 扩展
下载相应版本的php_memcache.dll
③Socket
使用 memcache-client.php 来使用socket 网络编程来使用memcache , 用法和memcache扩展类似