PHP使用Redis实战实录2:Redis扩展方法和PHP连接Redis的多种方案

这篇具有很好参考价值的文章主要介绍了PHP使用Redis实战实录2:Redis扩展方法和PHP连接Redis的多种方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PHP使用Redis实战实录系列

  • PHP使用Redis实战实录1:宝塔环境搭建、6379端口配置、Redis服务启动失败解决方案
  • PHP使用Redis实战实录2:Redis扩展方法和PHP连接Redis的多种方案

PHP 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP:

echo phpinfo();

PHP使用Redis实战实录2:Redis扩展方法和PHP连接Redis的多种方案,漏刻有时,php,php,redis,开发语言
出现上面提示,代表可以正常使用PHP操作Redis。

一、Redis扩展方法

Redis扩展提供了一系列方法用于与Redis服务器进行交互。以下是一些常用的$redis对象可用的方法:

  1. 连接和关闭连接:

    • connect($host, $port, $timeout): 连接到Redis服务器。
    • close(): 关闭Redis连接。
  2. 数据操作:

    • set($key, $value): 设置指定键的值。
    • get($key): 获取指定键的值。
    • del($key1, $key2, ...): 删除一个或多个键。
    • incr($key): 增加键对应的值。
    • decr($key): 减少键对应的值。
    • exists($key): 检查键是否存在。
    • 其他诸如appendstrlenmsetmget等等。
  3. 列表操作:

    • lpush($key, $value1, $value2, ...): 在列表左侧插入一个或多个值。
    • rpush($key, $value1, $value2, ...): 在列表右侧插入一个或多个值。
    • lpop($key): 弹出列表左侧的值。
    • rpop($key): 弹出列表右侧的值。
    • llen($key): 获取列表长度。
    • 其他诸如lindexlrangeltrim等等。
  4. 哈希操作:

    • hset($key, $field, $value): 设置哈希中指定字段的值。
    • hget($key, $field): 获取哈希中指定字段的值。
    • hdel($key, $field1, $field2, ...): 删除一个或多个哈希字段。
    • hgetall($key): 获取哈希中所有字段和对应的值。
    • 其他诸如hincrbyhkeyshvals等等。
  5. 集合操作:

    • sadd($key, $member1, $member2, ...): 向集合添加一个或多个成员。
    • srem($key, $member1, $member2, ...): 从集合中移除一个或多个成员。
    • smembers($key): 获取集合的所有成员。
    • sismember($key, $member): 检查成员是否存在于集合中。
    • 其他诸如sintersunionsdiff等等。

这只是Redis提供的一些常见操作方法的示例列表,还有更多其他方法可供使用。具体可以参考Redis扩展的文档或官方网站来了解更多关于Redis操作的详细信息。

二、php操作Redis语法

在PHP中,可以使用Redis扩展来操作Redis服务器。下面是一些常用的PHP操作Redis的语法示例:

  1. 连接到Redis服务器:
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 或者使用连接池连接
$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
  1. 设置和获取键值对:
// 设置键的值
$redis->set('key', 'value');

// 获取键的值
$value = $redis->get('key');
  1. 删除键:
$redis->del('key');
  1. 判断键是否存在:
if ($redis->exists('key')) {
    // 键存在的处理逻辑
} else {
    // 键不存在的处理逻辑
}
  1. 进行哈希操作:
// 设置哈希表字段的值
$redis->hset('hash_key', 'field', 'value');

// 获取哈希表字段的值
$value = $redis->hget('hash_key', 'field');

// 删除哈希表字段
$redis->hdel('hash_key', 'field');
  1. 进行列表操作:
// 在列表左侧插入值
$redis->lpush('list_key', 'value1', 'value2');

// 在列表右侧插入值
$redis->rpush('list_key', 'value3', 'value4');

// 弹出列表左侧的值
$value = $redis->lpop('list_key');

// 弹出列表右侧的值
$value = $redis->rpop('list_key');
  1. 进行集合操作:
