memcached学习笔记

<?php 
//===========================================================================================================//
一、安装
.编译安装:需要先下载安装包,然后安装,需要工具Libevent
.依赖安装:使用系统自带的安装工具——yum(centos) | apt-get(ubuntu),安装的时候选择安装依赖包Libevent
.安装可以选择Memcached,而不是Memcache,因为它是Memcache的升级版本,运行速度更快

1.客户端安装:
	1.1  服务端安装目录默认是:/usr/bin/memecached
	1.2  # ps -ef | grep memcached :查看所有进程中进程名包含memcach的进程,ps命令用于监控进程,参数e表示监控全部等同于参数“A”,参数f是以ASCII字符显示树状结构以表明进程之间的关系,符号“|”是管道的意思,grep命令是一个强大的文本搜索命令,即全局正则表达式版本,使用权限是所有用户。
	1.3  启动命令:# /usr/bin/memcached -d -l 127.0.0.1 -p 11211 -m 150 -u cpt     参数-d表示以守护进程的模式启动,即terminal退出以后程序依然运行;-l表示ip;-p表示端口;-m是要分配给该进程的内存大小,以M为单位;-u表示用户身份

2.客户端安装:先安装Libmemcached,然后为PHP安装memcached扩展
	2.1  安装Libmemcached:https://launchpad.net/libmemcached
		.下载安装包libmemcached-1.0.18.tar.gz
		.解压:# tar zxvf libmemcached-1.0.18.tar.gz
		.配置路径:# ./configure  --prefix=/usr/lib/libmemcached
		.安装:# make && make install 
	2.2  PHP安装memcached扩展:http://pecl.php.net/package/memcached
		.下载扩展安装包:memcached-2.2.0.tgz
		.解压:# tar zxvf memcached-2.2.0.tgz
		.进入该目录: # cd memcached-2.2.0
		.运行phpize会多出一个配置文件:phpize
		.配置:# ./configure
			如果找不到php-config,请使用./configure --with-php-config=PATH,其中PATH是PHP的安装路径;
			如果找不到安装的扩展的目录(因为我们的Libmemcached安装在别的地方了),请加上参数指明扩展安装的地方 --with-libmemcached-dir=/usr/lib/libmemcached;
			如果不支持sasl.h,请加上参数说明 --disable-memecached-sasl
		.安装:# make && make install
		.安装成功后提示:Installing shared extensions:    /usr/lib/php/modules/
		.在php.ini配置文件最后追加扩展:# vim etc/php.ini,在文件底部G加入:extension=/usr/lib/php/modules/memcached.so 
		.重启服务器即可
	2.3 查看是否安装扩展完成:
		.# php -m | grep memcached
//============================================================================================================//
二、memcache类的操作和封装
1.系统类:
addServer/addServers/getStats/getVersion

2.数据类:
add/set/delete/flush/replace/increment/get

3.进阶类:
setMulti/deleteMulti/getMulti/getResultCode/getResultMessage

4.操作:
$memcache = new Memcached();
$memcache->addServer('127.0.0.1', 11211);

/*多台服务器*/
$ipArr = array(
	array('127.0.0.1', 11211),
	array('102.2.10.22', 11211),
	//...
);
$memcache->addServers($ipArr);

print_r($memcache->getStats());
print_r($memcache->getVersion());

/**
 * $memcache->add(key,val,timeout)
 * add方法第一个参数为key值,第二个参数为value值,第三个参数为失效时间,如果为0表示永久生效
 * add方法重复调用不会覆盖掉原来的值,要覆盖请使用replace()
 * 第一次调用脚本可以成功覆盖掉mkey,第二次就不能了
 */
$memcache->add('mkey','mvalue', 600);
echo $memcache->get('mkey')."\n";

$memcache->replace('mkey', 'mvalue2', 600);
echo $memcache->get('mkey')."\n";

/**
 * $memcache->set(key,val,timeout)方法当不存在的时候新建,存在的话进行覆盖
 */
$memcache->set('mkey', 'mvalue3', 600);
echo $memcache->get('mkey');

/**
 * $memcache->delete(key)方法删除某个key的value值
 */
$memcache->delete('mkey');
echo $memcache->get('mkey');

/**
 * $memcache->flush()清空掉memcached中的所有缓存
 */
$memcache->flush();
echo $memcache->get('mkey');

/**
 * $memcache->increment(key,offset,timeout)方法对整数按某个偏移量进行递增操作
 */
$memcache->set('num', 5, 0);
$memcache->increment('num', 5);
echo $memcache->get('num');

/**
 * $memcache->decrement(key,offset,timeout)方法对整数按某个偏移量进行递减操作
 */
//============================================================================================================//
三、利用memcached进行批量操作
$memcache = new Memcached();
$memcache->addServer('127.0.0.1', 11211);
/*memcached实现批量操作*/
$dataAry = array(
	'key' => 'val',
	'key1' => 'val1',
	'key2' => 'val2',
	'key3' => 'val3',
	'key4' => 'val4',
	'key5' => 'val5',
	'key6' => 'val6',
	'key7' => 'val7',
	'key8' => 'val8',
	'key9' => 'val9',
	'key10' => 'val10'
);

/**
 * $memcache->setMulti(array,timeout)批量处理数据
 */
$memcache->setMulti($dataAry,0);

/**
 * $memcache->getMulti(array())批量获取数据
 */
$result = $memcache->getMulti(array('key','key1','key2'));
print_r($result);
//输出
// Array
// (
//     [key] => val
//     [key1] => val1
//     [key2] => val2
// )

/**
 * $memcache->deleteMulti(array('key','key2'))删除多条数据
 */
$memcache->deleteMulti(array('key'));
echo $memcache->get('key')."\n";
echo $memcache->get('key1')."\n";
/**
 * $memcache->getResultCode()获取执行的结果代码:0为成功,非0失败,具体参考手册
 */
echo $memcache->getResultCode()."\n";
/**
 * $memcache->getResultMessage()获取操作结果的信息
 */
echo $memcache->getResultMessage()."\n";
//===========================================================================================================================//
四、封装自己的memcache类
//应具有如下特点:
//扩展性:既支持memcache又支持memcached
//可调试:
//尽量简便的操作,一个方法多种功能
//详见:http://benbird.cc/post/29



深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值