操作memcached服务:
1、php程序(memcache扩展操作,memcached扩展操作,直接使用socket编程来操作)
2、telent工具
telnet操作
telent 127.0.0.1 11211 连接
add key名 0 存放时间(秒) 数据大小(字符) (注 0表示不压缩 MEMCACHE_COMPRESSED表示压缩lzip压缩,存放时间为0 永不过期,直接给过期时间为秒数最大为30*3600*24,若想保存超过30天的具体时间则可设为 time()+天数*3600*24)
get/add/set/replace/append/prepend
|
.. key 0 60 5
|
delete |
delete key
|
incr/decr |
incr/decr key number
|
flush_all |
flush_all / flush_all 900 900秒后数据清空
|
stats |
状态
|
version/quit |
|
php程序操作memcached增删改查
//创建一个mem对象实例
$mem=new Memcache;
//连接数据库
if(!$mem->connect("127.0.0.1",11211)){
die('连接失败!');
}
//存入字符串(除了资源不能存其他都能存,资源会存入0)
$mem->set('key1', 'guugle', MEMCACHE_COMPRESSED, 0);
//引入源码
require_once 'memcached-client.php';
$mc = new memcached(array(
'servers' => array('127.0.0.1:11211'), //连接的memcacheip和端口
'debug' => false, //是否debug
'compress_threshold' => 10240, /*最大压缩*/
'persistant' => true)); /*是否是持久连接*/
$mem = new Memcache;
$mem->addServer('127.0.0.1',11211);
$mem->addServer('127.0.0.1',9999);
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
ini_set("session.save_handler","memcache");
ini_set("session.save_path","tcp://127.0.0.1:11211");
问题:
在另外文件中取出对象时,有个注意的地方,对应php5.2这个版本会提示错误,对php5.3这个版本会提示 incomplete 信息, 解决方法是在要取对象的页面再声明类定义即可
注:
端口号: 0~65535(两个字节表示);有名端口:0-1024 常用占用端口:apache 80 ssh 22 ftp 21 stmp 25 mysql 3306 oracle 1521
序列化/反序列化: 数组或对象 -> serialize 转化成字符串(保证数据信息及其类型和结构不丢失)同时可存储到任何地方。 ->unserialize 转换城数组/对象。
为什么需要序列化:1、对象保存到磁盘中,必须要序列化,不然保存不了。2、数组在网络上传输必须序列化成字符串
什么时候使用serialize 什么时候使用json_encode ?
ajax配合时优先使用json_encode