• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP使用Redis

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
安装步骤参考链接

PHPRedis 已经封装为 PHP 的官方扩展了,只要安装了这个扩展,重启 PHP-FPM 后即可使用 PHPRedis。

从 pecl 安装

下面命令会安装最新的稳定版本的 PHP 扩展:

pecl install redis

源码编译安装(仅限 Linux)

可以从源码构建这个 PHP 扩展:

phpize
./configure [--enable-redis-igbinary] [--enable-redis-lzf [--with-liblzf[=DIR]]]
make && make install

对 Windows 下的编译安装如果有兴趣,可以参考 这里

从二进制包安装

大多数发行版都会提供这个扩展的预编译的二进制包。安装完成后记得重启 php-fpm 或 apache。

Windows

https://pecl.php.net/package/redis 这个页面下载 DLL 文件,放入指定位置,并修改 php.ini 文件指定扩展位置。

extension_dir = "/path/to/php/extensions" //扩展所在路径

extension=redis.so // 扩展名称

Fedora

Fedora 用户可以从官方仓库安装。注意区分版本。

Fedora ≤ 28, Version 3 ,安装 php-pecl-redis 包:

dnf install php-pecl-redis

Fedora ≥ 27, Version 4 ,安装 php-pecl-redis4 包:

dnf install php-pecl-redis4

RHEL / CentOS

从 EPEL 仓库安装 php-pecl-redis 包:

yum install php-pecl-redis

PHPRedis 基本用法

PHPRedis 提供了通过 PHP 使用 Redis 的 API,详细的文档可以 参考项目文档
示例代码可以 参考这里

PHPRedis 中的方法,基本上都返回 TRUE 或FALSE。

Redis 的代码结构

Redis 提供了两个类和几个预定义常量:

  • Class Redis:用于创建 Redis 客户端,用法:$redis = new Redis();
  • Class RedisException:如果无法连接 Redis 服务器(服务器宕机、过载等连接问题),会抛出这个异常。只要服务器可以连接,就不会抛出这个异常(例如命令有无、Key 不存在等问题,只会返回 FALSE)
  • 预定义常量:Redis 的数据类型
    Redis::REDIS_STRING - String
    Redis::REDIS_SET - Set
    Redis::REDIS_LIST - List
    Redis::REDIS_ZSET - Sorted set
    Redis::REDIS_HASH - Hash
    Redis::REDIS_NOT_FOUND - Not found / other

连接 Redis

  • connect, open:连接到一台服务器
  • pconnect, popen:持久连接到一台服务器,参数类似 connect 和 open
  • auth:向服务器认证,注意,密码会以明文传输
  • select:切换当前连接使用的数据库
  • swapdb:切换两个 Redis,原子地将一个 Redis 数据库与另一个 Redis 数据库交换,版本受限:>= 4.0.0
  • close:关闭连接
  • setOption:设置客户端选项
  • getOption:获取客户端选项
  • ping:向服务器发送 Ping 请求
  • echo:回显指定的字符串

connect, open

参数如下:

  • host:字符串,可以是 host 或 Linux 下的 socket 套接字
  • port:端口,可选
  • timeout:超时时间。浮点数,单位秒,可选,默认值 0 表示无限制
  • reserved:如果指定了 retry_interval ,就应该设置为 NULL
  • retry_interval:整型,单位毫秒,可选
  • read_timeout:浮点数,单位秒,可选,默认值 0 表示无限制

返回值:

  • BOOL:成功建立连接返回 TRUE,失败则返回 FALSE

示例:

$redis->connect('127.0.0.1', 6379);
$redis->connect('127.0.0.1'); // 默认使用的端口号是 6379
$redis->connect('127.0.0.1', 6379, 2.5); // 超时时间是 2.5 秒
$redis->connect('/tmp/redis.sock'); // unix domain socket
$redis->connect('127.0.0.1', 6379, 1, NULL, 100); // 超时时间是 1 秒,发起重新连接之前有 100ms 的延迟

auth

参数:密码,字符串
返回值:

  • BOOL:认证成功则返回 TRUE,失败则返回 FALSE
$redis->auth('myPass');

select

参数:整型,要使用的数据库的编号
返回值:

  • BOOL:成功则返回 TRUE,失败则返回 FALSE

setOption

参数:参数名和参数值

