广告
返回顶部
首页 > 资讯 > 数据库 >内存缓存软件 memcached
  • 125
分享到

内存缓存软件 memcached

2024-04-02 19:04:59 125人浏览 泡泡鱼
摘要

第1章 memcached内存缓存软件 (内存比磁盘快)分为服务端和客户端 服务端 memcached客户端memcache 诞生的原因。2003年诞生了memcachedWEB1.0 2005以

第1章 memcached

内存缓存软件 (内存比磁盘快)

分为服务端和客户端

服务端 memcached

客户端memcache

 

诞生的原因。

2003年诞生了memcached

WEB1.0 2005以前    企业提供内容为主。

web2.0 2005-2012    企业只提供平台,用户参与上传和下载内容。

目标:

解决高并发访问的问题,减轻传统数据库Mysql的压力。

不关注数据可靠性,只关心高并发读写。

 

差异化发展。

 

企业应用场景:

1、数据库前端的缓存

   读数据: 开发程序从逻辑上,首先访问memcached。如果memcached没有所需要的数据在访问mysql

   写数据: 如果在写数据库的同时,把数据库写入到memcached。或者写入mysql的同时,由mysyl复制到memcached。

linux运维角色,搭建memcached服务,提供服务(使用的信息问开发)

内存缓存软件 memcached

2、集群后端的共享会话服务session

session门票。如果在网站内有了这个门票,就可以浏览任意界面。

解决共享会话的方案:

1)Nginx的调度算法IP_hash(缺点:导致负载不均衡)

2)通过memcached做会话共享。

3)cookies(放在用户浏览器端)优点:可以大并发。缺点:容易篡改,不安全

 

 

 

1.1搭建memcached服务端

搭建memcached服务

1、libevent(epoll模型,libevent作为事件通知机制)

yum install libevent-devel -y

rpm -qa libevent-devel

2、下载memcached

yum install memcached -y

rpm -qa memcached

3、启动服务并检查

[root@db01 ~]# memcached -m 16m -c 2048 -uroot -p 11211 -d

-m 指定内存 -c 多少访问连接  -u 指定用户 -p 指定端口号 -d 以守护进程的方式

[root@db01 ~]# netstat -lntp|grep memcache

tcp       0      0 0.0.0.0:11211        0.0.0.0:*       LISTEN      4026/memcached     

tcp       0      0 :::11211             :::*            LISTEN      4026/memcached 

 

MySQL数据库管理

Memcached管理

MySQL的insert语句

Memcached的set命令

MySQL的select语句

Memcached的get命令

MySQL的delete语句

Memcached的delete命令

 

操作Memcached的相关命令的语法

以下为操作Memcached的相关命令基本语法:

set                key     0       0         0

<command name>  <key> <flags> <exptime>  <bytes>\r\n

<datablock>\r\n

<status>\r\n

 

命令

说明

command name

set无论如何都进行写入数据,会覆盖老数据

add只有对应数据不存在时才添加数据

repalce只有数据存在时进行替换数据

append往后追加:append<key>datablock<status>?

prepend往前追加:prepend<key>datablock<status>

cas按版本号更改

key

普通字符串,要求小于250个字符,不包含空格和控制字符

flags

客户端用来标识数据格式的数值,如JSON、xml、压缩等

exptime

存活时间s,0为永远,小于30天,60*60*24*30为秒数

大于30天为unixtime

bytes

byte字节数,不包含\r\n,根据长度截取存/取的字符串,可以是0,即存空串

datablock

文本行,以\r\n结尾,当然可以包含\r或\n

status

STORED/NOT_FOUND

 

下载telnet 和 nc

yum install telnet nc -y

 

telnet方式

存进去 拿出来 删除掉

[root@web03 ~]# telnet 127.0.0.1 11211

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

set k1 0 0 6       

oldboy

STORED

get k1

VALUE k1 0 6

oldboy

END

delete k1

DELETED

 

用nc方式

[root@web03 ~]# printf "set key008 0 06\r\noldboy\r\n"|nc 127.0.0.1 11211

STORED

用printf方式查看

printf "get key008\r\n"|nc127.0.0.1 11211

