• 内存缓存数据库 nosql之memcache


    一 大型网站优化

    nosql not only sql 泛指非关系数据库 对应对比关系型数据库
    没有sql语句使用 不需要设计表结构 没有连表操作
    key=>value 键值对方式存储 set[设置]或者get[获取]
    memcached redis 内存缓存数据库 存储数据在内存中 做优化使用
    mongodb 有一部分数据在内存中,其他数据还是存在硬盘的文件中

    1、大型网站

    ①网民角度 页面多的 功能多的 用户多的
    ②技术开发角度 数量多 代码量多
    ③运营角度 营业额 流量 并发量
    seo(搜索引擎优化)的角度
    搜索引擎:百度 360 搜狗 必应 神马(UC浏览器)
    可以借助第三方工具,进行简单查看
    pv值 访问页面数量
    ip值 访问的ip数
    uv值 访客数量
    BAT baidu alibaba Tencent
    在这里插入图片描述
    ip值是千万级别 PV值是亿级别

    2、网站访问流程

    浏览器=>服务器端(web服务器软件 apache)=>php=>数据库(mysql)
    访问流程越多,可能出现问题的几率越大,访问速度也可能会越慢
    当网站业务发展到一定程度,之前的一些架构,可能就不能满足正常使用。
    用户直观体验是打开网页速度特别慢。 平均值7s 会关闭网页

    3、如何优化

    根据网页的访问流程进行优化
    优化点:①缩短访问流程 ②加快某个访问流程的速度
    浏览器=>服务器端(web服务器软件 apache)=>php=>数据库(mysql)
    ①提供web服务器的并发量 并发就是指同时访问的人数 nginx
    ②页面静态化 可以把不太经常发生变动的动态页面制作称为静态页面 缩短访问流程 提高访问效率
    ③内存缓存优化 把需要经常读写的数据,放入内存操作
    缓存,把需要经过一系列操作才能够得到的结果,单独存储起来。之后使用不需要再经过这些操作步骤,直接返回这个存储的结果。这个结果被习惯称为:缓存
    ④优化数据库本身

    二、内存缓存之memcache

    memory cache 内存 缓存
    Memcached 是国外 社区 网站 LiveJournal 的开发团队开发的 高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态 Web 应用的速度、提高可扩展性。
    在这里插入图片描述
    2、安装软件
    windows下安装
    2.1、直接前端运行
    ①把软件及其依赖文件放置到一个运行目录在这里插入图片描述
    在这里插入图片描述

    这种方式使用,当cmd窗口关闭,就会把软件同时关闭,不方便操作使用
    2.2、后台服务运行
    通过建立windows服务的方式,解决软件后台运行的操作
    服务管理操作属于高级权限,需要使超级管理员cmd进行操作
    ①打开管理员cmd
    在这里插入图片描述
    ②查看相关参数帮助,及其安装服务
    在这里插入图片描述
    -p 监听的端口号
    -l 监听的地址 确认哪些ip地址可以连接
    -d start 启动memcahed服务
    -d install 安装memcached服务
    -d uninstall 卸载memcache服务
    在这里插入图片描述
    查看服务并启动memcached
    在这里插入图片描述
    Tip:如果不使用可以选择删除服务
    注意服务要是先关闭的


    在这里插入图片描述
    windows下安装是为了之后能够在windows开发使用
    linux下安装
    ①把软件包上传到linux服务器
    在这里插入图片描述
    通过sftp工具上传即可。
    确定软件上传成功
    在这里插入图片描述
    ②安装libevent
    memcached依赖libevent
    在这里插入图片描述
    先安装libevent

    shell > tar zxvf libevent-2.1.8-stable.tar.gz
    shell > cd libevent-2.1.8-stable
    shell > ./configure --prefix=/usr/local/libevent && make && make install
    

    查看一下libevent是否安装成功
    在这里插入图片描述
    ③安装memcached

    shell > tar zxvf memcached-1.5.1.tar.gz
    shell > cd memcached-1.5.1
    shell >./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
    shell > make && make install
    

    查看安装目录,是否可以启动
    在这里插入图片描述
    在这里插入图片描述

    shell > /usr/local/memcached/bin/memcached -u root -d
    

    在这里插入图片描述
    3、命令行客户端操作
    telnet 之前的远程连接协议 memcache可以通过此协议进行连接操作
    连接一个服务:ip地址+port端口号
    ①windows的telnet客户端
    在这里插入图片描述

    cmd > telnet 192.168.127.112 11211
    

    在这里插入图片描述
    以上问题,可能是防火墙的问题,临时关闭防火墙测试
    在这里插入图片描述
    在这里插入图片描述
    ②简单命令操作使用
    set key名称 是否压缩 是否过期 长度
    现在一般不进行压缩了,压缩和解压缩需要耗费一定时间
    get key名称
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    delete key 删除key
    flush_all 清空所有key
    只要是支持telnet协议的工具都可以通过telnet协议连接memcached

    三、php操作memcache

    1、开启拓展
    获取拓展文件,并安装开启拓展,开启拓展之后php就拥有了一个可以操作memcached的类。
    之后需要使用拓展文件,都到以下网址找:
    http://pecl.php.net/

    memcache的两个php拓展
    memcache
    memcached
    ①根据php的实际参数选择拓展
    php版本号 软件位数 运行方式(ts nts) 运行平台(vc6 vc9 vc11 vc14 vc15)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ②把对应的拓展文件放入php的ext拓展目录
    在这里插入图片描述
    ③开启php.ini配置,重启服务,查看phpinfo
    可以自行添加一句
    在这里插入图片描述
    使用方式可以参考php手册
    手册中搜索memcache 点击范例
    注意在使用php操作memcache:
    ①php的拓展是安装好的
    在这里插入图片描述
    ②memcache的服务器端是启动
    在这里插入图片描述
    2、记录格式
    key=>value的格式
    value的值大小默认1M
    key的要求,简洁明了,能够直观描述出value存储的是什么。
    在这里插入图片描述

    3、有效期

    memcache有两种设置有效期的方式
    ①时间差的方式 多少s之后过期 超过30天的时间差将被认为是一个时间戳
    $mem->set(‘classname’,‘ithm5’,0,时间差);
    ②时间戳的方式 在哪个时间戳点过期
    设置超过30天的时间点,需要通过时间戳的方式设置
    $mem->set(‘classname’,‘ithm5’,0,时间差(time()+时间差));
    在这里插入图片描述
    当key过期之后,返回的值为bool(false)

    4、存储各种数据类型

    数据保存的最低标准要求,要保持数据的完整性和一致性。
    ①标量类型 string(字符串) int(整型) float(浮点型) bool(布尔型)
    不整字浮
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ②复合类型 array(数组) object(对象)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    序列化操作,是为了方便存储复合型数据
    ③特殊类型 resoure(资源) NULL(空)
    在这里插入图片描述
    在这里插入图片描述
    以上所有操作,发现只有资源类型不能够通过memcache操作使用,其他都可以正常使用

    5、其他相关操作方法

    $mem->delete(键 [, int timeout]);(timeout ]); 删除指定键的信息,(指定timeout,则$timeout秒后删除)
    $mem->flush();
    删除全部键
    在这里插入图片描述
    $mem->add(key, value, 是否压缩, 有效期)
    仅添加:Key存在则失败,KEY不存在添加
    $mem->replace(Key, Value, 是否压缩, 有效期)
    仅替换(修改):Key存在则修改,KEY不存在失败。
    以下可以用来做计算器操作
    $mem -> decrement(key,num=1)
    按照num的幅度,对key的值进行减少操作
    $mem -> increment(key,num=1)
    按照num的幅度,对key的值进行增加操作
    在这里插入图片描述

    6、php监控操作memcache的客户端

    以上两个软件,都需要在安装好php的memcache拓展的前提下才可以使用
    1>memcache.php
    在这里插入图片描述
    在这里插入图片描述
    2>memadmin
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    memcache的应用拓展

    1、失效机制(了解)
    ①懒惰机制 key过期之后不会立即删除,等到获取时(get)再去删除信息
    php gc垃圾回收机制 懒惰模式的
    ②LRU机制 Least Recently USE 最近最少使用 get的使用
    默认memcache存储空间为64M 超过此空间,就会删除不太常用key,存储新的key
    -M 禁用LRU机制 如果写满就会返回一个错误
    在这里插入图片描述
    2、session入库共享
    session 会话技术 用来存储用户的状态信息
    默认存储在服务器的目录里的文件中。若果文件夹下的文件多的话,文件读写效率会降低。
    ①登录标识
    ②验证码的存储
    ③短信验证码
    问:有做过session入库操作么?session为什么要进行入库?
    答:有简单使用过。session入库的好处:
    ①session文件比较碎小,入库会提高session的读写效率
    ②为了能够共享session数据 跨站点(单点)登录
    在这里插入图片描述
    一般session共享操作会存储到mysql、memcache、redis
    在这里插入图片描述
    在这里插入图片描述
    php修改配置文件,一般没有权限修改。
    使用临时设置php配置的方式在这里插入图片描述
    在这里插入图片描述
    如果使用框架文件,可以选择把session入库操作,在公共部分编写实现。
    index.php文件里的代码都会被执行。

    3、分布式memcache

    分布式memcache,就是指同时连接使用多个memcache。单台的memcache的并发量和稳定性都没有多台好。为了提高整个memcache的可用性和稳定性。可以同时使用多个memcache。
    使用多个memcache的方式:
    ①多台服务器启动多个memcache实列 性能更加好
    ②一台服务器通过监听不同的端口,启动多个memcache实列
    linux下一台memcache。windows下一台在这里插入图片描述
    在这里插入图片描述
    4、memcache实例
    memcache为了减轻mysql的读到的压力。把mysql的经常读取的数据,缓存到memcache中(内存),提高读的速度,提高页面的返回速度,从而给用户更好的使用体验。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    liunx下一些服务小知识
    hausaufgabe--python 32
    hausaufgabe--python 31
    UnicodeDecodeError: 'gbk' codec can't decode byte 0xbc in position 21: illegal multibyte sequence
    hausaufgabe--python 30
    Running error: 'utf-8' codec can't decode byte 0xb4 in position 0: invalid start byte
    hausaufgabe--python 29- File 2
    Hausaufgabe--Python 28-- File 1
    hausaufgabe--python 27
    hausaufgabe--python 26 -Dict 2
  • 原文地址:https://www.cnblogs.com/liuqun/p/12655223.html
Copyright © 2020-2023  润新知