返回值:

  • BOOL:成功则返回 TRUE,失败则返回 FALSE
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_NONE);  // 不序列化数据
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP);   // 使用内建的 serialize/unserialize
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_IGBINARY);  // 使用 igBinary serialize/unserialize

$redis->setOption(Redis::OPT_PREFIX, 'myAppName:');    // 对所有的 key 使用自定义的前缀

/* 
   SCAN 命令族的选项,指示是否抽象来自用户的空结果。如果设置为SCAN_NORETRY(默认值),
   phpredis 将一次发出一个SCAN命令,有时返回空数组。如果设置为SCAN_RETRY,phpredis
   将重试scan命令直到返回 key 或 Redis 返回零的迭代器
*/
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_NORETRY);
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);

getOption

返回设置的选项。

示例:

// 返回 Redis::SERIALIZER_NONE, Redis::SERIALIZER_PHP, 或 Redis::SERIALIZER_IGBINARY
$redis->getOption(Redis::OPT_SERIALIZER);

ping

返回值:
成功时返回字符串 +PONG。连接错误时抛出 RedisException。

Server 服务器指令

  • bgRewriteAOF:向只支持追加的文件(Append-Only File)异步重写
  • bgSave:异步将数据集保存到磁盘(在后台运行)
  • config:设置或获取 Redis 服务器配置参数
  • dbSize:返回选中的数据库中 key 的个数
  • flushAll:删除所有数据库中所有的 key
  • flushDb:删除当前数据库中所有的 key
  • info:获取服务器的状态和统计信息
  • lastSave:获取上次保存数据到磁盘时的时间戳
  • resetStat:重置 info 方法返回的统计信息
  • save:异步将数据集保存到磁盘(前台,需等待)
  • slaveOf:使服务器成为另一个实例的从属服务器,或将其提升为主服务器
  • time:返回当前的服务器时间
  • slowLog:访问 Redis 的 slowLog 条目

bgRewriteAOF 和 bgSave

示例:

$redis->bgRewriteAOF();
$redis->bgSave();

config

参数:

  • 操作:GET 或 SET
  • 对于 SET 操作,需要 key。对于 GET 操作需要 glob-pattern,参考:http://redis.io/commands/config-get
  • 对于 SET 操作,还需要 value。

返回值:

  • GET 操作会返回关联数组:key -> value
  • SET 操作返回布尔值

示例:

$redis->config("GET", "*max-*-entries*");
$redis->config("SET", "dir", "/var/run/redis/dumps/");

info

返回关联数组形式的服务器信息。不指定参数时会返回所有的信息(类似 Redis 的 info 命令):

127.0.0.1:6379> info
# Server
redis_version:3.2.12
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:3dc3425a3049d2ef
redis_mode:standalone
os:Linux 4.15.6-1.el7.elrepo.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:1251
run_id:64c7b0402e7a1b327854c02265ee04523a63c8b0
tcp_port:6379
uptime_in_seconds:491886
uptime_in_days:5
hz:10
lru_clock:8793321
executable:/root/redis-server
config_file:

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:813480
used_memory_human:794.41K
used_memory_rss:6680576
used_memory_rss_human:6.37M
used_memory_peak:833424
used_memory_peak_human:813.89K
total_system_memory:4137517056
total_system_memory_human:3.85G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:8.21
mem_allocator:jemalloc-3.6.0

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1535423155
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

# Stats
total_connections_received:14
total_commands_processed:209
instantaneous_ops_per_sec:0
total_net_input_bytes:6977
total_net_output_bytes:82521
instantaneous_input_kbps:0.01
instantaneous_output_kbps:6.06
rejected_connections:133
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:9
evicted_keys:0
keyspace_hits:77
keyspace_misses:27
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:807
migrate_cached_sockets:0

# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:344.30
used_cpu_user:150.14
used_cpu_sys_children:0.02
used_cpu_user_children:0.00

# Cluster
cluster_enabled:0

# Keyspace
db0:keys=10,expires=0,avg_ttl=0

可以将各种选项传递给 INFO(根据 Redis 文档),只返回感兴趣的内容。

127.0.0.1:6379> info cpu
# CPU
used_cpu_sys:344.43
used_cpu_user:150.19
used_cpu_sys_children:0.02
used_cpu_user_children:0.00

