点击上方蓝字关注我,我们一起学编程
如果觉得内容还不错,请帮忙分享一下
有任何疑问或者想看的内容,欢迎私信
微信搜索《编程笔记本》(codingbook2020),获取更多干活。
昨天我们一起学习了 redis 的使用方法,但是在昨天的学习中,我们只涉及了命令行的操作,在大部分场合我们都不会直接操作命令行,而是通过在其他应用中嵌入使用 redis 。
例如,我们在开发 web 应用时常常用到 redis 。比方说,我们要将 web 表单中输入的手机号作为 key ,再随机生成一个六位数的验证码,作为 value ,将这个 key-value 存入 redis ,并设置 EXPIRE 时间为 300 秒。最后通过短信将该六位数验证码发送到指定手机,供用户输入。用户输入验证码后,我们再将用户输入的验证码与 redis 中存储的数据进行比对。这就是常见的验证码操作环节。
但是,我们的操作语言是 java ,并不是 redis 命令行,所以我们需要在 redis 和 java 之间架设一道桥梁,使得我们能够通过 java 去操作 redis ,这就是人们常说的“驱动”。
今天我们要介绍的是在 php 中操作 redis 。
php
php 即“超文本预处理器”,是一种通用开源脚本语言。php 是在服务器端执行的脚本语言,与 C 语言类似,是常用的网站编程语言。PHP独特的语法混合了 C、Java、Perl 以及 php 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
驱动
php 提供了 redis 的驱动程序,由于笔者的设备是 ubuntu 系统,在 linux 系统下,安装这个驱动十分简单,只要一个命令即可:
sudo apt-get install php-redis
安装完这个驱动程序后,我们就能在 php 脚本中操作 redis 了。
php 脚本操作 redis
连接服务器
我们要使用 redis ,第一步就是登录 redis 服务器,在 php 脚本中也是如此。
<?php
// 连接Redis服务器
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('codingbook');
if(! $redis)
{
echo "Connect to Redis failed\n";
}
echo "Connect to Redis successfully\n";
// 查看是否运行
echo "Server is running: " . $redis->ping() . "\n";
?>
上述脚本中,我们先声明一个 Redis 的对象指针,后续的操作都是基于这个指针完成的。connect
函数连接指定 IP 的指定端口,auth
函数用于登录认证。ping
函数等同于命令行中的 ping ,用于测试服务。
我们先启动 redis 服务器,再运行上述脚本:
jincheng@LAPTOP-E4NSNKIT:~/Tmp$ php test.php
Connect to Redis successfully
Server is running: +PONG
jincheng@LAPTOP-E4NSNKIT:~/Tmp$
可以看到,我们已经成功地连接上 redis 服务器,并且 ping 指令也得到响应。
成功连接后,我们就可以再 php 脚本中操作 redis 了,下面我们演示几个例子。
操作 redis 字符串
<?php
//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('codingbook');
if(! $redis)
{
echo "Connect to Redis failed\n";
}
echo "Connect to Redis successfully\n";
// 设置字符串数据
$redis->set("ID", "codingbook2020");
// 获取存储的数据
echo "key ID maps " . $redis->get("ID") . "\n";
?>
上述脚本中,我们先连接 redis 服务器,再通过 set
命令设置字符串,通过 get
命令获取字符串的值。运行结果如下:
jincheng@LAPTOP-E4NSNKIT:~/Tmp$ php test.php
Connect to Redis successfully
key ID maps codingbook2020
jincheng@LAPTOP-E4NSNKIT:~/Tmp$
操作 redis 列表
<?php
//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('codingbook');
if(! $redis)
{
echo "Connect to Redis failed\n";
}
echo "Connect to Redis successfully\n";
$redis->lpush("phones", "huawei");
$redis->lpush("phones", "xiaomi");
$redis->lpush("phones", "oppo");
// 获取存储的数据并输出
$arList = $redis->lrange("phones", 0 ,5);
echo "list phones contains:\n";
print_r($arList);
?>
上述脚本中,通过 lpush
命令向指定列表中插入字符串,使用 lrange
命令保存列表的值,通过 php 的输出命令 print_r 输出该列表。运行结果如下:
jincheng@LAPTOP-E4NSNKIT:~/Tmp$ php test.php
Connect to Redis successfully
list phones contains:
Array
(
[0] => oppo
[1] => xiaomi
[2] => huawei
)
jincheng@LAPTOP-E4NSNKIT:~/Tmp$
我们在 php 脚本中可以操作几乎所有的 redis 命令。我们只举这两个例子。通过这两个例子我们可以看到,在 php 中操作 redis ,命令的样式和 redis 中的命令几乎相同,这对我们通过 php 操作 redis 十分友好。