一 、 MemCache  简介  ;

memcached  是一款开源的、高性能的纯内存缓存服务软件,mem  是内存的意思 ,cache 是缓存的意思 , d 是 daemon 的意思

memcache 是项目的名字,诞生于 2003 年,memcached 服务分为 客户端和服务端两部分,C/S 架构 ;

缓存数据库包含  ; memcache  redis ,它们的 数据是存储在内存中,而内存的速度远远快于磁盘加快网页响应速度 ;

NOSQL 数据库;not  only SQL  ( 非关系型数据库 ) ;

memcache缓存数据库的并发 ; --->> 10w

memcache的缺点就是内存的缺点 ---->> 断点数据丢失

企业中常用的memcache 架构 : MySQL + memcache   (互补一下 )

这里说一下 Redis 优点 ;

Redis 工作区域在内存,但是会定时的将内存的数据保存到磁盘中 。

二 、MemCache 原理以及优点 ;

再启动 memcache 的时候 ,需要指定内存大小,根据指定的内存大小会被分配一个内存空间,当我们读取数据库的各类业务数据后,数据会同时放入到memcache 缓存中,当用户下一次请求同样的数据时,程序直接去memcache 缓存中取数据,直接返回给用户 。

优点 :

① 、 对于用户而言,用户访问网页更快了,体验好

② 、对于网站来说,数据库的压力降低了,只有当内存没有数据的时候才会去请求数据库,第一次写入数据是会请求数据库。

因为 memcached 是直接从内存读取数据的很快 ,而MySQL是从磁盘取数据的,上面也说了内存的响应速度比磁盘快很多 。
      还有就是一般公司会有 “预热” 就是先把MySQL 中的数据放到 memcache 中  。

③ 、提升了网站的并发访问,减少服务器数量 ;

三 、MySQL + MemCache 工作场景 ;

数据读取流程 ;

步骤① 、memcache 中没有发现用户需要的数据,程序只能到MySQL中读取,优先会把数据返回给用户,其次会将这个数据缓存到                                memcache中 。

步骤② 、程序会优先判断这个数据是否存在 memcache 中,如果在直接从memcache 中返回给用户,如果不在重复步骤①

memcache 可以作为数据库的前端缓存应用 ;

1 , 完整缓存 ;

例如京东的商品分类,就可以事先放到 memcache 中 , 然后在对外提供数据的访问,这个叫 “ 预热 ” 就是先把数据放到memcache中提供用户访问,所以数据库的压力就降低了 。

2 ,热点缓存 ;

热点缓存一般是指由用户更新商品,列如淘宝卖家,卖家新增商品后需要保证数据中和缓存中的数据一致  ;

完整缓存: 缺点是需要消耗大量的内存空间  ;

热点缓存:将重要的数据缓存到 memcache 中,但是要注意数据一致性的问题 ,需要保证memcache的数据和mysql一致

四 、 cookie 与 session  了解  ;

企业案例  ;

五 、 部署安装memcache  ;

一  、环境检查