参数:可选,例如 COMMANDSTATSCPU

示例:

$redis->info(); /* standard redis INFO command */
$redis->info("COMMANDSTATS"); /* Information on the commands that have been run (>=2.6 only)
$redis->info("CPU"); /* just CPU information from Redis INFO */

slaveOf

参数:
主机加端口号,不指定参数时表示不再做 slave 。

示例:

$redis->slaveOf('10.0.1.7', 6379);
/* ... */
$redis->slaveOf();

slowLog

参数:

  • 操作(字符串):GET、LEN 或 RESET
  • 长度(integer)可选:GET 命令需要这个选项

不同操作的返回值不同:

  • SLOWLOG GET:慢日志条目的关联数组
  • SLOGLOG LEN:整型,slowLog 的个数
  • SLOWLOG RESET:布尔值,取决于操作是否成功

示例:

// Get ten slowLog entries
$redis->slowLog('get', 10);
// Get the default number of slowLog entries

$redis->slowLog('get');
// Reset our slowLog
$redis->slowLog('reset');

// Retrieve slowLog length
$redis->slowLog('len');

KEY 和 STRING 字符串操作

key 针对键的操作

  • del, delete, unlink:删除一个 key
  • dump:返回存储在指定键处的值的序列化版本
  • exists:判断 key 是否存在
  • expire, setTimeout, pexpire:设置 key 的过期时间
  • expireAt, pexpireAt:设置 key 在那一刻过期,UNIX 时间戳
  • keys, getKeys:找出所有匹配指定模式的 key
  • scan:扫描键空间中的键,Redis >= 2.8.0
  • migrate:以原子方式将 key 从一个 Redis 实例转移到另一个实例
  • move:将 key 移动到另一个数据库
  • object:检查 Redis 对象的内部
  • persist:删除 key 的过期时间
  • randomKey:从键空间中返回一个随机的 key
  • rename, renameKey:重命名 key
  • renameNx:仅在 key 不存在(not exist)的时候才重命名这个 key
  • type:判断存储在 key 中的数据的类型
  • sort:排序 LIST、SET 或 Sorted SET 中的元素
  • ttl, pttl:获取 key 的有效期
  • restore:使用先前通过 dump 获得的序列化值创建 key
<?php

    //连接 Redis 服务
    ...
    // 获取数据
    $arr = $redis->keys("*");
    print_r($arr);

STRING 针对字符串的操作

  • append:向一个 key 追加值
  • bitCount:计算字符串中的设置位数(Count set bits in a string)
  • bitOp:在字符串之间执行按位运算(Perform bitwise operations between strings)
  • decr, decrBy:减少 key 对应的字符串值
  • get:获取值
  • getBit:返回 key 对应的字符串值中 offset 处的位值
  • getRange:返回 key 对应的字符串值中的子字符串
  • getSet:设置 key 对应的字符串值,并返回旧值
  • incr, incrBy:增加 key 对应的字符串值
  • incrByFloat:按指定的数量增加 key 对应的浮点值
  • mGet, getMultiple:获取多个指定的 key 对应的值
  • mSet, mSetNX:为多个 key 设置指定的值
  • set:为一个 key 设置值
  • setBit:设置或清除 key 处存储的字符串值中的指定偏移处的位
  • setEx, pSetEx:同时设置 key 的值和过期时间
  • setNx:只有在 key 不存在时,才为其设置值
  • setRange:覆盖指定的 key 对应的字符串的一部分
  • strLen:获取指定的 key 对应的值的长度

get

返回值:字符串或 BOOL。如果 key 不存在则返回 FALSE。否则,返回 key 对应的值。

示例:

$redis->get('key');

set

对于 >= 2.6.12 的版本,可以使用额外的参数。

参数:

  • Key
  • Value
  • 超时时间或选项数组(可选)。如果传的是整型,则 phpredis 会将其转为 SETEX,如果传的是数组,会尝试使用 >= 2.6.12 的版本所支持的扩展选项。

返回值:如果命令执行成功,返回 TRUE。

示例:

$redis->set('key', 'value');

// 会自动转为调用 SETEX
$redis->set('key','value', 10);

// 10 秒有效期,仅在 key 不存在时设置值
$redis->set('key', 'value', Array('nx', 'ex'=>10));

