使用PHP简单操作Memcached

2023-10-26

记得一定要先启动Memcached哦!

[root@localhost ~]# /usr/bin/memcached -d -l 127.0.0.1 -p 11211 -m 150 -u root

使用ps命令查看一下运行状态:

[root@localhost ~]# ps -ef | grep memcached

这里写图片描述
显示运行成功!
接下来就开始使用PHP操作Memcached啦!
1.创建一个Memcached对象

$m = new Memcached();

2.传入一台或多台服务器

//传入一台服务器
$m->addServer('127.0.0.1','11211');
//传入多台服务器
$servers = array(
    array('127.0.0.1','11211'),
    array('127.0.0.2','11211')
);
$m->addServers($servers);
//查看一下运行状态
print_r($m->getStats());

这里写图片描述
因为传入的第二台服务器是不存在的,所以无法获取到正确的信息。
也可以使用getVersion()来直接获取memcached的版本信息。
3.add()方法和get()方法

/*
 * add()
 * key代表加入缓存的key值
 * value代表加入缓存的value值
 * 600代表这条缓存的生效时间为600秒,0代表永久生效
 */
$m->add('key','value',600);
/*
 * get()
 * 通过key值来获取缓存
 */
echo "缓存key值:".$m->get('key);

这里写图片描述
如果我在第一个add()方法下面再添加一个:

$m->add('key','value1',600);

其实这样是不会覆盖掉前面的值得,如果想要覆盖的话可以使用replace()方法
4.replace()方法

$m->add('key','value',600);
$m->replace('key','value11',600);

这样当我们再次get(‘key’)的时候就会获取到value11了。
5.set()方法
set()方法其实就集成了add方法和replace方法,如果set的key值是不存在的,它就相当于add方法,如果set的key值已经存在了,它就相当于replace方法,所以一般的时候set方法才是最常用的方法。

$m->set('key','value',600);

6.delete()方法
删除缓存的方法,使用方法:

/*
 * delete()
 * 传入一条缓存的key
 */
$m->delete('key');

加入我上面添加的缓存失效时间还没有到,执行delete方法后,我们依然无法获取到这条缓存了。
7.flush()方法
直接清除掉所有的缓存!(慎用!!!)
8.increment()方法
加法操作,使用方法:

//设置一条key值为num,value为5,永久生效的缓存
$m->set('num',5,0);
//没刷新一次页面key值为num的缓存value加5
$m->increment('num',5);
//输出这条缓存
echo $m->get('num');

9.decrement()方法
和increment()方法相似,只是变成了减法,具体使用方法和increment()方法一样。


更加优雅的使用Memcached方法
10.setMulti()方法
如果一直按照前面的方法进行set缓存的话,一条一条存入是很慢的,所以Memcached为我们提供给了setMulti()方法,使用方法如下:

//首先定义要存入缓存的数组
$data = array(
    'key1'=>'value1',
    'key2'=>'value2'
);
/*
 * setMulti()
 * 第一个参数代表传入的数组,第二个参数代表生效时间,0代表永久
 */
$m->setMulti($data,0);

11.getMulti()方法
同样获取缓存也可以一次获取多条缓存,使用方法如下:

//定义获取缓存的key值得数组
$get = array('key1','key2');
/*
 * getMulti()
 * 传入需要获取缓存的key值
 */
$result = $m->getMulti($get);
var_dump($result);

这里写图片描述

12.deleteMulti()方法
和getMulti()方法类似,不过是删除缓存,使用方法如下:

$delete = array('key1','key2');
$m->deleteMulti($delete);

这时key值为key1和key2的缓存就被删除掉了。
13.getResultCode()方法
当我执行完一个操作之后可以使用这个方法来查看执行的情况,使用方法如下:

//刚才我执行了deleteMulti()方法,这时候我可以使用getResultCode()方法来查看操作是否成功
echo $m->getResultCode();

当正确执行时会放回0;
更多状态码请点击:更多状态码
14.getResultMessage()方法
和getResultCode()方法的区别是,getResultCode()是返回状态码,getResultMessage()方法是返回具体信息。使用方法如下:

//上面执行deleteMulti()方法
$m->getResultMessage();

这是回返回一个SUCCESS的信息,告诉我们操作成功了,具体的返回信息参考上面的更多状态码链接!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用PHP简单操作Memcached 的相关文章

  • 出现错误 /usr/bin/env: 节点:权限被拒绝

    我已经在我的服务器 Centos 上完成了 ODOO v9 安装 一切都已安装成功 登录页面也可以正常工作 但登录后我收到一个包含以下错误的页面 usr bin env node Permission Denied 我尝试更改权限 但我的问
  • 无法在 Linux 中阻止从命名管道 (FIFO) 读取

    很奇怪 我似乎无法完成这项工作 这是我的架构 我有一个命名管道 它将在永远运行 root读取器进程和多个应用程序编写器进程 读者进程必须是blocking当作家们在nonblocking 因此 这就是我在阅读器进程中所做的 该进程将运行ro
  • python kivy在矩形内添加文本

    如何在矩形内添加文本 我使用下面的代码并在画布内添加了一个标签 希望它能显示在矩形内 import kivy from kivy app import App from kivy uix anchorlayout import Anchor
  • 编辑 CMakeLists.txt 以使用 -fPIC 进行编译

    我正在尝试为名为 libnifalcon 的 NOVINT Falcon 安装驱动程序 我使用 cmake 创建 make 文件 但是当我运行 make 时出现错误 Linking CXX shared library lib libnif
  • Python 套接字库认为套接字未打开时已打开

    我正在使用一些Python 如下所示 HOST 127 0 0 1 PORT 43434 single socket socket socket AF INET socket SOCK STREAM try single bind HOST
  • Ubuntu 18.04:laravel/framework v6.9.0 需要 ext-mbstring * -> 您的系统中缺少请求的 PHP 扩展 mbstring

    在有人将其记下来进行复制之前 我检查了其他页面 但它们没有帮助 我正在尝试在 PHP 7 2 上安装 Laravel 6 的软件包 我也尝试过 PHP 7 4 不幸的是 我收到以下错误 laravel framework v6 9 0 re
  • 从 Linux 内核模块的文件描述符获取文件名/路径?

    在Linux内核模块中 有没有一种方法可以从文件名 路径中获取文件名 路径 unsigned int fd 我知道这个答案 如何从内核模块内的文件描述符获取文件名 https stackoverflow com questions 8250
  • 产生并处理软件中断

    有人可以告诉我如何在Linux下生成软件中断然后用request irq处理它吗 或者也许这是不可能的 您可以使用软中断来代替 您可以通过编辑 include linux interrupt h 来定义您的 sofirq 然后使用函数 ra
  • Linux下对多个文件进行排序

    我有多个 很多 文件 每个都非常大 file0 txt file1 txt file2 txt 我不想将它们合并到一个文件中 因为生成的文件将超过 10 场演出 每个文件中的每一行都包含一个 40 字节的字符串 现在字符串的排序相当好 大约
  • c 中的分叉和管道过程

    所以我有一个项目要做 但我完全被难住了 我花了十个小时却一无所获 我并不是特别想要答案的代码 但是一些伪代码和正确方向的良好提示将有帮助 它分叉多个进程 k 命令行参数 通过管道连接 每个进程都连接到下一个进程 最后一个进程连接到第一个进程
  • 将管道输入转储到文件的简单方法是什么? (Linux)

    我正在寻找一个小 shell 脚本 它可以将任何内容通过管道传输到其中 并将其转储到文件中 用于电子邮件调试目的 有任何想法吗 unix 命令 tee 可以做到这一点 man tee
  • 在 docker windows 上运行 linux 容器

    我在 Windows 10 机器上安装了 Docker for Windows 它要求我启用 HyperV 功能 一切都安装正确并且运行良好 虽然有一件事让我大吃一惊 我实际上能够在 docker windows 上运行 Linux 容器
  • 即使退出命令后,Shell 脚本仍继续运行

    我的shell脚本如下所示 bin bash Make sure only root can run our script EUID ne 0 echo This script must be run as root 1 gt 2 exit
  • CMake:不要为链接中使用的单个库设置 rpath

    我想要做的是配置我的 CMakeLists 文件 以便在构建我的项目时 链接器使用驻留在我的构建树中的共享库 so 的副本来链接可执行文件 但不会在中设置 rpath链接的可执行文件 以便系统必须在加载程序请求时提供该库 具体来说 我想在构
  • 由于参数中有空格,Bash 脚本因未知选项而失败

    我正在尝试运行 aws create lambda 函数 事情的经过如下 eval aws lambda create function function name FUNCTION NAME runtime RUNTIME role RO
  • 健全性检查 SSH 公钥? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我已要求用户提供他们的公共 id rsa pub ssh 密钥 然后将其放入 home theiraccount ssh authorized key
  • 启动jetty服务器时出现NoClassDefFoundError

    我正在尝试在码头服务器中托管我的网络应用程序 spring 我将 war 文件复制到 jetty 服务器中的 webapp 文件夹中 我并不是想嵌入jetty服务器 而是试图在jetty内托管应用程序 如tomcat 我没有安装jetty
  • Bash 变量:区分大小写?

    Bash shell 脚本区分大小写吗 是可变的date与DATE 是的 它区分大小写 就像 UNIX 的其余部分一样 date and DATE是两个不同的变量 makefile and Makefile是两个不同的文件 h and H是
  • /etc/php5/conf.d 文件夹中的 .ini 文件有什么用?

    我知道 ini 文件位于 etc php5 cli与 PHP 的 CLI 使用有关 文件位于 etc php5 fpm是关于 PHP 的 FastCGI FPM 方面 但是位于以下位置的 ini 文件又如何呢 etc php5 conf d
  • 获取当前时间(以小时和分钟为单位)

    我正在尝试从系统收集信息 并且需要获取当前时间 以小时和分钟为单位 目前我有 date awk print 4 输出如下 16 18 54 怎样才能把秒数去掉呢 提供格式字符串 date H M Running man date将给出所有格

随机推荐

  • esp32 作 MCU 端 使用 AT 命令对 esp8266 进行 OTA demo

    AT CUSTOTA total len current packet len offset checksum OK MCU 收到 gt 之后发送 data 当前数据写入到 FLASH 之后 打印 RECV OK 当接收到 total le
  • 解决Python OpenCV 读取IP摄像头(RTSP等)出现error while decoding的问题

    先来看一个简单的读取RTSP的示例程序 import cv2 cap cv2 VideoCapture rtsp admin admin 123 172 0 0 0 ret frame cap read while ret ret fram
  • 测试两个容器是否连通

    进入容器查看ip root f2b5cdfdc5ed private geth ip addr 1 lo
  • 如何打开Fedora 15命令行窗口CLI

    如何打开Fedora 15命令行窗口CLI 在DesktopFolder以外的桌面区域 右击可以看到Konsole 点击该快捷键 即可启动命令行窗口CLI 第一步 右击桌面 第二步 点击Konsole
  • python day03

    一 使用字符串 str helllo len str 用len函数求字符串长度 str upper 把字符串中的小写变成大写 str find 查找子串所在位置 str index 与find类似但找不到子串时会报错 str 2 从字符串中
  • c++ string函数详细返回值及用法!

    通过在网站上的资料搜集 得到了很多关于string类用法的文档 通过对这些资料的整理和加入一些自己的代码 就得出了一份比较完整的关于string类函数有哪些和怎样用的文档了 下面先罗列出string类的函数有哪一些 然后再罗列出函数的原型
  • 学习 Python 之 Pygame 开发魂斗罗(一)

    学习 Python 之 Pygame 开发魂斗罗 一 Pygame 回忆Pygame 1 使用pygame创建窗口 2 设置窗口背景颜色 3 获取窗口中的事件 4 在窗口中展示图片 1 pygame中的直角坐标系 2 展示图片 3 给部分区
  • 在中国,把区块链玩得转的公司有这几家

    时下最火的Fintech 金融科技 非区块链莫属 区块链正在成为国家层面规划的重点领域之一 区块链可以简单理解为一个由所有参与者公共维护的账本 账本信息的公开使得所有参与者可以一起来校验记账的正确性 使得区块链成为所有参与者可以信任的载体
  • ubuntu编译和安装opencv-3.4.13

    1 安装相关软件包 打开ubuntu 安装以下工具 sudo apt install build essential sudo apt install cmake git libgtk2 0 dev pkg config libavcode
  • 芯片验证从零开始系列(一)——芯片验证概论

    芯片验证从零开始系列 一 芯片验证概论 芯片开发流程 动态验证技术 静态验证技术 Emulation和FPGA原型开发 测试平台框架 检查设计 回归测试 声明 未经作者允许 禁止转载 推荐一个IC FPGA新手入门的好网站 快 点 击 进
  • STL源码剖析-Allocator

    一 第一级配置器 顾名思义 Allocator是用来做内存分配的 第一级配置器指的是当需要128bytes以上的内存时直接使用malloc和realloc进行内存分配 代码如下 第一级配置器 2023 04 07 template
  • 解决M1处理器款mac安装PR闪退问题 Premier 2020 Mac(已适配M1芯片,支持最新款M1芯片Mac)可稳定运行

    苹果公司最新发布的基于M1芯片的Mac笔记本电脑应该很多小伙伴都入手了 但是最新的Mac由于采用的是基于ARM架构的核心 对很多基于Intel 英特尔 处理器的老款mac的软件应用兼容不太好 导致很多现有软件安装好后无法运行 或者报错和闪退
  • elasticsearch query related

    public abstract class EsBaseDaoImpl
  • 汽车电子_EMC测试_RE试验整改

    测试设备DUT状态 DUT带壳 未安装导电泡棉 辐射抗扰度试验 辐射抗扰度试验 270MHz频段出现画面卡死 试验暂停未继续 BCI试验 CBCI出现故障 RE试验 30 200M H方向 Frequency MHz MaxPeak dB
  • Maven高级:多环境配置与应用

    Maven高级 Maven高级 分模块开发 Maven高级 依赖管理 Maven高级 聚合和继承 Maven高级 根据需求完成生成 开发 测试环境 并在各个环境间切换运行 一 多环境配置与应用 这一节中 我们会讲两个内容 分别是多环境开发和
  • vue3 antd 表格点击和点击背景色

    页面
  • win7在64位系统下编译openssl

    以前在笔记本上配置过openssl 0 9 8g版本 今天在公司的台式机上配置死活没配置成功 机器的系统是win7 64位 编译openssl 1 0 1e出现各种莫名的错误 最后无意中编译了1 0 0 a版本编译成功了 如果出现ml找不到
  • Selenium-Server-Standalone搭建

    一 概述 先说说背景吧 Selenium是一个优秀的自动化测试框架 可以模拟浏览器的各种操作来代替人工操作 不同的浏览器有 不同的driver来驱动 之前项目中使用的firefoxDriver chromeDriver有一个缺点 就是浏览器
  • VSCode配置MSVC+VSCode使用easyx库,2021.5.13日配置~~

    VSCode配置MSVC VSCode使用easyx库 2021 5 13日配置 想必很多人和我一样 想用vscode编程c easyx库不支持MinGW 一般人都是直接使用vs2019安装easyx库用来GUI编程 那么爱折腾的VSCod
  • 使用PHP简单操作Memcached

    记得一定要先启动Memcached哦 root localhost usr bin memcached d l 127 0 0 1 p 11211 m 150 u root 使用ps命令查看一下运行状态 root localhost ps