欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

memcached

程序员文章站 2022-07-03 14:20:39
...

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/

memcached

memcached


相关标签: memcached