资讯专栏INFORMATION COLUMN

Redis & PHP 简易备忘

defcon / 347人阅读

摘要:以下对安装客户端基本操作扩展及中的基本接口备忘。这里的只起到提供配置文件模板的作用。当多个元素的相同时,按照其的字典顺序排序。注意,需要事先运行。

以下对 Redis 安装、Redis 客户端基本操作、PHP-Redis 扩展及 PHP 中 Redis 的基本接口备忘。本机环境为 Mac。

Redis 安装

首先需要下载 Redis,访问以下网址,选择 Stable 版本下载:

https://redis.io/download

进入解压后的文件夹,执行编译:

make

之后执行:

make install

这一步会将 Redis 常用的命令如:redis-server, redis-cli 等放入 /usr/local/bin 中,相当于添加了环境变量。

Redis 基本操作 Redis 服务端启动

Redis 分为客户端和服务器端,首先我们需要启动服务端,执行:

redis-server

此时命令行会停滞在 Redis 服务启动提示信息中,表示现在 Redis 服务端正在运行,可以使用 Ctrl + Z 中止。

但是,我们更希望 Redis 可以作为一种服务运行于后台,此时需要修改 redis.conf 文件:

cd /your/path/to/redis/redis.conf

将 128 行的 daemonize 值修改为 yes,所在行数可能因版本而有所不同:

daemonize no  =>  daemonize yes

然后重新启动 Redis:

redis-server /your/path/to/redis/redis.conf

注意,即使修改了 redis.conf,也需要在 redis-server 后加上这一参数,否则仍然会以默认配置启动。这里的 redis.conf 只起到提供配置文件模板的作用。

这之后可以查看当前运行的进程以检查 Redis 服务的启动情况:

ps aux|grep redis-server

停止服务可以执行:

redis-cli shutdown
Redis 客户端

执行以下指令进入客户端:

redis-cli

当我们修改了默认端口号,或需要连接到远程时,可以使用:

redis-cli -h 127.0.0.7 -p 6379
Redis 数据类型

Redis 中有五种数据类型:

string:键值对形式,键为字符串类型,而值可以为字符串或数字;

list:在两头进行插入或删除,可以模拟队列和栈;

set:集合,不同元素的值均不相同;

hash:通过键可以所索引到一组键值对,可以类比二维关联数组;

zset:有序集合,以 ( score, value ) 的方式组织,并会按照 score 值进行排序;

Redis 客户端基本操作

以下只备忘简单指令,其他命令可以查阅:

https://redis.io/commands

以下指令需要进入 redis-cli 之后执行:

1. string
get key1                // 获取 key1 键对应的值,若不存在会输出 nil
set key1 value1         // 设置 key1 => value1 键值对
set key2 123            // 设置 key2 为 123
incr key2               // 使 key2 对应的值自增 1
decr key2               // 使 key2 对应的值自减 1
incrby key2 10          // key2 对应的值加 10
decrby key2 10          // key2 对应的值减 10
2. list
lpush listA A           // 向 listA 这一队列的左边加入 A
rpush listA B           // 向 listA 这一队列的右边加入 B
lpop listA              // 从 listA 这一队列的左边弹出第一个值
rpop listA              // 向 listA 这一队列的右边弹出第一个值
llen listA              // 得到 listA 的长度
3. set
sadd setA A             // 向 setA 这一集合中增加 A
scard setA              // 得到 setA 这一集合中的长度
sismember setA A        // 判断 A 是否为 setA 集合中元素
srem setA A             // 从 setA 集合中移除 A 元素
4. hash
hset hashA key1 A       // 向 hashA 中添加键值对 key1 => A
hget hashA key1         // 得到 hashA 中键 key1 对应的值
hlen hashA              // 得到 hashA 含有的键值对数
hmget hashA key1 key2   // 获得 hashA 中多个键对应的值
5. zset
zadd zsetA 10.1 val1    //  向 zsetA 中加入 score 为 10.1 的 val1
zrange zsetA 0 4        // 获得 zsetA 中从小到大排序第 0 到第 4 的元素

// 获得 zsetA 中从小到大排序第 0 到第 4 的元素,输出时附带其对应的 score
zrange zsetA 0 4 withscores 

注意,zset 中的排序按照 score 从小到大升序进行,第 0 为最小值。当多个元素的 score 相同时,按照其 value 的字典顺序排序。

PHP-Redis 扩展

我们使用 phpizeconfigure 进行扩展安装,可以通过 phpize -v 检查是否已经安装过 phpize,若没有,可以使用以下方式进行安装:

yum install php-devel
下载扩展包

根据需要下载相应的扩展源码包:

PHP5: https://codeload.github.com/phpredis/phpredis/zip/develop
PHP7: https://codeload.github.com/phpredis/phpredis/zip/php7
编译扩展

