1.缓存数据库

缓存:将数据存储在内存中,只有当磁盘胜任不了的时候,才会启用缓存。
缺点:断电数据丢失(双电),用缓存存储数据的目的只是为了应付大并发的业务,至于数据存储及可靠性不要找他了。
 
数据库:mysql(关系型数据库,能够保证数据一致性,保证数据不丢失,但是因为功能太多,导致性能不高)====》数据仓库
缓存数据库: memcache、redis(非关系型数据库,性能极高,但是不保证数据完整)===》业务的数据提供者
 

2. 缓存数据库使用场景

2.1 作为数据库的缓存

当数据库(mysql)承受不了大并发的请求时,可以将数据缓存到内存中(缓存数据库),然后就可以解决。

2.2 会话共享

场景:只要登录了网站,以后访问这个网站任何页面都不要登录了。
为什么服务器知道你是谁?

3. 安装使用memcache

3.1 Memcached简介

Memcached是一款开源的、高性能的纯内存缓存服务软件。Mem是内存的意思,cache是缓存的意思,d是daemon的意思。
 
Memcache是项目的名字,诞生于2003年。Memcache服务分为客户端和服务端两部分,C/S架构。
-客户端软件memcache-2.25.tar.gz
-服务端软件memcached-1.4.13.tar.gz
 
http://www.cnblogs.com/Csir/p/6711305.html

3.2 Memcached原理及优点

在启动Memcached时,根据指定的内存大小参数,会被分配一个内存空间。当我们读取数据库的各类业务数据后,数据会同时放入Memcached缓存中,当下一次用户请求同样的数据,程序直接去Memcached取数据返回给用户。
优点:
①对于用户来讲,用户访问网站更快了,体验更好了。
②对网站来说,数据库压力降低了。只有当内存没有数据时才会去请求数据库。第一次写入的数据也会请求数据库。一般公司没有预热,只有当用户读取过数据库才会放到Memcached中。
③提升了网站的并发访问,减少服务器数量。
 
 
企业案例:当机房断电,如何开启web服务器、memcached缓存服务器、数据库服务器的?
开机顺序:先开启数据库,再开启缓存,然后预热缓存数据库,最后开启web服务器。如果不预热缓存数据库,当开启web后大量的访问流入MySQL,造成的结果是MySQL启动不了,一开就挂。
 
如何正确关闭网站集群服务器?从前端往后端依次关闭。
如何正确开启网站集群服务器?从后端依次往前端开启,缓存服务器要预热。
 

3.4 安装memcached

yum -y install memcached
 

3.5 启动memcached

[root@Memcached ~]# memcached -h
 
-p <num> 指定监听端口 TCP port number to listen on (default: 11211)
-l <addr> 绑定监听的网卡 interface to listen on (default: INADDR_ANY, all addresses) 
-d run as a daemon # 后台运行
-u <username> assume identity of <username> (only when run as root) #指定用户
-m <num> 分配内存大小 max memory to use for items in megabytes (default: 64 MB)
-c <num> max simultaneous connections (default: 1024) #并发访问连接数
-P <file> 指定pid文件存放路径save PID in <file>, only used with -d option
 
/etc/init.d/memcached start
 

3.6 使用

向Memcached添加数据:键值对
key1-->values1
key2-->values2
 
 
 
 # 写入数据
 [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 ~]# printf "delete key008\r\n"|nc 127.0.0.1 11211
 DELETED
 [root@web01 ~]# printf "get key008\r\n"|nc 127.0.0.1 11211
 END
 
 

3.7 服务端memcached监控

 
 printf "stats\r\n"|nc 127.0.0.1 11211
 
①监听port或进程
②可以模拟用户先set后get,比对get内容是不是set的。crond nagios zabbix
③监控命中百分比
④监控响应时间及需要的状态
 
 

4. PHP的memcache客户端

4.1 安装

tar xf 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
 
sed -i.ori '$a extension=memcache.so' /application/php/lib/php.ini
pkill php
/application/php/sbin/php-fpm -t
/application/php/sbin/php-fpm
/application/php/bin/php -m|grep memcache
 

4.2 生成测试页面

 
cat >>/application/nginx/html/blog/mc.php<<'EOF'
<?php
$memcache = new Memcache;
$memcache->connect('172.16.1.41', 11211) or die ("Could not connect");
$memcache->set('key20171017', 'oldboy0326');
$get_value = $memcache->get('key20171017');
echo $get_value;
?>
EOF
 
[root@web01 ~]# curl -H Host:blog.lewen.com 10.0.0.8/mc.php 
oldboy0326
 
[root@web01 conf]# curl 10.0.0.8/mc.php
oldboy0326
 
 
应用 :session共享
需要运维+开发协同
运维:准备环境
开发:用环境
 
