Memcache
高性能 内存分布式存储系统 用来减轻数据库的负担 key value 内存中维护一个巨大的hash表 能够存储 图像 视频 文件 从数据库中获取的结果 从内存中读取 速度快
Memcache Memcached
memcache 是文件的名称 memcached 是主程序的文件名字 在内存中开辟空间 管理那些hash表
安装memcache
yum -y install libevent libevent-devel ./configure --prefix=/usr/local/memcached --enable-64bit make && make install 不要在 root 下面 安装 启动 cd /usr/local/memcached ./memcached -P 11211 -u root -d -P 端口号 -u 制定用户名 -d 后台运行 yum -y install telnet telnet 127.0.0.1 11211 set key flags expiretime byte set ririqi 0 100 5 key 键值 flag 键值对额外的信息 expiretime 过期时间 秒为单位 0 表示永不过期 byte 长度 STORED 存储成功 NOT_STORED get key 获取信息 也可以批量 获取 add 往指定的key中存入数据 如果key 存在 NOT_STORED set 如果key存在 更新 add key flags expiretime byte add test1 0 100 6 delete key 删除即可 往指定的key 结尾追加内容 key 事先要存在 append key 0 100 6 123qwe set test 0 100 2 19 incr test 10 表示 19+10 =29 decr test 10 递减指定的数目 必须是int 类型 不能使小数 后面必须要跟数字
安装 PHP 扩展
1.安装libmemcached
解压并进入目录 ./configure --prefix=/usr/local/libmemcached --with-memcached=/usr/local/memcached make && make install
2.安装 php-memcached php 扩展 跟普通安装 不太一样 但是 安装PHP扩展的方式都一样
unzip php7.zip 加压并进入目录 /usr/local/php7/bin/phpize 原来是没有configure的 通过这个命令 会出现一个configure #安装其它扩展 这一步是一样的 ./configure --with-php-config=/usr/local/php7/bin/php-config ./configure --with-php-config=/usr/local/php7/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached/ --disable-memcached-sasl 安装成功以后 会放到 一个目录下面 /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/ vim /usr/local/php7/etc/php.ini 加入下面两行 extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/ extension=memcached.so service php-fpm restart /usr/local/php7/bin/php -m 查看 扩展是否安装成功
session 共享
vim /usr/local/php7/etc/php.ini session.save_handler = memcached session.save_path = "127.0.0.1:11211,10.0.118.146:11211"
memcache 是多线程 redis 是单线程
早期版本的 key 是 1M 新版本 2M KEY_MAX_LENGTH 更改key的大小
把数据存在内存中 不支持持久化 断电数据丢失
不支持集群 但是 可以 memcached::addServers()往服务器中增加多台 memcached
$mem = new Memcached(); $mem->addServer('127.0.0.1',11211); $mem->set('name','世轩兄'); //$mem->set('name','kangbazi'); $mem->add('names',['l'=>'龙帅','f'=>'世豪'],time()+20); //添加过期时间 $mem = new Memcached(); $mem->addServer('127.0.0.1',11211); var_dump($mem->get('names'));
create table article(id int(11) primary key auto_increment not null,title varchar(250),content text,create_time int(10))engine=InnoDB charset=utf8;