php 判断memcache key/value是否存在方法

2023-05-16

1.memcache简介

memcache是一套分布式高速缓存软件,用于数据缓存及分布式网站session存储等。使用key=>value方式存储,支持数据压缩存储处理及数据过期处理。
value只支持string,如需要其他格式,可以先转换为json再保存。

使用方法:

<?php
$m = new Memcache;
$m->connect('localhost', 11211);

$m->set('foo', 100); // 保存数据
echo $m->get('foo'); // 读取数据
?>

用memcache作为数据缓存,步骤一般是
1.判断memcache是否有数据,如果有则直接返回,否则从数据源中获取数据。
2.从数据源获取数据后,写入memcache作为缓存,留待下次请求时使用。

2.判断memcache数据是否存在

判断memcache是否有数据,一般是通过get方法获取数据,根据数据是否false来判断。

<?php
$m = new Memcache;
$m->connect('localhost', 11211);

$m->set('foo', 100);
if($m->get('foo')){
    echo 'foo 存在<br>';
}else{
    echo 'foo 不存在<br>';
}

$m->delete('foo');
if($m->get('foo')){
    echo 'foo 存在<br>';
}else{
    echo 'foo 不存在<br>';
}
?>

但这样判断不够严谨,如果value是false或null时则会被判断为不存在,我们可以通过判断key是否存在来判断数据是否存在。

3.判断memcache key是否存在

<?php
$m = new Memcache;
$m->connect('localhost', 11211);

// 正常值判断
echo '正常值判断:';
$m->set('foo', 100);
if(check_key_exists($m, 'foo')){
    echo 'foo key存在<br>';
}else{
    echo 'foo key不存在<br>';
}

// false判断
echo 'false判断:';
$m->set('foo', false);
if(check_key_exists($m, 'foo')){
    echo 'foo key存在<br>';
}else{
    echo 'foo key不存在<br>';
}

// null判断
echo 'null判断:';
$m->set('foo', null);
if(check_key_exists($m, 'foo')){
    echo 'foo key存在<br>';
}else{
    echo 'foo key不存在<br>';
}

// 数据过期后判断,1秒后过期
echo '过期判断:';
$m->set('foo', 100, 0, 1);
sleep(2);
if(check_key_exists($m, 'foo')){
    echo 'foo key存在<br>';
}else{
    echo 'foo key不存在<br>';
}

// delete后判断
echo 'delete后判断:';
$m->set('foo', 100);
$m->delete('foo');
if(check_key_exists($m, 'foo')){
    echo 'foo key存在<br>';
}else{
    echo 'foo key不存在<br>';
}

/**
 * @param Obj      $m    memcache obj
 * @param String   $name key name
 * @return Boolean
 */
function check_key_exists($m, $name){
    $data = $m->get($name);
    return $data!==false;
}
?>

输出:
正常值判断:foo key存在
false判断:foo key存在
null判断:foo key存在
过期判断:foo key不存在
delete后判断:foo key不存在


只有key被delete已经过期才判断为不存在,其他情况即使value为null/false,都是存在的。

注意:如果value的值是false,使用memcache get方法获取到的是“”空字符串,因为memcache只能保存string数据,所以false在保存时被转为空字符串了。

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