// 1000 毫秒有效期,仅在 key 存在时设置值
$redis->set('key', 'value', Array('xx', 'px'=>1000));

setex 和 psetex

参数:Key TTL Value

示例:

$redis->setEx('key', 3600, 'value'); // 1 小时有效期
$redis->pSetEx('key', 100, 'value'); // 0.1 秒有效期

del、delete 和 unlink

参数:key 的数组,或直接用不限数量的 key。

注意:unlink 方法与使用 del 完全相同,unlink 命令是非阻塞的,并且将异步执行实际删除。需要 > = 4.0.0 的版本才支持。

返回值:已删除的 key 的个数。

示例:

$redis->delete('key1', 'key2'); /* 返回 2 */
$redis->delete(array('key3', 'key4')); /* 返回 2 */

/* 如果版本 >= 4.0.0 可以使用 unlink */
$redis->unlink('key1', 'key2');
$redis->unlink(Array('key1', 'key2'));

mGet 和 getMultiple

如果有不存在的 key,返回的数组中对应的位置会被设置为 FALSE。

参数:数组,包含与参数中的 key 相关的值的数组

示例:

$redis->set('key1', 'value1');
$redis->set('key2', 'value2');
$redis->set('key3', 'value3');
$redis->mGet(array('key1', 'key2', 'key3')); /* array('value1', 'value2', 'value3');
$redis->mGet(array('key0', 'key1', 'key5')); /* array(`FALSE`, 'value1', `FALSE`);

mSet 和 mSetNx

在一个原子命令中设置多个键值对。mSetNx 在所有键值对设置成功时,只会返回 TRUE。

参数:键值对数组 array(key => value, …)

返回值:TRUE 或 FALSE。

示例:

$redis->mSet(array('key0' => 'value0', 'key1' => 'value1'));
var_dump($redis->get('key0'));
var_dump($redis->get('key1'));

输出:

string(6) "value0"
string(6) "value1"

getSet

参数:key value

返回值:字符串,key 之前对应的值

示例:

$redis->set('x', '42');
$exValue = $redis->getSet('x', 'lol'); // 返回 '42',并将 x 设置为 'lol'
$newValue = $redis->get('x')'       // 返回 'lol'

move

将 key 移动到另一个数据库。Redis 中的数据库编号从 0 开始。

参数:

  • key
  • dbindex,整型,要移动到的数据库的编号

返回值:BOOL 值,成功返回 TRUE,失败返回 FALSE。e.

示例:

$redis->select(0); // 使用数据库 0
$redis->set('x', '42');
$redis->move('x', 1);  // 将 x 移动到数据库 1
$redis->select(1); // 切换为数据库 1
$redis->get('x');  // 返回 42

expire、setTimeout 和 pexpire

参数:

  • Key
  • ttl,整型值

示例:

$redis->set('x', '42');
$redis->setTimeout('x', 3);    // 设置 3 秒钟的有效期
sleep(5);
$redis->get('x');      // 因为已经过期了,所以这里返回 `FALSE`

expireAt 和 pexpireAt

参数:

  • Key
  • UNIX 时间戳,整型值。

示例:

$redis->set('x', '42');
$now = time(); // 当前时间戳, Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数
$redis->expireAt('x', $now + 3);  // x 在 3 秒钟后失效
sleep(5);
$redis->get('x');      // 因为已经过期了,所以这里返回 `FALSE`

keys 和 getKeys

参数:pattern 模式,字符串类型,通配符是“*”。

返回值:STRING 类型组成的数组。

示例:

$allKeys = $redis->keys('*');  // 查询所有的 key
$keyWithUserPrefix = $redis->keys('user*');  // 查询 user 开头的 key

type

返回值:取决于 key 指向的数据的类型,返回值可能是:

  • string: Redis::REDIS_STRING
  • set: Redis::REDIS_SET
  • list: Redis::REDIS_LIST
  • zset: Redis::REDIS_ZSET
  • hash: Redis::REDIS_HASH
  • other: Redis::REDIS_NOT_FOUND

示例:

$redis->type('key');

append

参数:Key Value

返回值:追加后的值的大小,整型值。

示例:

$redis->set('key', 'value1');
$redis->append('key', 'value2'); /* 返回 12 */
$redis->get('key'); /* 'value1value2' */

getRange