删除

printf "delete key008\r\n"|nc127.0.0.1 11211

三种 写入 读取删除

[root@web03 ~]#printf "set key008 0 0 6\r\noldboy\r\n"|nc 127.0.0.1 11211

STORED

[root@web03 ~]# printf"get key008\r\n"|nc 127.0.0.1 11211

VALUE key008 0 6

oldboy

END

[root@web03 ~]# printf"delete key008\r\n"|nc 127.0.0.1 11211

DELETED

 

memcached查看帮助

memcached -h

 

Memcached启动命令相关参数

命令参数

说明

进程与连接设置:

-d

以守护进程(daemon)方式运行服务

-u

指定运行Memcached的用户,如果当前用户为root,需要使用此参数指定用户

-l

指定Memcached进程监听的服务器IP地址,可以不设置此参数

-p(小写)

指定Memcached服务监听TCP端口号,默认为11211

-P(大写)

设置保存Memcached的pod文件($$),保存PID到指定文件

内存相关设置

-m

指定Memcached服务可以缓存数据的最大内存,默认为64MB

-M

Memcached服务内存不够时禁止LRU,如果内存满了会报错

-f

chunk size增长因予,默认1.25

-L

启用大内存页,可以降低内存浪费,改进性能

并发连接设置

-c

最大的并发连接数,默认是1024

-t

线程数,默认4.由于Memcached采用的是NIO,所以太多线程用处不大

-R

每个event最大请求数,默认20

-C

禁用CAS(可以禁止版本计数,减少开销)

调试参数

-v

打印较少的errors/warnings

-vv

打印非常多调试信息和错误输出到控制台,也打印客户端命令及响应

-vvv

打印极多的调试信息和错误输出,也打印内部状态转变

 

 

 

1.2memcached客户端

PHP所在服务器上安装memcached客户端,程序才能访问memcached

 

把memcache-2.2.5.tgz数据包拉到/home/oldboy/tools/

 

然后进行编译安装

tar zxf 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

make

make install

cd ../

 

 

[root@web02 tools]# ll/application/php-5.5.32/lib/php/extensions/no-debug-non-zts-20121212/

total 256

-rwxr-xr-x 1 root root 258064 Jun  9 14:44 memcache.so

 

 

 

echo '<?php phpinfo(); ?>' >/application/nginx/html/blog/a.php

[root@web02 php]# cat /application/nginx/html/blog/a.php

<?php

phpinfo();

?>

通过页面:blog.etiantian.org/a.php检查mc的配置情况。

 

配置:

vim /application/php/lib/php.ini

extension_dir ="/application/php-5.5.32/lib/php/extensions/no-debug-non-zts-20121212/"

extension = memcache.so

重启Php

pkill php-fpm

/application/php/sbin/php-fpm

 

再次通过页面:blog.etiantian.org/a.php检查mc的配置情况。ctrl + F

搜索memcache页面内容,如果有结果,表示成功。

 

 

管理memcachedweb端

把memadmin-1.0.12.tar.gz包拉进 /home/oldboy/tools/

tar zxvfC       memadmin-1.0.12.tar.gz  /application/nginx/html/blog/

进行指定解压

 

Memcached状态信息详细说明

参数

描述

实际作用

pid

28123

memcache服务进程ID

查看服务信息

uptime

20063728

服务已运行秒数

time

1440577412

服务当前Unix时间戳

version

1.4.4

Memcache版本

libevent

1.4.13-stable

libevent版本

pointer_size

64

操作系统指针大小

rusage_user

645314.961214

进程累计用户时间

分析占用CPU的情况

rusage_system

1134305.468357

进程累计系统时间

cuur_connections

1361

当前连接数

分析连接数情况

total_connections

18299935

Memcached运行以来连接总数

connection_structures

12455

Memcached分配的连接结构数量


reserved_fds

20

内部使用的FD数


cmd_get

60424570825

get命令请求次数

分析命令率情况

get_hits

58105159197

get命令命中次数

get_misses

2319411628

get命令未命中次数

curr_items

24628253

当前的对象数目

分析对象数LRU频率

total_items