// 向集合添加成员
$redis->sadd('set_key', 'member1', 'member2');

// 从集合中移除成员
$redis->srem('set_key', 'member1');

// 检查成员是否存在于集合中
if ($redis->sismember('set_key', 'member1')) {
    // 成员存在的处理逻辑
} else {
    // 成员不存在的处理逻辑
}
  1. 键设置过期时间
    在Redis中,你可以使用EXPIRE命令为一个键设置过期时间,从而控制该键的有效期。以下是一些在Redis中设置键的有效期的方法:

  2. EXPIRE key seconds:设置key的过期时间为seconds秒。当seconds秒钟过去后,键将会自动过期并被删除。

例如,下面的代码将名为mykey的键设置为过期时间为60秒:

$redis->expire('mykey', 60);
  1. PEXPIRE key milliseconds:类似于EXPIRE命令,但时间以毫秒为单位。

例如,下面的代码将名为mykey的键设置为过期时间为3000毫秒(即3秒):

$redis->pexpire('mykey', 3000);
  1. EXPIREAT key timestamp:设置key的过期时间戳,以秒为单位。timestamp参数是一个UNIX时间戳,表示键的过期时间点。

例如,下面的代码将名为mykey的键设置为在1612266625秒之后过期:

$redis->expireat('mykey', 1612266625);
  1. PEXPIREAT key milliseconds-timestamp:类似于EXPIREAT命令,但时间戳以毫秒为单位。

例如,下面的代码将名为mykey的键设置为在1654123456789毫秒之后过期:

$redis->pexpireat('mykey', 1654123456789);

这些命令可用于设置Redis中键的过期时间。一旦过期时间到达,键将被自动删除。注意,只有在键被设置为字符串、哈希表、列表等类型时,过期设置才有效。

另外,如果你想获取键的剩余过期时间,你可以使用TTL命令或PTTL命令。如ttl('mykey')返回键mykey的剩余过期时间(以秒为单位),pttl('mykey')返回键mykey的剩余过期时间(以毫秒为单位)。如果键已过期或不存在,这些命令返回负数。

这些是一些常用的Redis操作示例,你可以根据具体的业务需求,使用相应的方法来进行操作。记得在操作完成后,及时关闭Redis连接,以释放资源。

三、PHP连接Redis

1.PHP中使用带密码的连接Redis

若要在PHP中使用带密码的连接Redis,你可以使用Redis扩展的auth方法进行身份验证。以下是设置密码并连接到Redis服务器的示例代码:

<?php
$redis = new Redis();

// 连接到Redis服务器
$redis->connect('127.0.0.1', 6379);

// 身份验证
$redis->auth('your_password');

// 执行一些操作
$redis->set('key', 'value');
$value = $redis->get('key');

echo $value; // 输出 'value'
?>

在上述代码中,your_password是在Redis服务器上设置的密码。使用auth方法将密码传递给Redis实例进行身份验证。如果密码不正确或与服务器配置不匹配,将会引发REDIS_AUTH异常。因此,确保提供正确的密码以及与服务器配置相匹配的密码。

同样地,如果在使用Laravel框架,你可以在config/database.php文件中配置Redis连接的密码。在对应的'redis'配置数组中添加'password' => 'your_password'以设置密码。

记得使用适当的安全措施来保护Redis密码,如避免将密码明文存储在代码中或通过不安全的方式传输密码。

2.PHP连接Redis抛出异常

try {
    $redis = new Redis();

    // 连接到Redis服务器
    $redis->connect('127.0.0.1', 6379);

    // 身份验证
    $redis->auth('kYABzc8u3zNs7cq');

    // 执行一些操作
    $redis->set('key', 'lockdata');
    $value = $redis->get('key');

    echo $value; // 输出 'value'

    // 关闭Redis连接
    $redis->close();
} catch (RedisException $e) {
    echo "连接Redis时发生异常:" . $e->getMessage();
}

3.PHP连接Redis:$redis->ping()

