MemCache 部署以及介绍 ;
一 、 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 部署以及介绍 ;相关推荐
- Memcache的分布式介绍
Memcache的分布式介绍 memcached虽然称为"分布式"缓存服务器,但服务器端并没有"分布式"功能.服务器端仅包括内存存储功能,其实现非常简单.至于m ...
- Solr系列二:solr-部署详解(solr两种部署模式介绍、独立服务器模式详解、SolrCloud分布式集群模式详解)...
一.solr两种部署模式介绍 Standalone Server 独立服务器模式:适用于数据规模不大的场景 SolrCloud 分布式集群模式:适用于数据规模大,高可靠.高可用.高并发的场景 二.独 ...
- Openstack各种部署工具介绍
原文地址: http://www.aboutyun.com/forum.php?ctid=3&mod=viewthread&tid=7476 Openstack各种部署工具介绍 问题导 ...
- 深度学习模型部署简要介绍
一.模型部署简介 近几年来,随着算力的不断提升和数据的不断增长,深度学习算法有了长足的发展.深度学习算法也越来越多的应用在各个领域中,比如图像处理在安防领域和自动驾驶领域的应用,再比如语音处理和自然语 ...
- Lync Server 2013企业版部署系列之一:部署环境介绍
本文将开始lync server 2013企业版的部署,首先来介绍一下实验环境,本次部署使用三台机器,一台Dc服务器(并置Ca),一台数据库服务器,作为lync 2013的后端存储,一台lync前端服 ...
- A053_项目部署_Linux介绍_CentOS
目录 1.内容介绍 2.为什么需要Linux 3.Linux简介 3.1.什么是Linux? 3.2.Linux的优点 3.3.常见的Linux系统 3.4.小结 4.虚拟机安装 4.1.引入 4.2 ...
- Flink-安装部署及部署模式介绍
Flink支持三大部署模式: 1. Local 本地部署 Flink 可以运行在 Linux.Mac OS X 和 Windows 上.本地模式的安装唯一需要的只是Java 1.7.x或更高版本,本地 ...
- Phoenix(凤凰)安装部署及介绍
Phoenix介绍 phoenix,中文译为"凤凰",很美的名字.Phoenix是由saleforce.com开源的一个项目,后又捐给了Apache基金会.它相当于一个Java中间 ...
- 深度学习算法训练和部署流程介绍--让初学者一篇文章理解算法训练和部署流程
目录 1 什么是深度学习算法 2 算法训练 2.1 训练的原理 2.2 名词解释 3 算法C++部署 3.1 嵌入式终端板子部署 3.3.1 tpu npu推理 3.3.2 cpu推理 3.2 服务 ...
最新文章
- C++ 多线程:时间控制
- timesten 修改最大连接数
- 像鸟一样树上栖息、空中抓物,斯坦福给无人机安上爪子,登Science子刊封面
- 最大输入hdu 2534 规律水题 求任意个a,b的和 不能表示的最大的数
- 一个爬虫的demo,requests,beatuifulsoup使用的
- c语言while计算机编写,计算机等级考试二级C语言(while与dowhile循环)
- 2批量批量查询数据插入数据_你还在利用复制批量插入数据吗?一个oracle命令助你批量插入数据...
- 中获取文件名不要扩展名_如何批量修改文件名,3s时间够不够
- 前端学习(2151):webpack之使用vue
- ❤️《10个超级常用Python方法总结》复制即用丨小白捷径【文末赠书2本】❤️
- ubuntu 14.04 16.04 安装caffe+cuda8.0+pycafee总结
- docker中更新镜像——基于Prometheus
- (组合数学3.1.2.1)POJ 2249 Binomial Showdown(排列组合公式的实现)
- Node.js HTTP
- java+selenium实现web多系统登录
- 只有低价才是中国智能硬件的出路吗?
- 制作png格式透明图片的简易方法
- 转贴:ubuntu Rhythmbox歌曲名乱码问题
- java计算机毕业设计基于安卓Android/微信小程序的婚恋交友系统uni-app
- 元素显示类型-快元素、行内元素、行内快元素、盒子模型以及元素类型相互转换