854196259

当前存储占用的字节数

evictions

7509

LRU释放的对象数目

 

 

1.2.1Slab内存管理机制

现在的Memcached是利用Slab Allocation机制来分配和管理内存的,过程如下:

1)提前将大内存分配大小为1MB的若干个slab,然后针对每个slab再进行小对象填充,这个小对象称为chunk,避免大量重复的初始化和清理,减轻了内存管理器的负担。

Slab Allocation 内存分配的原理是按照预先规定的大小,将分配给Memcached服务的内存预先分割成特定长度的内存块(chunk),再把尺寸相同的内存块(chunk)分成组(chunks slab class),这些内存块不会释放,可以重复利用。

2)新增数据对象存储说明。

Memcached服务器中保存着slab内空闲chunk的列表,它会根据该列表选择chunk,然后将数据缓存于其中。当有数据存入时,Memcached根据接收到的数据大小,选择最合适数据大小的slab,分配一个能存下这个数据的最小内存块(chunk)。例如:有100字节的一个数据,就会被分配存入下面的112字节的一个内存块中,这样会有12字节被浪费掉,这部分空间就不能被使用了,这也是SlabAllocator机制的一个缺点。

内存缓存软件 memcached

1.2.2数据存储机制

需要被缓存的数据以key/value键值对的形式保存在服务器端

 

 内存缓存软件 memcached

 

 

 

 

 

 

 

 

 


您可能感兴趣的文档:

--结束END--

本文标题: 内存缓存软件 memcached