php 判断memcache key/value是否存在方法 的相关文章

  • PHPunit - 错误

    当 PHPunit 框架不希望发生的错误发生时 测试会停止 PHP 会抛出错误 但 PHPunit 不会记录这是一个错误 我如何确保 PHPunit 将其记录为错误 免责声明 我是 PHPUnit 的新手 我也试图弄清楚 发生错误时会发生什
  • PHP 文件上传帮助

    div align center div 这是我的代码
  • PHPExcel下载文件

    我想下载使用 PHPExcel 生成的 Excel 文件 我按照以下代码PHPExcel 强制下载问题 https stackoverflow com questions 26265108 phpexcel force download i
  • 压缩 zend Framework 2 的 html 输出

    我目前正在 PHP 5 4 4 上使用 Zend Framework 2 beta 开发个人 web 应用程序以用于自学目的 我想知道是否可以在 html 输出发送到浏览器之前拦截它 以便通过删除所有不必要的空格来缩小它 我怎样才能在ZF2
  • Laravel 5.1 中的VerifyCsrfToken.php 第 53 行:(Firefox 浏览器)中出现 TokenMismatchException?

    我试图找出为什么会出现这个错误 即使它是全新安装的 我在我的项目中遇到了这个错误 所以我用谷歌搜索 没有一个答案对我有用 所以我创建了新项目并复制了所有控制器 视图和模型 几个小时后工作正常 再次出现令牌不匹配错误 为什么在 laravel
  • Magento - 将特定父类别的子类别列为链接

    我是 php 的初学者 并且一直试图将一个父类别的子类别作为链接调用 我得到了这个 它调出了 getName 但 getUrl 根本没有返回任何 URL 输出代码只是 li a href name of sub a li
  • php表格:每行显示3个单元格[重复]

    这个问题在这里已经有答案了 我看这里 数组放入每行 5 个单元格的表格中 https stackoverflow com questions 9099568 array into a table with 5 cells in each r
  • 在 PHP 中将 CSV 写入不带括号的文件

    是否有本机函数或实体类 库用于将数组写入 CSV 文件中的一行而无需封装 fputcsv将默认为 如果没有为封装参数传入任何内容 谷歌让我失望了 返回一大堆有关的页面的结果 fputcsv PEAR 的库做的事情或多或少与fputcsv 工
  • cURL 错误 77:设置证书验证位置时出错:CAfile

    我正在使用 Firebase php SDKlink https firebase php readthedocs io en latest index html并在 Windows 10 上的 XAMPP 服务器上使用 laravel 最
  • 如何在 Zend Framework 中存储 cron 作业的脚本?

    因为 ZF 的所有 URL 都依赖于 mod 重写 所以我并不清楚应该在哪里存储用于 cron 作业的本地脚本 有人有什么建议 或者有 正式接受 的方式吗 我用模块化目录结构 http framework zend com manual e
  • 覆盖供应商自动加载编辑器

    有没有办法让您创建的自动加载文件在调用供应商自动加载之前运行 我们似乎遇到了 SimpleSAML 的自动加载覆盖我们创建的自动加载文件之一的问题 我是 Composer 的新手 似乎无法在网上找到任何解决方案 我尝试将我们的自动加载文件包
  • 如何从导出的 csv 文件中删除双引号

    我正在使用 Laravel 5 8 并且添加了 Maatwebsite 包 用于从数据库表导出 CSV 文件 这是我导出的类 class ConfirmedExport implements FromCollection WithHeadi
  • php 中的简单授权/登录功能

    我希望第一次实现用户登录到我的网站 我很高兴构建自己的解决方案 或者实现一些开源的东西 但是到目前为止 在我的搜索中没有任何包是明显的选择 同样 我完全意识到 作为一名中级 php 程序员 如果我推出自己的解决方案 并真正敞开大门 我很可能
  • Composer 用于下载私有 GitHub 存储库

    我无法使用 Composer 下载 github 私人存储库 php composer phar update 我收到以下错误 The https api github com repos company private1 https ap
  • PHP 中的 NOW() 函数

    是否有 PHP 函数以与 MySQL 函数相同的格式返回日期和时间NOW 我知道如何使用date 但我想问是否有专门用于此的功能 例如 返回 2009 12 01 00 00 00 您可以使用date https www php net m
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • 如何在php中使用preg添加html属性

    我正在寻找在 php 中编写一个脚本来扫描 html 文档并根据它找到的内容向元素添加新标记 更具体地说 我是扫描文档并为每个元素搜索CSS标记 float right left 如果找到它 它会添加align right left 基于它
  • 如何在 codeigniter 查询中使用 FIND_IN_SET?

    array array classesID gt 6 this gt db gt select gt from this gt table name gt where array gt order by this gt order by q
  • 检查文件权限

    我怎样才能检查file permissions 无需通过运行操作系统特定命令passthru or exec Use 文件权限 http php net fileperms功能 clearstatcache echo substr spri
  • 在 PHP 中模拟 jQuery.ajax 请求

    我必须在 PHP 中模拟 AJAX 请求 就像在 jQuery 中一样 我当前的代码在这里 原始 AJAX 调用 不得修改 ajax type POST url someFile php data data success function

