热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Memcached基础笔记

【笔记】Memcache基础Memcache介绍什么是MemcacheMemcache是一套分布式高速缓存系统,分布式:以在多台操作系统中同时安装Memcache服务,可以达到很好
【笔记】 Memcache 基础

Memcache 介绍

什么是 Memcache

Memcache 是一套分布式高速缓存系统,

  • 分布式:以在多台操作系统中同时安装 Memcache 服务,可以达到很好的集群效果。

  • 高速:Memcache 所有的数据都是维护在内存中的。

Memcache 有什么用?

当应用 访问量 特别大的时候,数据库的访问量也会特别大。Memcache 的出现,可以在运用和数据库之间增加一个缓冲层。那么之前在数据库中读取过的数据在第二次读取的时候,可以直接去访问 Memcache 去读取这些数据,从而减轻数据库的压力。

怎么理解 Memcache?

Memcache 相当于只有一张表的数据库。这张表有二个字段,分别是主键 Key,和数据 Value。Key 用来保证我们查找值得唯一性。

《Memcached 基础笔记》

Memcache 的使用场景

1. 非持久化存储:对数据存储要求不高

如果数据丢失也不会对系统造成太大的影响。当系统断电或者重启的时候,内存会被清空,之前保存在 Memcache 当中的数据也会被清空。所以只能把 Memcache 当成缓存使用,而不能把它当成真正的数据库使用。

2. 分布式存储:不适合单机使用

如果是单机,直接使用数据库查找数据。Memcache 对于内存的消耗很大。
如果使用 Memcache,推荐装在另外一台机器上,单独作为缓存系统。而不是把数据库和 Memcache 装在一台数据库上

3. key/Value 存储:格式简单,不支持 List ,Array 数据类型

Value 存储的是数据的整个部分,不能再把 Value 中的数据进行拆分。

Memcached 安装

Memcached 是一个 C/S 架构的缓存系统,分为服务端的安装和客户端的安装。

Memcached 服务端的安装

编译安装 Libevent Memcache

如果是编译安装可以指定软件的安装路径,安装过程时间长。

依赖包管理安装 apt-get、 yum

apt-get install memcached

or

yum install memcached

Memcached 服务端的启动

/usr/bin/memcached -d -l 127.0.0.1 -p 11211 -m 150 -u root

-d:进程守护
-l:ip地址
-p:端口号
-m:分配的内存大小
-u:启动服务的用户

查看:ps -ef | grep memcached

Memcached 客户端的安装

安装 Libmemcached

采用编译安装的方式

cd libmemcached-1.0.18
./configure --prefix=/usr/lib/libmemcached
meke && make install

为 PHP 安装 memcached 拓展

cd memcached-2.2.0
phpize
./configure --with-php-cOnfig=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/lib/libmemcached --disable-memcached-sasl
make && make install

vim /etc/php/php7.0/php-fpm/php.ini
//添加
extension = memcached.so

PHP 中使用 Memcache

常用类

系统类 :addServer , addServers, getStatus, getVersion

数据类:add, set, delete, flush, replace, increment, get

进阶类:setMulti, deleteMulti, get Multi, getResultCode, getResultMessage

addServer

public bool Memcached::addServer ( string $host , int $port [, int $weight = 0 ] )

host
memcached服务端主机名。如果主机名无效,相关的数据操作的返回代码将被设置为Memcached::RES_HOST_LOOKUP_FAILURE。

port
memcached服务端端口号,通常是11211。

weight
此服务器相对于服务器池中所有服务器的权重。此参数用来控制服务器在操作时被选种的概率。这个仅用于一致性 分布选项,并且这个值通常是由服务端分配的内存来设置的。

set

public bool Memcached::set ( string $key , mixed $value [, int $expiration ] )

key
用于存储值的键名。

value
存储的值。

expiration
到期时间,默认为 0。 更多信息请参见到期时间。

get

public mixed Memcached::get ( string $key [, callback $cache_cb [, float &$cas_token ]] )

key
要检索的元素的key。

cache_cb
通读缓存回掉函数或NULL.

cas_token
检索的元素的CAS标记值。

项目中使用 Memcached

即时生成缓存

适用用 新闻详情 文章详情 这情况

提前生成缓存

网站首页 的情况,定时脚本把缓存生成好

永久缓存

适用于 关于我们 的情况


推荐阅读
  • 部分转载自:http:blog.csdn.netliujiuxiaoshitouarticledetails69920917头文件#include<assert.h& ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Java的集合及其实现类,包括数据结构、抽象类和具体实现类的关系,详细介绍了List接口及其实现类ArrayList的基本操作和特点。文章通过提供相关参考文档和链接,帮助读者更好地理解和使用Java的集合类。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • TPL实现Task.WhileAll扩展方法
    文章翻译整理自NikolaMalovic两篇博文:Task.WhileAllAwaitabletaskprogressreporting当Task.WhenAll遇见 ... [详细]
  • 知识图谱表示概念:知识图谱是由一些相互连接的实体和他们的属性构成的。换句话说,知识图谱是由一条条知识组成,每条知识表示为一个SPO三元组(Subject-Predicate-Obj ... [详细]
  • 关于mysql原理与web系统开发的信息
    本文目录一览:1、在做web开发的时候,MySQL主要功能是什么? ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • 基于词向量计算文本相似度1.测试数据:链接:https:pan.baidu.coms1fXJjcujAmAwTfsuTg2CbWA提取码:f4vx2.实验代码:imp ... [详细]
author-avatar
喵喵妈70929
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有