本文链接: https://www.lsjlt.com/news/35553.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 内存缓存软件 memcached
    第1章 memcached内存缓存软件 (内存比磁盘快)分为服务端和客户端 服务端 memcached客户端memcache 诞生的原因。2003年诞生了memcachedweb1.0 2005以...
    99+
    2022-10-18
  • phpcms缓存使用总结(memcached、eaccelerator、shm)
    a.模板编译缓存参考文件include/global.func.php及include/template.func.php模板编译缓存的原理其实很简单,如果模板是第一次编译,则直接编译它,如果不是第一次编译,则比较模板文...
    99+
    2022-06-12
    phpcms 缓存
  • Android内存优化之内存缓存
      什么是缓存?   缓存技术原理是把用户访问的所有对象看作一个全集,经过算法标记哪些是用户经常访问的对象,把这些对象放到一个集合里,这个集合是全集一个子集,下一次...
    99+
    2022-06-06
    优化 缓存 Android
  • 使用PHP和Memcached进行缓存管理
    随着网络应用的不断增加和数据量的不断膨胀,数据的读写效率成为影响应用性能的重要因素之一。而缓存技术的应用则可以很好地解决这个问题。在PHP应用中,Memcached是最常用的缓存服务器。Memcached是一个高性能的分布式内存对象缓存系统...
    99+
    2023-05-23
    PHP memcached 缓存管理
  • golang实现内存缓存
    随着互联网技术的不断发展,需求和数据量也在不断地增加。对于一些数据量较大的应用来说,如何高效地读写数据成为了一个重要的问题。内存缓存技术应运而生,成为提高数据读写效率和应用性能的关键技术。本文将讨论如何使用golang实现内存缓存。什么是内...
    99+
    2023-05-14
  • Ubuntu释放缓存/内存和显存
    前言 深度学习训练模型时,总是出现显存和内存爆满的现象,导致训练中断,这里总结几个好用的方法: 代码添加指令手动释放内存/缓存自动定时释放内存/缓存代码释放显存(torch) 1. 代码添加指令 代码中存在一些临时变量或者缓存,使用del...
    99+
    2023-08-20
    ubuntu 缓存 linux 服务器
  • PHP中Memcached缓存技术的实现和原理
    Memcached是一种高速缓存系统,被广泛应用于Web服务器和其他需要缓存数据的场合。在PHP开发中,Memcached常用于提升应用程序的性能和优化数据库访问。本文将介绍Memcached缓存技术的实现和原理。一、Memcached的基...
    99+
    2023-05-16
    PHP memcached 缓存技术
  • Centos7怎么安装memcached集中式缓存系统
    这篇“Centos7怎么安装memcached集中式缓存系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Centos7怎么...
    99+
    2023-06-27
  • 利用Memcached缓存技术优化PHP中大量的数据存储
    随着互联网应用的快速发展,数据量的增加成为了 PHP 开发工程师必须面对的一个问题。尤其是在存储大量数据时,传统的数据存储方式往往会导致性能瓶颈。因此,利用缓存技术优化数据存储,成为了一种必备的方案。而 Memcached 缓存技术是目前最...
    99+
    2023-05-15
    memcached 缓存技术 PHP 数据存储
  • mysql 5.7 innodb memcached plugin 支持内存数据库
    http://dev.mysql.com/doc/refman/5.7/en/innodb-memcached.html一、测试环境mysql:5.7.15centos:6.6_x86_64二、安装部署1....
    99+
    2022-10-18
  • Java缓存文件与内存:如何平衡存储和速度?
    Java是一种广泛使用的编程语言,其强大的功能和灵活性使得它成为了许多企业和开发者的首选。然而,在处理大量数据和频繁的I/O操作时,Java程序的性能可能会受到影响。为了解决这个问题,开发者通常会使用缓存技术来提高程序的性能。在这篇文章中,...
    99+
    2023-10-06
    缓存 文件 关键字
  • PHP中为什么需要使用Memcached缓存技术
    在现代 Web 应用中,数据的高效访问对于应用的性能至关重要。PHP 作为一种流行的 Web 开发语言,其在应用中的数据读写性能也成为了十分关注的话题。为了提升 PHP 应用的性能,很多开发者就开始使用各种各样的缓存技术,其中最为常用的就是...
    99+
    2023-05-15
    PHP memcached 缓存技术
  • Linux下如何安装集中式缓存系统Memcached
    这篇文章主要为大家展示了“Linux下如何安装集中式缓存系统Memcached”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下如何安装集中式缓存系统Memcached”这篇文章吧。Me...
    99+
    2023-06-27
  • Memcached缓存技术对于PHP中的文件系统访问的优化
    Memcached是一种基于内存的高速缓存系统,常被用于加速网站及应用程序的访问速度。在PHP中,文件系统访问是一个常见的IO操作,而通过使用Memcached缓存技术,可以显著优化这一操作,提升应用程序的性能。一、什么是Memcached...
    99+
    2023-05-19
    memcached 缓存技术 PHP 文件系统访问
  • 如何使用内存虚拟盘软件xmsdsk
    这篇文章主要讲解了“如何使用内存虚拟盘软件xmsdsk”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用内存虚拟盘软件xmsdsk”吧!随着时代的发展,电脑的内存越来越大,从原来的1M、...
    99+
    2023-06-09
  • Android图片三级缓存策略(网络、本地、内存缓存)
    一、简介 现在的Android应用程序中,不可避免的都会使用到图片,如果每次加载图片的时候都要从网络重新拉取,这样不但很耗费用户的流量,而且图片加载的也会很慢,用户体验很不好。...
    99+
    2022-06-06
    三级缓存 缓存 Android
  • ASP.NET Core MVC缓存Tag Helpers到内存
    简介 缓存可以大大提高应用程序加载时间和响应速度。我们可以使用缓存Tag Helpers缓存不会频繁更改的HTML内容。 在上一篇文章中,我们谈到了Tag Helpers,演示Tag...
    99+
    2022-11-13
  • Spring内存缓存Caffeine如何使用
    这篇文章主要讲解了“Spring内存缓存Caffeine如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring内存缓存Caffeine如何使用”吧!项目配置依赖首先搭建一个标准的...
    99+
    2023-07-05
  • Notepad++如何找回自动保存缓存内容的文件
    这篇文章主要介绍了Notepad++如何找回自动保存缓存内容的文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。场景:在使用Notepad++的时候,有一个非常方便的自动保存...
    99+
    2023-06-07
  • Redis中缓存过期、内存被缓存占用要如何处理
    这篇文章主要讲解了“Redis中缓存过期、内存被缓存占用要如何处理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis中缓存过期、内存被缓存占用要如何处...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作