随机推荐

  • php 获取Youtube某个User所有Video信息

    php 获取Youtube某个User所有Video信息 因工作需要 xff0c 获取Youtube上某个用户的所有视频信息 xff0c 写了这个类 xff0c 分享给大家 YTUserVideo class php lt php 获取Yo
  • php 字符编码转换类,支持ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom 互相转换

    php 字符编码转换类 xff0c 支持ANSI Unicode Unicode big endian UTF 8 UTF 8 43 Bom 互相转换 四种常见文本文件编码方式 ANSI编码 xff1a 无文件头 文件编码开头标志性字节 A
  • linux ps 查看进程命令

    linux 中ps 命令是Process Status 的缩写 ps命令可以列出系统中当前运行的进程 xff0c 所列出的进程是执行ps命令这个时刻正在运行的进程 如果要动态显示进程信息 xff0c 需要使用top命令 通过ps命令 xff
  • linux 使用rename命令批量重命名文件

    linux 使用rename命令批量重命名文件 命令格式 xff1a Usage rename v n f perlexpr filenames 参数说明 xff1a v 显示文件重命名的细节 n 不执行重命名 xff0c 但会模拟执行重命
  • mysql workbench中PK,NN,UQ,BIN,UN,ZF,AI字段类型标识说明

    使用mysql workbench建表时 xff0c 字段中有PK NN UQ BIN UN ZF AI几个基本字段类型标识 它们分别代表的意思是 xff1a PK xff1a primary key 主键 NN xff1a not nul
  • 电脑连得上Wifi打开网页速度慢,但使用热点却没问题怎么解决

    这是我个人的一个问题解决帖 xff0c 当时电脑出来这个问题用了很多方法都没有解决 xff0c 而宽带和网卡也都是没有任何问题 xff0c 最后是学校里一个大佬跟我分享的一个解决方法 用ipconfig release 和 ipconfig
  • 系统中有两个version的PHP存在,导致phpunit测试出现问题的解决方法

    今天要搭建本机的LAMP 开发环境 xff0c 因系统自带的php版本是5 5 14 xff0c 但开发要使用的是php 5 6 以上 xff0c 因此安装了php 5 6 7 这样导致了系统中有两个版本的php存在 正常开发是没有问题的
  • eclipse 更改编辑器风格方法

    eclipse 更改编辑器风格方法 1 打开eclipse 选择菜单Help gt Install New Software 2 在Work with 中 xff0c 按Add xff0c 然后在Location中填入 xff1a http
  • mongodb 地理位置搜寻

    LBS xff0c 存储每个地点的经纬度坐标 xff0c 搜寻附近的地点 xff0c 建立地理位置索引可提高查询效率 mongodb地理位置索引 xff0c 2d 和2dsphere xff0c 对应平面和球面 1 创建lbs集合存放地点坐
  • php 版本处理类

    php 版本处理类 例如记录app版本 xff0c 或某些版本数据 xff0c 如果使用1 0 0这种版本格式记录入库 xff0c 在需要筛选查询时会比较麻烦 而把版本字符串转为数字保存 xff0c 可以方便版本间的比较和筛选 例如 xff
  • PDO 查询mysql返回字段整型变为String型解决方法

    PDO 查询mysql返回字段整型变为String型解决方法 使用PDO查询mysql数据库时 xff0c 执行prepare execute后 xff0c 返回的字段数据全都变为字符型 例如id在数据库中是Int的 xff0c 查询后返回
  • nginx access.log 忽略favicon.ico访问记录的方法

    favicon ico 文件是浏览器收藏网址时显示的图标 xff0c 当第一次访问页面时 xff0c 浏览器会自动发起请求获取页面的favicon ico文件 当 favicon ico文件不存在时 xff0c 服务器会记录404日志 12
  • php根据地理坐标获取国家、省份、城市,及周边数据类

    功能 xff1a 当App获取到用户的地理坐标时 xff0c 可以根据坐标知道用户当前在那个国家 省份 城市 xff0c 及周边有什么数据 原理 xff1a 基于百度Geocoding API 实现 xff0c 需要先注册百度开发者 xff
  • Mac查看本机IP地址方法

    Mac查看本机IP地址方法 1 使用command 43 shift 43 u 打开实用工具 2 选择 终端 打开 3 输入 ifconfig grep inet grep v 127 0 0 1 显示 inet 开头的那行就是本机的IP地
  • 使用ssh-keygen生成私钥和公钥

    1 使用ssh keygen生成私钥和公钥 命令如下 xff1a ssh span class hljs attribute keygen span span class hljs attribute t span rsa 例子 xff1a
  • 代码简短且隐蔽的后门木马

    本文将介绍一个代码很简短 xff0c 而且很隐蔽的后门木马 xff0c 以便让大家在检测程序时可以避免被挂木马 文件内容如下 xff1a lt php 64 span class hljs variable span 61 span cla
  • H264视频编码原理基础分析

    引言 本文章旨在记录本人学习有关音视频时对H264码流视频编解码原理部分的内容 xff0c 如有不对请留言指出 1 音视频封装格式 我们一般下载或者播放的视频文件常见都是以 xxx mp4 xxx flv xxx mkv等标识结尾 xff0
  • mysql导出查询结果到csv方法

    要将mysql的查询结果导出为csv xff0c 一般会使用php连接mysql执行查询 xff0c 将返回的查询结果使用php生成csv格式再导出 但这样比较麻烦 xff0c 需要服务器安装php才可以实现 直接使用mysql导出csv方
  • MySQL实用工具汇总

    本文收录了mysql相关的实用工具 工具包括 xff1a 性能测试 xff0c 状态分析 xff0c SQL路由 xff0c 及运维开发相关的所有工具 xff0c 并会持续更新 1 工具套件集 percona toolkit oak too
  • php 判断memcache key/value是否存在方法

    1 memcache简介 memcache是一套分布式高速缓存软件 xff0c 用于数据缓存及分布式网站session存储等 使用key 61 gt value方式存储 xff0c 支持数据压缩存储处理及数据过期处理 value只支持str