[root@web01 ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[root@web01 ~]# uname -r
2.6.32-696.el6.x86_64
[root@web01 ~]# getenforce 
Disabled
[root@web01 ~]# /etc/init.d/iptables status
iptables:未运行防火墙。
[root@web01 ~]# ip a

[root@web01 ~]# yum -y install memcached            ---->>  使用 yum 安装memcache

总下载量:69 k
下载软件包:
memcached-1.4.4-5.el6.x86_64.rpm                                                      |  69 kB     00:00     
已安装:
  memcached.x86_64 0:1.4.4-5.el6

完毕!

5.1 、memcache 基本参数  ;

-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助

5.2 ,memcache 启动的两种方式  ;

[root@web01 ~]# /etc/init.d/memcached start
正在启动 memcached:                                       [确定]
[root@web01 ~]# netstat -lntup | grep memcached
tcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN      1815/memcached      
tcp        0      0 :::11211                    :::*                        LISTEN      1815/memcached      
udp        0      0 0.0.0.0:11211               0.0.0.0:*                               1815/memcached      
udp        0      0 :::11211                    :::*                                    1815/memcached      
[root@web01 ~]#

[root@web01 ~]# vim /etc/init.d/memcached

--->>  这个脚本可以直接启动memcache ,如果想做memcache 多实例的话直接把这个脚本在复制一份变更一下端口即可 。

六 ,管理使用memcache ;

memcache 存数据使用   set      查数据库 get    删除  delete

通过 “ nc ” 写入 ;

[root@web01 ~]# printf "set key008 0 0 10\r\noldboy0987\r\n"
set key008 0 0 10
oldboy0987

printf  --->> 命令可以识别出换行符 所以就直接换行了 。

set  --->>  设置一个键值 叫   key008

第二个 0    --->>  表示超时时间,key的超时时间 0  就表示永不超时永不死亡

10  表示   --->> 插入的数据有多少个字符

注 : 生产环境中这些是开发写程序来直接运算的,这里只大概了解每个参数即可

==================================================================================

[root@web01 ~]# printf "set key008 0 0 10\r\noldboy0987\r\n"|nc 127.0.0.1 11211    
STORED                                       ---->>  表示数据存储成功
[root@web01 ~]# printf "get key008\r\n"|nc 127.0.0.1 11211              ---->>    查看数据 
VALUE key008 0 10               
oldboy0987
END
[root@web01 ~]#

[root@web01 ~]# printf "set key009 0 10 9\r\nmemca0987\r\n"|nc 127.0.0.1 11211  
STORED
[root@web01 ~]# printf "get key009\r\n"|nc 127.0.0.1 11211
VALUE key009 0 9
memca0987
END
[root@web01 ~]#

10  表示 10 秒之后就自动删除

memcache   状态信息  ;

[root@web01 ~]# telnet 10.0.0.8 11211
Trying 10.0.0.8...
Connected to 10.0.0.8.
Escape character is '^]'.
stats
STAT pid 1815
STAT uptime 3848
STAT time 1537111092
STAT version 1.4.4
STAT pointer_size 64
STAT rusage_user 0.129980
STAT rusage_system 0.107983
STAT curr_connections 10
STAT total_connections 19
STAT connection_structures 11
STAT cmd_get 2
STAT cmd_set 3
STAT cmd_flush 0
STAT get_hits 2
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 214
STAT bytes_written 122
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 162
STAT curr_items 2
STAT total_items 2
STAT evictions 0
END

监控 memcache 参数  ;

可以监控以下的几项来进行监控 memcache 是否正常  ;

① , 监听端口 11211 或者 进程 ;

② ,可以模拟用户先 set 后 get,对比get内容是不是 set 的,crond 、nginx 、zabbix  ;

③ ,监控命中百分比  ;

④ ,也可以监控响应时间以及需要的状态  ;

可以用 gnuplot    rrdtool  等绘图工具出图 。

七  、 memcache  客户端安装  ;

[root@web01 ~]#  wget http://pecl.php.net/get/memcache-2.2.5.tgz
[root@web01 ~]# tar zxvf memcache-2.2.5.tgz

[root@web01 ~]# cd memcache-2.2.5

[root@m01 memcache-2.2.5]# /application/php/bin/phpize         ----->>   告诉php 新装了个模块过来认识一下  
Configuring for:
PHP Api Version:         20121113
Zend Module Api No:      20121212
Zend Extension Api No:   220121212
[root@m01 memcache-2.2.5]#

[root@web01 memcache-2.2.5]# ./configure --enable-memcache --with-php-config=/application/php/bin/php-congig --with-zlib-dir

注意 ; 这里是需要 php 作为基础环境的,根据自己配置的 PHP 来安装  ;

[root@web01 memcache-2.2.5]# make && make install       --->> 出现以下结果表示安装成功  ;
Installing shared extensions:     /application/php-5.5.32/lib/php/extensions/no-debug-non-zts-20121212/

让模块生效,因为默认的是安装完后不生效的 ;

[root@m01 memcache-2.2.5]# sed -i '$a extension=memcache.so' /application/php/lib/php.ini 
[root@m01 memcache-2.2.5]# ll /application/php-5.5.32/lib/php/extensions/no-debug-non-zts-20121212/
总用量 252
-rwxr-xr-x 1 root root 257920 9月   5 05:37 memcache.so   
[root@m01 memcache-2.2.5]#

重启 ;

[root@m01 memcache-2.2.5]# pkill php
[root@m01 memcache-2.2.5]# /application/php/sbin/php-fpm -t
[05-Sep-2018 05:50:46] NOTICE: configuration file /application/php-5.5.32/etc/php-fpm.conf test is successful

[root@m01 memcache-2.2.5]# /application/php/sbin/php-fpm
[root@m01 memcache-2.2.5]# /application/php/bin/php -m |grep memcache
memcache
[root@m01 memcache-2.2.5]#

MemCache 部署以及介绍 ;相关推荐

  1. Memcache的分布式介绍

    Memcache的分布式介绍 memcached虽然称为"分布式"缓存服务器,但服务器端并没有"分布式"功能.服务器端仅包括内存存储功能,其实现非常简单.至于m ...

  2. Solr系列二:solr-部署详解(solr两种部署模式介绍、独立服务器模式详解、SolrCloud分布式集群模式详解)...

    一.solr两种部署模式介绍 Standalone Server 独立服务器模式:适用于数据规模不大的场景 SolrCloud  分布式集群模式:适用于数据规模大,高可靠.高可用.高并发的场景 二.独 ...

  3. Openstack各种部署工具介绍

    原文地址: http://www.aboutyun.com/forum.php?ctid=3&mod=viewthread&tid=7476 Openstack各种部署工具介绍 问题导 ...

  4. 深度学习模型部署简要介绍

    一.模型部署简介 近几年来,随着算力的不断提升和数据的不断增长,深度学习算法有了长足的发展.深度学习算法也越来越多的应用在各个领域中,比如图像处理在安防领域和自动驾驶领域的应用,再比如语音处理和自然语 ...

  5. Lync Server 2013企业版部署系列之一:部署环境介绍

    本文将开始lync server 2013企业版的部署,首先来介绍一下实验环境,本次部署使用三台机器,一台Dc服务器(并置Ca),一台数据库服务器,作为lync 2013的后端存储,一台lync前端服 ...

  6. A053_项目部署_Linux介绍_CentOS

    目录 1.内容介绍 2.为什么需要Linux 3.Linux简介 3.1.什么是Linux? 3.2.Linux的优点 3.3.常见的Linux系统 3.4.小结 4.虚拟机安装 4.1.引入 4.2 ...

  7. Flink-安装部署及部署模式介绍

    Flink支持三大部署模式: 1. Local 本地部署 Flink 可以运行在 Linux.Mac OS X 和 Windows 上.本地模式的安装唯一需要的只是Java 1.7.x或更高版本,本地 ...

  8. Phoenix(凤凰)安装部署及介绍

    Phoenix介绍 phoenix,中文译为"凤凰",很美的名字.Phoenix是由saleforce.com开源的一个项目,后又捐给了Apache基金会.它相当于一个Java中间 ...

  9. 深度学习算法训练和部署流程介绍--让初学者一篇文章理解算法训练和部署流程

    目录 1 什么是深度学习算法 2 算法训练 2.1 训练的原理 2.2 名词解释 3 算法C++部署 3.1 嵌入式终端板子部署 3.3.1 tpu  npu推理 3.3.2 cpu推理 3.2 服务 ...

最新文章

  1. C++ 多线程:时间控制
  2. timesten 修改最大连接数
  3. 像鸟一样树上栖息、空中抓物,斯坦福给无人机安上爪子,登Science子刊封面
  4. 最大输入hdu 2534 规律水题 求任意个a,b的和 不能表示的最大的数
  5. 一个爬虫的demo,requests,beatuifulsoup使用的
  6. c语言while计算机编写,计算机等级考试二级C语言(while与dowhile循环)
  7. 2批量批量查询数据插入数据_你还在利用复制批量插入数据吗?一个oracle命令助你批量插入数据...
  8. 中获取文件名不要扩展名_如何批量修改文件名,3s时间够不够
  9. 前端学习(2151):webpack之使用vue
  10. ❤️《10个超级常用Python方法总结》复制即用丨小白捷径【文末赠书2本】❤️
  11. ubuntu 14.04 16.04 安装caffe+cuda8.0+pycafee总结
  12. docker中更新镜像——基于Prometheus
  13. (组合数学3.1.2.1)POJ 2249 Binomial Showdown(排列组合公式的实现)
  14. Node.js HTTP
  15. java+selenium实现web多系统登录
  16. 只有低价才是中国智能硬件的出路吗?
  17. 制作png格式透明图片的简易方法
  18. 转贴:ubuntu Rhythmbox歌曲名乱码问题
  19. java计算机毕业设计基于安卓Android/微信小程序的婚恋交友系统uni-app
  20. 元素显示类型-快元素、行内元素、行内快元素、盒子模型以及元素类型相互转换

热门文章

  1. Java代码规范与质量检测插件SonarLint
  2. vim/gvim插件-verilog autodef-自动生成
  3. python海龟怎么隐藏_Turtle库学习--海龟可见性与外观
  4. 【无标题】数据仓库-学习
  5. 起点中文网月票等字体数据爬取Python
  6. gdb插件安装与配置:pwndbg,peda,gef
  7. extreme Table 使用
  8. PhysX官方手册翻译(二)
  9. Java物联网开发(一) —— MQTT协议
  10. pyhton 创建shp文件并投影,批量进行坐标转换与添加投影信息,合并shp文件,分割shp文件