本文基于Github中phpredis的readme.md文档翻译,只截取了每个方法的简要介绍部分。
每个方法的具体参数和返回值,请参考原文:https://github.com/phpredis/phpredis/blob/develop/README.md
翻译此文档的目的,是为了速查某个具体phpredis类的方法,以便阅读理解使用phpredis的相关代码。
1. Redis 类
创建一个Redis客户端实例:
$redis = new Redis();
从版本6.0.0开始,可以指定配置选项,允许不调用’ connect ‘命令就可以连接到服务器。
$redis = new Redis(
'host' => '127.0.0.1',
'port' => 6379,
'connectTimeout' => 2.5,
'auth' => ['phpredis', 'phpredis'],
'ssl' => ['verify_peer' => false],
'backoff' => [
'algorithm' => Redis::BACKOFF_ALGORITHM_DECORRELATED_JITTER,
'base' => 500,
'cap' => 750,
],
);
构建方法的参数说明
-
host
: string, 主机名,也可以是一个访问Unix Domain Socket的路径. -
port
: int, 端口号,缺省是6379,如果主机是Unix Domain Socket的路径,则此值取 -1 -
connectTimeout
: float, 连接超时限制,以秒为单位,0表示不限制 -
retryInterval
: int, 可选参数,重试间隔时间,以毫秒为单位 -
readTimeout
: float, 可选参数,读取超时限制,以秒为单位,缺省为0(不限制) -
persistent
: mixed, 是否要持久化存储,如果是一个字符串,将被用做一个持久化的id;否则此值被强制转化为bool类型 -
auth
: mixed, 认证信息(账号,密码) -
ssl
: array, SSL相关的选项
2. Redis异常类:RedisException
phpredis 不能连接Redis 服务器时,会抛出一个 RedisException 类的对象。发生这种情况的原因可能是:连接出现问题、或Redis服务关闭,或Redis主机过载。
任何其他的问题(例如键不存在、无效命令等),phpredis将返回’ FALSE ‘。
3. phpRedis预定义常数
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
@TODO: OPT_SERIALIZER, AFTER, BEFORE,…
4. 连接相关的方法
-
connect, open
– 连接到Redis服务器 -
pconnect, popen
– 连接一个持久化的Redis服务器 -
auth
– 使用密码或用户名和密码连接Redis服务器。警告:密码以明文形式发送。 -
select
– 在当前连接中,改为所选择的数据库 -
swapdb
– 在两个Redis数据库之间切换 -
close
– 关闭和Redis服务器的连接 -
setOption
– 设置Redis客户端(实例对象)的选项 -
getOption
– 获取Redis客户端(实例对象)的选项 -
ping
– 测试和Redis服务器的连接 -
echo
– 显示指定的字符串
重试和回退
-
最大重试次数
可以使用’ OPT_MAX_RETRIES ‘选项设置和获取连接的最大重试次数。注意这是
重试次数
,如果将该选项设置为
n
,那么总共将有
n+1
次的最大尝试次数。默认为10 -
回退算法
可以使用’ Redis::OPT_BACKOFF_ALGORITHM ‘选项设置回退算法。来自亚马逊云的Marc Brooker在下面这篇博客中中描述了可用的算法:
Exponential Backoff And Jitter
(https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter):
5. Redis服务器相关的方法
-
acl
– 管理Redis的访问控制表(ACLs) -
bgRewriteAOF
– 异步重写只能追加内容的文件(append-only) -
bgSave
– 异步方式(in background)把数据库保存到磁盘 -
config
– 设置或获取Redis服务器的配置参数 -
dbSize
– 返回选中数据库中所有键的数量 -
flushAll
– 删除所有数据库中的所有键 -
flushDb
– 删除当前数据库中的所有键 -
info
– 获取Redis服务器的信息和统计数据 -
lastSave
– 获取最后一次磁盘保存时间的时间戳 -
save
– 异步保存数据集到磁盘,等待完成 -
slaveOf
– 使Redis服务器成为另一个实例的 Slave 实例,或将其提升为Master实例 -
time
– 返回当前服务器的时间 -
slowLog
– 访问Redis的慢日志记录
6. 字符串值和键相关的方法
6.1 字符串(Strings)
-
append
– 给一个键添加一个值 -
bitCount
– 统计字符串中的固定位(bits)数 -
bitOp
– 执行字符串之间的位操作 -
decr, decrBy
– 递减一个键的值 -
get
– 获取一个键的值 -
getBit
– 返回一个键的字符串值中偏移处的位值 -
getRange
– 获取一个键的字符串值的子字符串 -
getSet
– 设置键的字符串值并返回其旧值 -
incr, incrBy
– 递增一个键的值 -
incrByFloat
– 将键的浮点值按给定的数量递增 -
mGet, getMultiple
– 获取所有给定键的值 -
mSet, mSetNX
– 设置多个键的值 -
set
– 设置一个键的字符串值 -
setBit
– 设置或清除一个键的字符串值的偏移位置 -
setEx, pSetEx
– 设置一个键的值和过期时间 -
setNx
– 设置一个键的值,只有当这个键不存在的时候 -
setRange
– 将一个键的字符串值,从指定偏移量开始的一部分进行覆盖 -
strLen
– 获取一个键对应的值的长度
6.2 键(Keys)
-
del, delete, unlink
– 删除一个键 -
dump
– 将一个指定键的值进行序列化处理后返回 -
exists
– 判断一个键是否存在 -
expire, setTimeout, pexpire
– 设置一个键的生存时间,以秒为单位 -
expireAt, pexpireAt
– 设置一个键的过期时间,使用Unix时间戳格式 -
keys, getKeys
– 查找匹配指定模式的所有键 -
scan
– 在键空间中扫描遍历所有的键(Redis >= 2.8.0) -
migrate
– 原子地将一个键从一个Redis实例转移到另一个实例 -
move
– 将一个键移动到另外一个数据库 -
object
– 检查Redis对象的内部结构 -
persist
– 删除一个键的过期时间 -
randomKey
– 从键空间中随机返回一个键 -
rename, renameKey
– 重命名一个键 -
renameNx
– 重命名一个键,只有在新的键名不存在的时候 -
type
– 返回存储在键中的类型 -
sort
– 对一个列表、集合或有序集合中的元素进行排序 -
ttl, pttl
– 获取一个键的生存时间 -
restore
– 使用先前通过
dump
转化得到的序列化值创建一个键
7. 哈希类型(Hashes)相关的方法
-
hDel
– 删除一个或多个哈希字段 -
hExists
– 判断一个哈希字段是否存在 -
hGet
– 获取一个哈希字段的值 -
hGetAll
– 从一个哈希数据中,获取所有的字段和和值 -
hIncrBy
– 将哈希字段的整数值以给定的数字递增 -
hIncrByFloat
– 将哈希字段的浮点值按给定的数量递增 -
hKeys
– 获取一个哈希数据所有字段 -
hLen
– 获取一个哈希数据中字段的数量 -
hMGet
– 获取所有指定的哈希字段的的值 -
hMSet
– 设置一个哈希数据中多个字段的值 -
hSet
– 设置一个哈希字段中的字符串值 -
hSetNx
– 设置一个哈希字段的值,只有当这个字段不存在的时候 -
hVals
– 获取一个哈希数据中所有的值 -
hScan
– 扫描哈希键的成员 -
hStrLen
– 获取一个哈希数据中,某个字段对应的字符串值的长度
8. 列表类型(Lists)相关的方法
-
blPop, brPop
– 删除并获取列表中的第一个/最后一个元素 -
bRPopLPush
– 从列表中弹出一个值,将其推入另一个列表并返回 -
lIndex, lGet
– 通过索引从列表中获取一个元素 -
lInsert
– 在列表中的另一个元素之前或之后插入一个元素 -
lLen, lSize
– 获取列表的长度/大小 -
lPop
– 删除并获取列表中的第一个元素 -
lPush
– 将一个或多个值前置到列表中 -
lPushx
– 仅当列表存在时,才将值前置到列表 -
lRange, lGetRange
– 从列表中获取元素的范围 -
lRem, lRemove
– 从列表中删除元素 -
lSet
– 通过索引设置列表中元素的值 -
lTrim, listTrim
– 修剪列表到指定的范围 -
rPop
– 删除并获取列表中的最后一个元素 -
rPopLPush
– 删除列表中的最后一个元素,将其附加到另一个列表并返回它 (redis >= 1.1) -
rPush
– 将一个或多个值附加到列表中 -
rPushX
– 仅当列表存在时,才向列表追加值
9. 集合类型(Sets)相关的方法
-
sAdd
– 向集合中添加一个或多个成员 -
sCard, sSize
– 获取集合中的成员数量 -
sDiff
– 获取多个集合的差集 -
sDiffStore
– 获取多个集合的差集,并将结果集存储在一个键中 -
sInter
– 获取多个集合的交集 -
sInterStore
– 获取多个集合的交集,并将结果集存储在一个键中 -
sIsMember, sContains
– 确定给定值是否是集合的成员 -
sMembers, sGetMembers
– 获取一个集合的所有成员 -
sMove
– 把集合的一个成员移动到另外一个集合 -
sPop
– 随机删除并返回集合中的一个或多个成员 -
sRandMember
– 从集合中获取一个或多个随机成员 -
sRem, sRemove
– 从集合中删除一个或多个成员 -
sUnion
– 获取多个集合的合集 -
sUnionStore
– 获取多个集合的合集,并将结果集存储在一个键中 -
sScan
– 扫描一个集合中的成员
10. 有序集合类型(Sorted sets)相关的方法
-
bzPop
– 弹出一个或多个zset的最高或最低得分成员,阻塞直到完成 -
zAdd
– 向有序集合中添加一个或多个成员,或如果已存在则更新其评分 -
zCard, zSize
– 获取有序集合中的成员数 -
zCount
– 用给定值内的分数对有序集合中的成员进行计数 -
zIncrBy
– 增加有序集合中成员的分数 -
zinterstore, zInter
– 获取多个有序集合的交集,并将结果有序集合存储在一个新键中 -
zPop
– 从一个有序集合中弹出最高或最低的成员 -
zRange
– 按索引排序,返回有序集合中一个范围的成员 -
zRangeByScore, zRevRangeByScore
– 按分数排序,返回有序集合中一个范围的成员 -
zRangeByLex
– 从具有相同分数的成员中,返回一个字典范围 -
zRank, zRevRank
– 确定有序集合中成员的索引 -
zRem, zDelete, zRemove
– 从有序集合中删除一个或多个成员 -
zRemRangeByRank, zDeleteRangeByRank
– 在给定索引内删除有序集合中的所有成员 -
zRemRangeByScore, zDeleteRangeByScore, zRemoveRangeByScore
– 删除给定分数内有序集合中的所有成员 -
zRevRange
– 按索引返回有序集合的成员范围,分数从高到低排序 -
zScore
– 获取与有序集合中给定成员相关的分数 -
zunionstore, zUnion
– 添加多个有序集合并将结果有序集合存储在新键中 -
zScan
– 扫描有序集合的成员
11. HyperLogLogs类型相关的方法
-
pfAdd
:将指定元素添加到指定的HyperLogLog中. -
pfCount
:返回HyperLogLog基于对键的观察得到的集合的近似基数. -
pfMerge
: 将N个不同的Hyperloglog合并为一个.
12. 地理空间数据类型(Geocoding)相关的方法
-
geoAdd
:向指定的键添加一个或多个地理空间项。调用此函数时必须使用至少一个
经度、纬度、成员
三元组. -
geoHash
: 检索地理空间索引的一个或多个元素的Geohash字符串. -
geoPos
: 返回每个请求成员的经度、纬度位置. -
geoDist
: 返回地理空间集中两个成员之间的距离。如果传递了单位,它必须是以下值之一:- ‘m’ => 米;‘km’ => 公里;‘mi’ => 英里;‘ft’ => 英尺
-
geoRedius
: 返回具有地理空间信息的集合成员,这些成员位于调用者指定的半径内。 -
geoRadiusByMember
: 此方法与geoRadius相同,只是传递的不是经度和纬度作为“源”,而是传递地理空间集中的现有成员
13. 流类型(Streams)相关的方法
-
xAck
– 获知一个或多个挂起的消息 -
xAdd
– 向一个‘流’中添加消息 -
xClaim
– 获取挂起消息的所有权 -
xDel
– 从一个流中删除一条消息 -
xGroup
– 管理消费者组 -
xInfo
– 获取关于一个流的信息 -
xLen
– 获取一个流的长度 -
xPending
– 检查流中挂起的消息 -
xRange
– 查询流中一个范围内的消息 -
xRead
– 从流中读取消息 -
xReadGroup
– 用一个组和消费者一起读取流消息 -
xRevRange
– 从头到尾查询一条或多条消息 -
xTrim
– 修剪流的大小
14. 发布和订阅相关的方法
-
pSubscribe
– 按模式订阅频道 -
publish
– 向一个频道发布消息 -
subscribe
– 订阅多个频道 -
pubSub
– 进入到发布和订阅的子系统中内省(Introspection)
15. 通用命令相关的方法
-
rawCommand
– 基于Redis服务器执行任何的命令.
16. 脚本(Scripting)相关的方法
-
eval
– 执行一个服务端的LUA脚本 -
evalSha
– 基于脚本的SHA1散列而不是脚本本身,来执行服务端的LUA脚本 -
script
– 通过执行Redis SCRIPT命令对脚本子系统进行各种操作 -
getLastError
– 最新的错误消息(如果有的话) -
clearLastError
– 清楚最新的错误消息 -
_prefix
– 使用phpredis的前缀设置,为值加上前缀的实用方法 -
_unserialize
– 使用所设置的序列化器,对数据进行反序列化的实用方法 -
_serialize
– 使用所设置的序列化器,对数据进行序列化的实用方法
17. 内省(Introspection)相关的方法
-
isConnected
: 确定phpredis对象是否已连接到服务器 -
getHost
: 获取所连接的主机或Unix Domain Sockets -
getPort
: 获取所连接的端口号 -
getDbNum
: 获取phpredis指向的数据库编号 -
getTimeout
: 获取phpredis正在使用的写操作的超时设置 -
getReadTimeout
: 获取phpredis正在使用的读操作的超时设置,如果没有连接到Redis服务器,则返回FALSE -
getPersistentID
: 获得phpredis正在使用的持久化ID -
getAuth
:获取用于认证连接的密码(如果使用Redis 6 acl,则获取用户名和密码).