sed -i 's#session.save_handler = files#session.save_handler = memcache#;$a session.save_path = "tcp://172.16.1.41:11211"' /application/php/lib/php.ini
 
pkill php
/application/php/sbin/php-fpm -t
/application/php/sbin/php-fpm
 
 
总结:
1.服务端、客户端安装,管理工具的使用
2.session共享配置
3.memcached 作为缓存工作过程
 
 
 
 
 

第34 memcached缓存的更多相关文章

  1. 受教了,memcache比较全面点的介绍,受益匪浅,适用memcached的业务场景有哪些?memcached的cache机制是怎样的?在设计应用时,可以通过Memcached缓存那些内容?

    基本问题 1.memcached的基本设置 1)启动Memcache的服务器端 # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 ...

  2. Python项目使用memcached缓存

    前言许多Web应用都将数据保存到MySQL这样的关系型数据库管理系统中,应用服务器从中读取数据并在浏览器中显示. 但随着数据量的增大.访问的集中,就会出现数据库的负担加重.数据库响应恶化. 网站显示延 ...

  3. 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)

    Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...

  4. .NET跨平台之旅:基于.NET Core改写EnyimMemcached,实现Linux上访问memcached缓存

    注:支持 .NET Core 的 memcached 客户端 EnyimMemcachedCore 的 NuGet 包下载地址:https://www.nuget.org/packages/Enyim ...

  5. redis和memcached缓存

    memcached memcache开源的,高性能,高并发分布式内存缓存系统,天生支持集群 memcached下载地址: http://memcached.org/downloads python实现 ...

  6. 应对Memcached缓存失效,导致高并发查询DB的四种思路(l转)

    当Memcached缓存失效时,容易出现高并发的查询DB,导致DB压力骤然上升. 这篇blog主要是探讨如何在缓存将要失效时,及时地更新缓存,而不是如何在缓存失效之后,如何防止高并发的DB查询. 解决 ...

  7. memcached 缓存服务器

    Memcached 缓存服务器 Memcached 是高性能的分布式内存缓存服务器. 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度.提高可扩展性. 主要特点 ...

  8. Memcached缓存瓶颈分析

    Memcached缓存瓶颈分析 获取Memcached的统计信息 Shell: # echo "stats" | nc 127.0.0.1 11211 PHP: $mc = new ...

  9. 通过spring.net中的spring.caching CacheResult实现memcached缓存

    通过spring.net中的spring.caching CacheResult实现memcached缓存1.SpringMemcachedCache.cs2.APP.config3.Program. ...

随机推荐

  1. 一入爬虫深似海,从此游戏是路人!总结我的python爬虫学习笔记!

    前言 还记得是大学2年级的时候,偶然之间看到了学长在学习python:我就坐在旁边看他敲着代码,感觉很好奇.感觉很酷,从那之后,我就想和学长一样的厉害,就想让学长教我,请他吃了一周的饭,他答应了.从此 ...

  2. spring cloud 学习目录

    1.spring cloud简单示例 2.spring cloud快速入门 3.spring cloud 常用 4.spring cloud 原理 5.spring cloud 源码分析 6.spri ...

  3. 《深入浅出 Java Concurrency》目录

    最近在学习J.U.C,看到一个大神 关于这个系列写的非常精辟,由于想做笔记,故系列转载并记录之. 原文:http://www.blogjava.net/xylz/archive/2010/07/08/ ...

  4. Python中xlrd和xlwt模块使用方法

    本文主要介绍可操作excel文件的xlrd.xlwt模块.其中xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入. 安装xlrd和xlwt模块 xlrd和xlwt模块不是 ...

  5. python3基础: 元组tuple、 列表list、 字典dict、集合set。 迭代器、生成器

    一.元组: tuple Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组 tup2 = (111, 22, 33, ...

  6. 06 python下

    # st='hello kitty {name} is {age}' # # print(st.count('l')) # 统计元素个数 # print(st.capitalize()) # 首字母大 ...

  7. xml实现登录表单验证

    定义: XML(eXtended Markup Language,可扩展标记语言)提供了一套跨平台.跨网络.跨程序的语言的数据描述方式,使用XML可以方便地实现数据交换.系统配置.内容管理等常见功能. ...

  8. java正则表达式 需要转义的字符

    特别字符 说明 $ 匹配输入字符串的结尾位置.如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或‘\r'.要匹配 $ 字符本身,请使用 \$. ( ) 标记一个子 ...

  9. aio,nio ,io 心得

    1.nio 流的过程有几个,连接,可读,读 ,返回 :连接了不一定可读,等待浪费时间,这些时间可以去读其他的连接,selector是管理,管理全部测一下可不可读,只对可读的连接进行读取.同时,nio有 ...

  10. SAP 图形页面

    话不多说,先上炫图. *&---------------------------------------------------------------------* *& Repor ...