解压后进入文件夹中,执行:

phpize

然后执行:

./configure -with-php-config=/your/path/to/php/bin/php-config

后面的路径会使得在之后的 make install 中将编译后的 redis.so 放到扩展指定的目录,省去了手动移动的步骤。

之后执行:

make

以及:

make install

使用 MAMP 的同学在编译遇到问题时可以参见参考:MAMP环境下安装php扩展

添加扩展配置

最后,需要在配置文件添加扩展配置,可以使用以下指令查看 php.ini 文件的路径:

php --ini

之后编辑 php.ini 文件,添加:

extension=redis.so

这时便可以在 echo phpinfo(); 中看到 Redis 扩展的信息了。

注意:若之前没有使用 -with-php-config 参数,则需要在 make install 后,将生成的 modules/redis.so 移动到扩展所在目录中,该目录可以在 php.ini 中查看到:

extension_dir = /path/to/extensions/
PHP 中使用 Redis

以下只罗列基础的使用方式,详细请参见 PHP-Redis 文档

PHP 中使用 Redis 的方式和通过 redis-cli 使用的方式基本相同。注意,需要事先运行 redis-server

连接 Redis
$redis = new Redis();
$redis->connect("localhost");
string
$redis->set("key1", "value1");  // 设置键值对
$redis->get("key1");            // 获取值

$redis->set("number1", 123);
$redis->incr("number1");        // 自增
$redis->decrBy("number1", 100); // 减法
$redis->get("number1");
list
$redis->lPush("listA", "A");   // 向左侧加入值
$redis->lPush("listA", "B");   
$redis->lPush("listA", "C");

// 从右侧弹出值,由此模拟队列
$redis->rPop("listA");  
set
$redis->sAdd("setA", "A");
$redis->sAdd("setA", "B");
$redis->sAdd("setA", "C");
$redis->sAdd("setA", "A");
$redis->sCard("setA");
$redis->sMembers("setA");  // 输出集合的全部元素
hash
$redis->hSet("hashA", "name", "iname");
$redis->hSet("hashA", "age", "age");

// 同时设置多个值
$redis->hMset("hashA", [
    "gender" => "male",
    "salary" => 12000
]);
$redis->hGet("hashA", "salary");

// 获得多个值
$redis->hMGet("hashA", ["name", "gender"]);
zset
$redis->zAdd("ZSetA", 12, "A");
$redis->zAdd("ZSetA", 10.3, "B");
$redis->zAdd("ZSetA", 11.9, "C");
$redis->zAdd("ZSetA", 9.99, "D");
$redis->zRange("ZSetA", 0, 2);

// 输出全部值
$redis->zRange("ZSetA", 0, -1);

// 从大到小降序输出
$redis->zRevRange("ZSetA", 0, -1);

参考

redis 五种数据类型的使用场景 - CSDN

redis---安装和开启和关闭 - CSDN

MAMP PRO安装PHP扩展的方法

MAMP环境下安装php扩展 - CSDN

Linux下Redis安装与PHP扩展(PHP7适用) - CSDN

Mac环境下安装Redis - 简书

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22499.html

相关文章

  • PHP 7.0 & 7.1 部分新增特性备忘

    摘要:以下分别备忘版本的部分新增特性。而且,在生成器没有输出完全时,使用会报错。报错定义常量数组多声明数组解构运行时将部分指令转为机器码。对于计算密集型应用有较高的性能提升。 以下分别备忘 PHP 7.0 & 7.1 版本的部分新增特性。 PHP 7.0 ?? 运算符 $foo = null; $bar = $foo ?? 123; // 相当于 $bar = isset($bar) ? ...

    philadelphia 评论0 收藏0
  • PHP基础

    摘要:分别为适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。设计模式五适配器模式适配器模式将某个对象的接生成器和协程的实现在这篇文章中,作者针对那些比较难以理解的概念,以一个更为通俗的方式去讲明白。。 PHP 源码注解 PHP 的详细源码注解 PHP 字符串操作整理 一些有关字符串的常用操作。 Redis 常见七种使用场景 (PHP 实战) 这篇文章主要介绍利用 R...

    HtmlCssJs 评论0 收藏0
  • 运用Python完成简易短信验证码解决

      本文关键阐述了运用Python完成简易短信验证码解决,文章内容紧扣主题进行详尽的基本介绍,具有很强的实用价值,必须的朋友可以学习一下  前言  我们做获取数据时,太快或浏览经常,或一浏览便给弹出来短信验证码,随后蚌珠了~  今天小编就给大家来个简易解决短信验证码的办法  自然环境控制模块  这儿需要使用一个ddddocr模块,这也是他人开源系统提前准备好的一样东西,简单又好用,可是精准度差一丢...

    89542767 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<