$redis->ping()是Redis扩展提供的一个方法,用于检测与Redis服务器的连接是否存活。

它的使用很简单,只需要调用$redis->ping()方法即可。若连接正常且服务器可响应,则该方法返回字符串PONG。若连接异常或服务器未响应,则会抛出RedisException异常。

以下是一个示例:

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

try {
    $response = $redis->ping();

    if ($response === 'PONG') {
        echo "Redis连接正常";
    } else {
        echo "Redis连接异常或服务器未响应";
    }
} catch (RedisException $e) {
    echo "Redis连接异常:" . $e->getMessage();
}

$redis->close();

在上述示例中,我们首先创建一个Redis对象,然后使用connect()方法连接到Redis服务器。接下来,我们调用ping()方法来检测连接状态,并通过返回的响应值进行判断。如果返回值为PONG,则表示连接正常;如果返回值为其他内容,或抛出了异常,则表示连接异常或服务器未响应。

记得在使用ping()方法前确保已经成功建立了与Redis服务器的连接,并在使用完成后及时关闭连接以释放资源。

4.PHP连接Redis 条件语句写法

如果你不想使用try语句来捕获异常,你可以通过检查连接和操作返回的结果来判断是否发生了异常。以下是一个示例代码:

$redis = new Redis();

// 连接到Redis服务器
$connected = $redis->connect('127.0.0.1', 6379);

if ($connected === false) {
    echo "无法连接到Redis服务器";
} else {
    // 执行一些操作
    $setResult = $redis->set('key', 'value');
    if ($setResult === false) {
        echo "设置键值对发生了异常";
    } else {
        $value = $redis->get('key');
        if ($value === false) {
            echo "获取键值对发生了异常";
        } else {
            echo $value; // 输出 'value'
        }
    }
    // 关闭Redis连接
    $redis->close();
}

在上述示例中,我们首先检查$redis->connect()方法的返回值来确定是否成功连接到Redis服务器。如果连接失败,我们可以输出相应的错误信息。如果连接成功,我们再执行一些操作,如$redis->set()$redis->get()等,并检查每个操作的返回结果来判断是否发生了异常。

使用这种写法,你可以根据返回结果进行逻辑判断和处理,而无需使用trycatch块来捕获异常。这种写法相对简单,但在处理多个操作和嵌套逻辑时可能会导致代码变得复杂。

记得在代码中适当处理连接和操作过程中的异常,确保你的程序具备健壮性并能正确处理错误情况。

四、避坑指南

NOAUTH Authentication required 错误

Fatal error: Uncaught exception ‘RedisException’ with message ‘NOAUTH Authentication required.’ in /www/wwwroot/redis.lockdata.cn/index.php:12 Stack trace: #0 /www/wwwroot/redis.lockdata.cn/index.php(12): Redis->set(‘key1’, ‘value1’) #1 {main} thrown in /www/wwwroot/redis.lockdata.cn/index.php on line 12

**原因:**未配置Redis密码导致。

// 身份验证
$redis->auth('kYABzc8u3zNs7cq');

@漏刻有时文章来源地址https://www.toymoban.com/news/detail-617210.html

