mysql优化
  读   写  haproxy
  读 比写多

 a 写
 b 读
 b 读
 b 读


web      memcache               
         mysql(a)--------mysql(b)

web <---->memcache
 |   yes [返回数据]
 |            no或者过期
mysql 1.写入memcache   2.给用户一份


mysql写  写两份  [mysql memcache各写一份]


memcache   一个分布式的高速缓存系统  数据被缓存在内存  可以缓存[各种格式数据  图片 音视频 文件 以及 数据库检索的结果]从内存读出数据 速度比硬盘快

memcache是一个C/S结构   server----memcached    client----memcache

 

          web+memcache 250        
          memcached 251 -----------mysql252

 

memcache   缓存系统     优化mysql  为mysql作缓存
缓存mysql的查询结果       优化mysql  I/O

~~~~~~~~~~~~~~~~~~~~~~

user        web                  mysql


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
user                    web         memcache
                        mysql

1) memcache的优先级大于mysql
   web向数据库取数据的时候   优先去找memcache
       y    拿数据
                 n    web去找mysql
                Y   去写入memcache一份     web继续处理请求
2) 为什么数据放到memcache会优化mysql  I/O
    内存级的缓存  可以将数据全部缓存在内存     当然也可以设置缓存为硬盘[如果要缓存的数据量不是非常大  不建义]
    缓存断电后 所有缓存数据全部丢失

3)如何存储缓存数据的
      将mysql的查询结果  以key = value的形式写入内存
       每条数据都有自己的有效期    在有效期内  我们称之为热点数据   过期数据叫脏数据
4) memcache 内存缓存大小
     32bit      2G
     64bit      没限制
5) 数据缓存周期
   自定义   默认情况下设为永久不过期的数据  默认也会在30天后过期
   key = value
   key 不得超过250 Byte [默认 128]
   value 默认存储大小1M  超过1M不存储 [默认]

memcache 是一个C/S结构    server端    memcached      client   memcache

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
##memcached install
#libevent_install
./configure  --prefix=/usr/local/libevent
make
make install

#memcached_install
cd memcached-1.4.22
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/
make
make install


##memcached start
/usr/local/memcached//bin/memcached -u root -p 11211 -l 192.168.18.251 -P /var/run/memcached.pid -m 128m -c 2048 -d

##验证
连接memecached 读写数据
memcached是如何保存数据的   key flags exptime byte values

#如何连接  telnet
telnet IP 11211

set get gets replace  add  cas appaend prepend delete stats        stats items


# -m 设置内存缓存大小
-m   80%   根据数据量来设定
10m  脏数据   热点数据

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
安装客户端 memcache
phpize
./configure --enable-memcache --with-php-config=/usr/bin/php-config
make
make install

vim /etc/php.ini
extension=memcache.so     ls /usr/lib64/php/modules 能看到memcache.so    命令php -m 查看php支持那些功能

 

###########
测试
1) 查看phpinfo.php  是否有memcache选项
2) memcache 和 memcached的连接   写一个php页面
测试页面   test_mem.php

$memcache = memcache_connect('192.168.122.183', 11211);

$memcache->set( 'test' , 'hello world!' , 0 , 12 );
$val =  $memcache->get( 'test' );
echo $val;
?>

0 标志      12 过期时间
#################
上线一个实例

 

 

 

session   cookie
cookie  and cookies 一个东西
某些网站为了辨别用户的身份、进行会话跟踪而存储在用户本地终端上的数据[加密过的]
cookie 服务器保存在客户本地的一个文件  最大不能超过3K  客户端和服务器通信需要的变量

example  51cto.com  下载多个软件  ---->会员才可以下载
1) 打开51cto 
2)  会员登录   -----> 当前页显示是否登录成功
3)去软件下载页面去下软件    你是什么状态  登录还是离线    http无状态协议吗  为什么是登录状态
     
       1)登录的时候  服务器和客户端建立会话关系   服务生成cookie 并且存在客户端本地[将cookie发送给 user-agert 浏览器    浏览器将该cookie的key/value保存在某个目录下的文本文件内]
     cookie 保存的是当前会话需要的变量[username   password......]
      2)在该会话内当你在发起向51cto的连接的时候  你的浏览器在发起连接的时候会携带自己的cookie去×××器[51cto].
      3)会话时间  默认情况下   当关闭了浏览器的时候会话就过期了         超时         会话时间可以更改 [30天内登录不需要输入帐号密码]


1)当客户端去访问服务器的时候会携带自己的COOKIE文件   ck.php
2)服务器检查cookie,提取所需要的变量     huishou.php


缺点   不安全    [要求安全的网站都不使用cookie]

 


session 保存在服务器上的会话文件
服务器和客户端浏览器的一次会话过程   保存了相关变量   建立session 的同时会建立相应的key
服务端将session key发送到cookie
客户端携带cookie去访问服务器   服务器能从cookie中找到session的key  从对应的session中查找需要的变量,该cookie是为服务器自动生成,他的maxage一般为-1  表示仅对当前浏览器有效,并且各浏览器之间不能共享,同一客户端如果使用两个浏览器访问服务器时,会产生两个session,


什么时候会共用session   子窗口会共享父窗口的session
浏览器窗口内的链接,脚本等打开的新窗口,这类子窗口会共享父窗口cookie,因此是共享一个session.

大量session造成服务器I/O负载
将session放到memcache 

vim /etc/php.ini
session.save_handler = memcache
session.save_path = "tcp://192.168.18.251:11211"