获取子字符串。注意:substr 已经废弃。

参数:key start end

示例:

$redis->set('key', 'string value');
$redis->getRange('key', 0, 5); /* 'string' */
$redis->getRange('key', -5, -1); /* 'value' */

setRange

用指定的字符串替换 key 对应字符串的一部分。

参数:key offset value

返回值:修改后的字符串的长度。

示例:

$redis->set('key', 'Hello world');
$redis->setRange('key', 6, "redis"); /* 返回 11 */
$redis->get('key'); /* "Hello redis" */

strLen

示例:

$redis->set('key', 'value');
$redis->strlen('key'); /* 5 */

getBit

返回字符串中的一个位。

参数:key offset

返回值:位值,0 或 1,LONG 类型

示例:

$redis->set('key', "\x7f"); // 0111 1111
$redis->getBit('key', 0); /* 0 */
$redis->getBit('key', 1); /* 1 */

setBit

改变字符串的一个位。

参数:key offset value: bool or int (1 or 0)

返回值:要替换的位在替换前的值,0 或 1,LONG 类型

示例:

$redis->set('key', "*");   // ord("*") = 42 = 0x2f = "0010 1010"
$redis->setBit('key', 5, 1); /* returns 0 */
$redis->setBit('key', 7, 1); /* returns 0 */
$redis->get('key'); /* chr(0x2f) = "/" = b("0010 1111") */

bitOp

在多个 key 上指向位操作。

参数:

  • operation:操作,”AND”, “OR”, “NOT”, “XOR”
  • ret_key:返回的 key
  • key1
  • key2…

返回值:存储在目标 key 中的字符串的大小,LONG 类型

sort

对 list、set 或 sorted set 中的元素进行排序。

参数:

  • Key
  • array(key => value, …):可选,示例如下:

    ‘by’ => ‘some_pattern_*’,
    ‘limit’ => array(0, 1),
    ‘get’ => ‘some_other_pattern_*’ or an array of patterns,
    ‘sort’ => ‘asc’ or ‘desc’,
    ‘alpha’ => TRUE,
    ‘store’ => ‘external-key’

返回值:值组成的数组,或存储的元素个数(如果指定的话)。

示例:

$redis->delete('s');
$redis->sAdd('s', 5);
$redis->sAdd('s', 4);
$redis->sAdd('s', 2);
$redis->sAdd('s', 1);
$redis->sAdd('s', 3);

var_dump($redis->sort('s')); // 1,2,3,4,5
var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5

dump

打印 Redis 数据库中的值,之后可以通过 RESTORE 命令将其传回 Redis。DUMP 返回的数据是 Redis 中存储的二进制。

返回值:Redis 编码过的 key,如果 key 不存在则返回 FALSE。

示例:

$redis->set('foo', 'bar');
$val = $redis->dump('foo');

编码参考这个例子:

127.0.0.1:6379> type hello
string
127.0.0.1:6379> dump hello
"\x00\xc0\x05\a\x00\x9c\x1d\x8a\x95\x8b\xe5fK"

restore

使用先前通过 dump 获得的序列化值创建 key。

参数:

  • key
  • ttl:整型。设置 0 时表示一直有效
  • value:字符串(二进制)。Redis 编码的值(来自 DUMP 命令)。

示例:

$redis->set('foo', 'bar');
$val = $redis->dump('foo');
$redis->restore('bar', 0, $val); // The key 'bar', will now be equal to the key 'foo'

migrate

将 key 迁移到另一个 Redis 实例。Redis 在 3.0.6 版本之后支持一次迁移多个 key。

参数:

  • host:字符串,目标主机
  • port:整型,TCP 端口号
  • key(s):字符串或数组
  • destination-db integer.:目标数据库的编号
  • timeout:这次迁移允许的最大时间
  • copy:boolean,可选。是否向 Redis 发送 COPY 标志
  • replace:boolean,可选。是否向 Redis 发送 REPLACE 标志

示例:

$redis->migrate('backup', 6379, 'foo', 0, 3600);
$redis->migrate('backup', 6379, 'foo', 0, 3600, true, true); /* copy and replace */
$redis->migrate('backup', 6379, 'foo', 0, 3600, false, true); /* just REPLACE flag */