到了这里,关于PHP使用Redis实战实录2:Redis扩展方法和PHP连接Redis的多种方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • windows11 phpstudy_pro php8.2 安装redis扩展

    环境:windows11 phpstudy_pro php8.2.9 一、命令查看是否安装redis扩展 在对应网站中通过打开, ,选择对应的PHP版本,用命令 php -m 查看自己的php 有没有redis扩展 上面如果有,说明已经安装了,如果没有安装; 二、下载适用于 PHP 8.2 的 Redis 动态链接库扩展文件 使phpinfo()函数查看PH

    2024年01月24日
    浏览(58)
  • 【Redis实战】有MQ为啥不用?用Redis作消息队列!?Redis作消息队列使用方法及底层原理高级进阶

     🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏 《Redis实战与进阶》 本专栏纯属为爱发电永久免费!!! 这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suzee.blog.csdn.net/ 我们用的是云

    2024年02月20日
    浏览(45)
  • 自然语言处理实战项目17-基于多种NLP模型的诈骗电话识别方法研究与应用实战

    大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目17-基于NLP模型的诈骗电话识别方法研究与应用,相信最近小伙伴都都看过《孤注一掷》这部写实的诈骗电影吧,电影主要围绕跨境网络诈骗展开,电影取材自上万起真实诈骗案例。随着科技的快速发展,诈骗电

    2024年02月09日
    浏览(64)
  • 【Linux】CentOS7操作系统安装nginx实战(多种方法,超详细)

    大家好,又见面了,我是沐风晓月,本文是专栏【运维系列-架构与服务】专栏中的[linux基本功-系统服务实战篇],主要讲解nginx的编译安装和yum安装的方式 此专栏是沐风晓月对Linux常见的服务和架构进行总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。 如果

    2024年02月02日
    浏览(57)
  • 本机安装docker,redis并进行连接实战

    win10系统,想要在本机搭建一套开发环境,需要安装zk,redis等组件,一个个的安装显然效率太低且复杂,这里考虑安装docker及相关镜像 docker官网下载:https://docs.docker.com/desktop/install/windows-install/ 下载完成后直接安装即可,安装完成会有一个docker desktop图标 打开powershell ,输入

    2024年02月15日
    浏览(44)
  • PHP连接Apache不成功的解决方法

    PHP是一种在Web开发中非常常用的编程语言,但在使用PHP时,有时会遇到连接Apache不成功的问题。这个问题主要是因为服务器的配置问题所导致的。在本文中,我们将探讨如何解决PHP连接Apache不成功的问题。 检查配置文件 首先,我们需要检查PHP和Apache的配置文件是否正确。在

    2023年04月11日
    浏览(38)
  • CentOS系列:【Linux】CentOS7操作系统安装nginx实战(多种方法,超详细)

    本次的实验环境见下表: 操作系统 服务器IP hostname centos7.6 192.168.1.41 mufengrow41 如何查看相应的参数: 查看操作系统: 查看ip 2.1 添加yum源 nginx不在的默认的yum源中, 可以使用epel或者官网提供的yum源来安装。 以下两种方法,选择任意一种即可,也就是2.1.1和2.1.2两个小节的内

    2024年04月15日
    浏览(61)
  • go~连接redis的方法

    在Go语言中使用Redis,通常需要使用第三方库来实现与Redis服务器的交互。目前比较流行的Go语言Redis客户端库有 go-redis 和 redigo 等。这里以 go-redis 为例,简单介绍如何在Go语言中使用Redis。 安装go-redis库 : 可以使用go命令行工具安装 go-redis 库: 示例代码 : 下面是一个简单的

    2024年04月08日
    浏览(33)
  • 微信小程序学习实录2(下拉刷新、下拉加载更多、小程序事件、PHP后端代码、刷新无数据解决方案)

    lazyCodeLoading基础库 2.11.1 及以上版本支持,2.11.1 以下兼容但无优化效果 通常情况下,在小程序启动期间,所有页面及自定义组件的代码都会进行注入,当前页面没有使用到的自定义组件和页面在注入后其实并没有被使用。自基础库版本 2.11.1 起,小程序支持有选择地注入必要

    2024年02月05日
    浏览(52)
  • 考虑从IP、网关、DNS方面解决Linux不能上网问题,nmtui和nmcli等多种方法为Linux网卡连接配置静态IP

    本文基于Linux上CentOS 7和rocky 9版本进行演示 目录 IP地址 一.图形界面直接设置 二.nmtui命令工具 三.nm-connection-editor命令工具 四.终端nmcli命令 网关 确认虚拟机VMnet8网卡网关地址一致,一般为x.x.x.1  DNS 设置有效的DNS地址,114.114.114.114或8.8.8.8 无法上网考虑三个问题,IP地址是否有

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包