memcached
memcached
1.memcached 简介
MySQL
关系型数据库
数据存储在磁盘的
定位:数据仓库
Memcache
缓存数据库:memcache redis
NOSQL数据库 not only SQL 非关系型数据库
数据是存储在内存,内存速度远远快于磁盘
memcached的读取写入都是远远高于mysql这种关系型数据库的
数据库的并发:memcached 10w >>>>> mysql 1k
memcache缺点就是内存缺点:断电数据丢失
企业常用架构:Mysql+memcached 互补的
Redis 工作区域在内存,定时将内存数据保存到磁盘文件中 Mysql+redis
Memcached是一款开源的、高性能的纯内存缓存服务软件。Mem是内存的意思,cache是缓存的意思,d是daemon的意思。
C/S client/server
B/S browser浏览器/server
Memcached是一款开源的,高性能的纯内存缓存服务软件,Mem是内存的意思,cache是缓存的意思,d是daemon的意思
Memcached是项目的名字,诞生于2003年,Memcached服务分为客户端和服务端两部分,C/S架构。
1.1 Mysql+memcahed工作场景
业务数据存储在MySQL中
以前的情况:程序是直接读取mysql数据库
现在数据读取流程:步骤1:memcache没有任何数据,程序只能到数据库读取,首先会把数据返回给用户,其次,会将这个数据缓存到memcached
步骤2:程序会先判断这个数据是否在memcached中,如果在,直接从memcached中读取数据返回给用户,如果没有,那再次执行步骤1
更好的解决方法:将mysql中先全部缓存到memcache,,这个过程叫做预热
客户端软件Memcache-2.25.tar.gz
服务端软件memcached-1.4.13.tar.gz
2. 检查环境
[aaa@qq.com ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[aaa@qq.com ~]# uname -r
2.6.32-696.el6.x86_64
[aaa@qq.com ~]# getenforce
Disabled
[aaa@qq.com ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
2.1 安装
[aaa@qq.com ~]# yum -y install memcached
[aaa@qq.com ~]# rpm -ivh https://mirrors.aliyun.com/centos/6/os/x86_64/Packages/memcached-1.4.4-5.el6.x86_64.rpm
2.3 启动
[aaa@qq.com ~]# /etc/init.d/memcached start
Starting memcached: [ OK ]
[aaa@qq.com ~]# netstat -tplun|grep memcache
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 1483/memcached
tcp 0 0 :::11211 :::* LISTEN 1483/memcached
udp 0 0 0.0.0.0:11211 0.0.0.0:* 1483/memcached
udp 0 0 :::11211 :::* 1483/memcached
2.4 如果没有nc命令 使用yum安装
[aaa@qq.com ~]# rpm -ivh https://mirrors.aliyun.com/centos/6/os/x86_64/Packages/nc-1.84-24.el6.x86_64.rpm
2.5 printf向memcached写入数据
[aaa@qq.com ~]# printf "set key008 0 0 10\r\noldboy0987\r\n"|nc 127.0.0.1 11211 #写入数据
STORED
[aaa@qq.com ~]# printf "get key008\r\n"|nc 127.0.0.1 11211 VALUE key008 0 10 #读取数据
oldboy0987
END
2.5.1 写入数据
### printf :命令
### set : 写值
### key008 :key值 (键值)
### 0 0 10:第一个0为标志 ,第二个0为超时时间(0为永久,永不超时), 10 为超时时间 (默认为s)
### \r\n: 换行符的意思
### noldboy0987 :为写入的数据
根据自己设定的键值:key008 开读取写入的数据!
2.5.3 注意
写入数据的长度一个要对, 不然存不进去!
2.5.4 例如
[aaa@qq.com ~]# printf "set key009 0 10 12\r\noldboyzz0987\r\n"|nc 127.0.0.1 11211
STORED
[aaa@qq.com ~]# printf "get key009\r\n"|nc 127.0.0.1 11211
VALUE key009 0 12
oldboyzz0987
END
超过10s再次读取数据
[aaa@qq.com ~]# printf "get key009\r\n"|nc 127.0.0.1 11211
END
2.6 delete 删除数据
[aaa@qq.com ~]# printf "delete key008\r\n"|nc 127.0.0.1 11211 #删除数据
DELETED
[aaa@qq.com ~]# printf "get key008\r\n"|nc 127.0.0.1 11211 #读取key008数据,已经没有
END
2.7 查看命中率
[aaa@qq.com ~]# printf "stats\r\n"|nc 127.0.0.1 11211|grep hit
STAT get_hits 2
STAT delete_hits 1
STAT incr_hits 0
STAT decr_hits 0
STAT cas_hits 0
2.8 安装memcached服务器
## 安装 memcached服务端 要找相对应服务的模块 例如:php—服务,就要找相对应php服务的模块安装
2.8.1 把安装包放在目录下
[aaa@qq.com tools]# ll
total 337376
drwxr-xr-x 22 root root 4096 Jun 26 09:15 libiconv-1.14
-rw-r--r-- 1 root root 4984397 Jul 5 15:07 libiconv-1.14.tar.gz
-rw-r--r-- 1 root root 35981 Jul 28 2017 memcache-2.2.5.tgz
-rw-r--r-- 1 root root 314149697 Jul 5 15:09mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz.0
drwxr-xr-x 17 1001 1001 4096 Jun 26 09:20php-5.5.32
-rw-r--r-- 1 root root 17773092 Jul 5 15:06 php-5.5.32.tar.gz
drwxr-xr-x 2 nobody nfsnobody 4096 Jun26 12:22 wordpress
-rw-r--r-- 1 root root 8507412 Apr 23 21:24 wordpress-4.7.4-zh_CN.tar.gz
2.8.2 安装
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5
/application/php/bin/phpize
./configure --enable-memcache --with-php-config=/application/php/bin/php-config --with-zlib-dir
make
make install
[aaa@qq.com memcache-2.2.5]# ls /application/php-5.5.32/lib/php/extensions/no-debug-non-zts-20121212/
memcache.so
2.9 更改配置文件
[aaa@qq.com memcache-2.2.5]# sed -i '$a extension=memcache.so' /application/php/lib/php.ini
[aaa@qq.com memcache-2.2.5]# pkill php
[aaa@qq.com memcache-2.2.5]# /application/php/sbin/php-fpm -t[18-Jul-2017 09:07:01] NOTICE: configuration file /application/php-5.5.32/etc/php-fpm.conf test is successful
[aaa@qq.com memcache-2.2.5]# /application/php/sbin/php-fpm
[aaa@qq.com memcache-2.2.5]# /application/php/bin/php -m|grep memcache
memcache
### 显示 memcache 就表示模块添加成功了!
2.10 测试
[aaa@qq.com memcache-2.2.5]# cat /application/nginx/html/blog/mc.php
<?php
$memcache = new Memcache;
$memcache->connect('127.0.0.1 ', 11211) or die ("Could not connect");
$memcache->set('key20170728', 'oldboy0326');
$get_value = $memcache->get('key20170728');
echo $get_value;
?>
[aaa@qq.com memcache-2.2.5]# sed -i 's#session.save_handler = files#session.save_handler = memcache#;$a session.save_path = "tcp://127.0.0.1:11211"' /application/php/lib/php.ini
[aaa@qq.com memcache-2.2.5]# pkill php
[aaa@qq.com memcache-2.2.5]# /application/php/sbin/php-fpm -t[18-Jul-2017 09:10:29] NOTICE: configuration file /application/php-5.5.32/etc/php-fpm.conf test is successful
[aaa@qq.com memcache-2.2.5]# /application/php/sbin/php-fpm
[aaa@qq.com memcache-2.2.5]# cat >>/application/nginx/html/blog/sess.php<<"EOF"
> <?php
> session_start();
> if (!isset($_SESSION['TEST'])) {
> $_SESSION['TEST'] = time();
> }
>
> $_SESSION['TEST3'] = time();
>
> print $_SESSION['TEST'];
> print "<br><br>";
> print $_SESSION['TEST3'];
> print "<br><br>";
> print session_id();
> ?>
> EOF
[aaa@qq.com memcache-2.2.5]# printf "get t6p5a0iredji6qv2gnrtrkn5b7\r\n"|nc 127.0.0.1 11211
END
[aaa@qq.com tools]# tar xf memadmin-1.0.12.tar.gz -C /application/nginx/html/blog/
登录网址
http://blog.etiantian.org/memadmin/
上一篇: 999元起!雷蛇发布猎魂光蛛机械键盘:首用光学轴体
下一篇: ADS1115驱动程序
推荐阅读
-
ubuntu下安装memcached和PHP的memcache扩展
-
centos系统为php安装memcached扩展步骤
-
Shell脚本实现的memcached进程监控
-
Python中用memcached来减少数据库查询次数的教程
-
APMServ一键快速搭建Apache+PHP+MySQL+Nginx+Memcached+ASP运行平台教程
-
PHP安装memcached扩展笔记
-
Nginx HttpMemcModule和直接访问memcached效率对比测试
-
Linux下安装Memcached服务器和客户端与PHP使用示例
-
PHP MemCached 高级缓存应用代码
-
java 使用memcached以及spring 配置memcached完整实例代码