/* Migrate multiple keys (requires Redis >= 3.0.6)
$redis->migrate('backup', 6379, ['key1', 'key2', 'key3'], 0, 3600);

LIST 列表操作

  • blPop, brPop:删除并获取列表中的第一个/最后一个元素
  • bRPopLPush:从列表中弹出一个值,将其推送到另一个列表并返回它
  • lIndex, lGet:通过索引从列表中获取元素
  • lInsert:通过索引从列表中获取元素
  • lLen, lSize:获取列表的长度/大小
  • lPop:删除并获取列表中的第一个元素
  • lPush:将一个或多个值添加到列表中
  • lPushx:仅当列表存在时,才将值添加到列表中
  • lRange, lGetRange:从列表中获取一系列元素
  • lRem, lRemove:从列表中删除元素
  • lSet:通过索引设置列表中元素的值
  • lTrim, listTrim:将列表修剪到指定范围
  • rPop:删除并返回列表的最后一个元素
  • rPopLPush:删除并返回列表的最后一个元素,并将其追加到另一个列表(>= 1.1)
  • rPush:向列表追加一个或多个值
  • rPushX:仅在列表存在的情况下,向列表追加一个或多个值

blPop 和 brPop

描述:是一个阻塞的 lPop(rPop)原语,开头的字母 b 表示 blocking。如果至少有一个列表包含至少一个元素,则该元素将从列表的头部弹出并返回给调用者。如果由参数传递的键所标识的所有列表都为空,则 blPop 将在指定的超时期间阻塞,直到元素被推送到其中一个列表,然后才弹出此元素并继续。

参数:

  • ARRAY,包含多个 key 的数组
  • INTEGER Timeout,超时时间

  • STRING Key1
  • STRING Key2
  • STRING Key3
  • STRING Keyn
  • INTEGER Timeout,超时时间

返回值:ARRAY array(‘listName’, ‘element’)

示例:

/* Non blocking feature */
$redis->lPush('key1', 'A');
$redis->delete('key2');

$redis->blPop('key1', 'key2', 10); /* array('key1', 'A') */
/* OR */
$redis->blPop(array('key1', 'key2'), 10); /* array('key1', 'A') */

$redis->brPop('key1', 'key2', 10); /* array('key1', 'A') */
/* OR */
$redis->brPop(array('key1', 'key2'), 10); /* array('key1', 'A') */

/* Blocking feature */

/* process 1 */
$redis->delete('key1');
$redis->blPop('key1', 10);
/* blocking for 10 seconds */

/* process 2 */
$redis->lPush('key1', 'A');

/* process 1 */
/* array('key1', 'A') is returned*/

bRPopLPush

rPopLPush 的阻塞版本,第三个参数是整型超时时间。

参数:

  • Key:源 key
  • Key:目标 key
  • Long timeout:超时时间

返回值:成功则返回 STRING 类型的元素,失败则返回 FALSE。

lIndex 和 lGet

返回列表中指定 key 对应的元素。

  • 0 表示第一个元素,1 表示第二个。。。
  • -1 表示最后一个元素,-2 表示倒数第二个。。。

Return FALSE in case of a bad index or a key that doesn’t point to a list.

参数:key index

返回值:成功则返回 STRING 类型的元素,失败返回 FALSE。

示例:

$redis->rPush('key1', 'A');
$redis->rPush('key1', 'B');
$redis->rPush('key1', 'C'); /* key1 => [ 'A', 'B', 'C' ] */
$redis->lGet('key1', 0); /* 'A' */
$redis->lGet('key1', -1); /* 'C' */
$redis->lGet('key1', 10); /* `FALSE` */

lInsert

在列表中指定的值之前或之后插入值。

参数选项指定插入的位置(之前或之后)。如果列表不存在,或者指定的值不存在,则不插入该值。

参数:

  • key
  • position Redis::BEFORE | Redis::AFTER
  • pivot,指定的值
  • value

返回值:成功则返回列表中的元素个数,如果 pivot 不存在则返回 -1.

示例:

$redis->delete('key1');
$redis->lInsert('key1', Redis::AFTER, 'A', 'X'); /* 0 */

$redis->lPush('key1', 'A');
$redis->lPush('key1', 'B'
                      

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
centos6下安装ZendGuardLoader(php5.3之后用不了Zendoptimizer)发布时间:2022-07-10
下一篇:
php处理json发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap