phpredis使用手册

注:翻译phpredis使用手册https://github.com/phpredis/phpredis,根据谷歌翻译再加上自己的一点见解。尽量日更,学会markdown后会重新排版

类与方法

用法

1.Redis类

2.RedisException类

3.预定义的常量

Redis类

描述:创建Redis客户端

例:$redis = new Redis();

RedisException类

如果无法访问Redis服务器,phpredis会抛出RedisException对象。如果连接 出现问题,Redis服务已关闭,或者redis主机压力过大,则可能发生这种情况。在任何其他不涉及无法访问的服务器(例如key不存在,无效命令等)的问题情况下,phpredis将返回FALSE

预定义的常量

描述:可用的Redis常量

Redis数据类型,由type函数返回

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

连接

1.connect,open - 连接到服务器

2.pconnect,popen - 连接到服务器(持久性、长连接)

3.auth - 向服务器进行身份验证

4.select - 更改当前连接的选定数据库

5.swapdb -  交换两个Redis数据库

6.close - 关闭连接

7.setOption - 设置客户端选项

8.getOption - 获取客户端选项

9.ping - ping服务器

10.echo - 回显给定的字符串

connect,open

描述:连接到Redis实例

参数:

host:string,可以是主机,也可以是unix domain socket

port: int, 可选

timeout:float,以秒为单位的值(可选,默认值为0表示无限制)

reserved: 如果指定了retry_interval,则应为NULL

retry_interval: int, 以毫秒为单位的值(可选)

read_timeout: float,以秒为单位的值(可选,默认为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域套接字。
$ redis - > connect(' 127.0.0.1 ',6379,1,NULL,100); // 1秒超时,重新连接尝试之间延迟100毫秒。

pconnect, popen

说明:连接到Redis实例或重用已与pconnect/popen建立的连接。

在PHP进程结束之前,在请求关闭或结束时不会关闭连接。因此,在连接到一台redis服务器的许多服务器上使用持久连接时,请准备好太多开放FD's errors (这是啥错误?)(特别是在redis服务器端)。

还可以通过host + port + timeout或host + persistent_id或unix socket + timeout来识别多个持久连接。(Unix socket)

此功能在线程版本中不可用。然后,pconnect和popen像它们的非持久等价物一样工作。(指定意思不对)

参数:

host: string host或Unix socket

port: int 可选

timeout: float  以秒为单位的值(可选,默认为0表示不限制)

persistent_id: string 请求的持久连接标识

retry_interval:int 以毫秒为单位的值(可选)

read_timeout:float 以秒为单位的值(可选,默认为0表示不限制)

返回值:

true成功,false出错

$redis->pconnect('127.0.0.1', 6379);
$redis->pconnect('127.0.0.1'); // 端口默认是6379 - 与前一个连接相同.
$redis->pconnect('127.0.0.1', 6379, 2.5); // 2.5秒超时 对于前两个这将是另一个连接
$redis->pconnect('127.0.0.1', 6379, 2.5, 'x'); // x作为persistent_id发送 对于前三个这将是另一个连接
$redis->pconnect('/tmp/redis.sock'); // unix domain socket 这将是另一个连接

auth

描述:使用密码验证连接。警告:密码通过网络以纯文本的形式发送。auth命令

参数:

string: 密码

返回值:

true表示连接通过密码验证,false则不然。

例:

$redis->auth('foobared');

select

描述:更改当前连接中所选择的数据库。select命令

参数:

int dbindex,要切换的数据库编号。

返回值:

true表示成功,false表示失败

例:查看move方法里的例子

swapdb

描述:以原子方式将一个Redis数据库与另一个数据库交换

参数:

int:db1

int:db2

返回值:

bool:true表示成功,false表示失败

注意:需要Redis>=4.0.0

例:

$ redis- > swapdb(0,1); / *以原子方式将DB 0与DB 1交换* /

close

描述:断开与redis实例的链接

注意:关闭持久链接需要phpRedis>=4.2.0

参数:

返回值:

bool:true表示成功,false表示失败。

setOption

描述:设置客户端选项

参数:

设置参数的名称 name

设置参数的值 value

返回值

bool:true表示成功,false表示失败

$ redis - > setOption(Redis :: OPT_SERIALIZER,Redis :: SERIALIZER_NONE);	//不要序列化数据
$ redis - > setOption(Redis :: OPT_SERIALIZER,Redis :: SERIALIZER_PHP);	//使用内置序列化/反序列化
$ redis - > setOption(Redis :: OPT_SERIALIZER,Redis :: SERIALIZER_IGBINARY);	//使用igBinary serialize / unserialize

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

/ * SCAN系列命令的选项,指示是否从用户空结果。如果设置为SCAN_NORETRY(默认值),phpredis 将一次只发出一个SCAN命令,有时会返回一个空的结果数组。如果设置为SCAN_RETRY,phpredis将重试scan命令, 直到键返回或Redis返回零
* /
 $ redis - > setOption( Redis :: OPT_SCAN, Redis :: SCAN_NORETRY);
 $ redis - > setOption( Redis :: OPT_SCAN, Redis :: SCAN_RETRY);

getOption

描述:获取客户端设置

参数:设置的名字 name

返回值:

设置参数的值

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

ping

描述:检查当前连接状态

参数:无

返回值:

string:+PONG表示成功。如上所述,如果连接出错会抛出RedisException对象

echo

描述:向redis发送一个字符串,将会使用相同的字符串回复。

参数:

string要发送的消息

返回值:

string相同的消息

Server

  1. bgRewriteAOF - 异步重写仅附加文件
  2. bgSave - 将数据集异步保存到磁盘(在后台)
  3. config - 获取或设置Redis服务器配置参数
  4. dbSize - 返回所选数据库中的键数
  5. flushAll - 从所有数据库中删除所有密钥
  6. flushDb - 从当前数据库中删除所有键
  7. info - 获取有关服务器的信息和统计信息
  8. lastSave - 获取上次磁盘保存的时间戳
  9. resetStat - 重置info方法返回的统计信息
  10. save - 同步将数据集保存到磁盘(等待完成)
  11. slaveOf - 使服务器成为另一个实例的从属服务器,或将其提升为主服务器
  12. time - 返回当前服务器时间
  13. slowLog - 访问Redis slowLog条目

bgRewriteAOF

描述:开始AOF的后台重写BGREWRITEAOF

参数:无

返回值:true表示成功,false表示失败

$ redis - > bgRewriteAOF();

bgSave

描述:将数据异步的保存到磁盘(在后台)bgSave

参数:无

返回值:true表示成功,false表示失败。如果保存已在运行,则此命令会失败并返回false

$ redis - > bgSave();

config

描述:获取或设置Redis服务器配置参数

参数:

operation(string)   GET或SET

key(对于SET是string,对于GET则是glob模式匹配),相关示例

value可选字符串(仅适用于SET)

返回值:

对于GET返回关联数组,key->value形式

对于SET返回bool

例:

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

dbSize

描述:返回所选数据库键的个数,dbSize

参数:无

返回值:

int 数据库的大小,根据键数

例:

$count = $redis->dbSize();
echo "Redis has $count keys\n";

fullAll

描述:从所有数据库中删除所有键

参数:

async(bool)需要数据版本4.0.0或以上,是否异步

返回值:

bool : 总是true

例:

$redis->flushAll();

flushDb

描述:从当前数据库删除所有键

参数:

async(bool)需要数据版本4.0.0或以上,是否异步

返回值:

bool : 总是true

例:

$redis->flushDb();

info

描述:获取服务器的信息与统计信息,INFO命令

返回提供服务器信息的关联数组,不向info传递参数将会调用标准的redis info命令,该命令返回如下信息:

redis_version    redis服务器版本

arch_bits    架构(32或者64位) 

uptime_in_seconds    自redis服务器启动以来,经过的秒数

uptime_in_days    自redis服务器启动以来,经过的天数

 

connected_clients     已连接客户端的数量(不包括从属服务器的连接数量)

connected_slaves    已连接的从属服务器的数量

 

used_memory    由redis分配的内存数量,以字节(byte)为单位

 

rdb_changes_since_last_save    距离最近一次成功创建持久化文件后,进过了多少秒

rdb_bgsave_in_process    一个标志值,记录服务器是否正在创建RDB文件

rdb_last_save_time     最近一次成功创建RDB文件的UNIX时间戳

 

total_connections_received    服务器已接受的连接请求数量

total_commands_processed     服务器已执行的命令数量

 

role     如果当前服务器没有在复制任何其他服务器,那么这个域的值就是 master ;否则的话,这个域的值就是 slave 。注意,在创建复制链的时候,一个从服务器也可能是另一个服务器的主服务器。

你可以传递各种选项给info,这将修改返回的内容,(例如"COMMANDSTATS", "CPU")

参数:

选项:redis提供的选项(例如"COMMANDSTATUS", "CPU")

例:

$redis->info(); /* 标准的redis INFO 命令 */
$redis->info("COMMANDSTATS"); /* 相关的已运行命令 (>=2.6 only)
$redis->info("CPU"); /* 只是来自 Redis INFO的 CPU信息*/

lastSave

描述:返回上一次磁盘保存的时间戳,lastSave命令

参数:无

返回值:int 时间戳

例:

$redis->lastSave();

resetStat

描述:重置info方法返回的统计信息,CONFIG RESETSTAT命令

这些计数器将会被重置

  • Keyspace hits  键空间命中次数
  • Keyspace misses   键空间不命中次数
  • Number of commands processed   执行命令的总数
  • Number of connections received    连接服务器的次数
  • Number of expired keys   过期key的个数

参数:无

返回值:bool,true表示成功,false表示失败

例:

$redis->resetStat();

save

描述:同步将数据集保存到磁盘(等待直到完成),save命令

参数:无

返回值:true表示成功,false表示失败。如果保存已在运行,则此命令返回false

例:

$redis->save();

slaveOf

描述:改变从服务器的状态,slaveOf命令

参数:主机(string)和端口(int),或没有参数停止作为从服务器。

返回值:true表示成功,false表示失败

例:

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

time

描述:返回当前服务器时间,time命令

参数:无

返回值:如果成功将会返回一个关联数组,其中元素0是unix时间戳,元素1是微秒

例:

$redis->time();

slowLog

描述:获取redis的慢查询,slowLog命令

参数:

Operation(string):可以是GET, LEN, RESET

Length(string),可选的:如果执行的是SLOWLOG GET命令,可以传入一个长度参数

返回值:

slowLog的返回值取决于执行的操作,SLOWLOG GET:redis提供的慢查询数组,SLOWLOG LEN:int慢查询的长度,SLOWLOG RESET :bool,取决于是否成功

例:

// 获取10条慢查询
$redis->slowLog('get', 10);

// 获取默认数量的慢查询
$redis->slowLog('get');

// 重置慢查询
$redis->slowLog('reset');

// 检索慢查询长度
$redis->slowLog('len');

键和字符串

字符串


  • append - 将值附加到键
  • bitCount - 计算字符串中的设置位
  • bitOp - 在字符串之间执行按位运算
  • decr,decrBy - 减少键的值
  • get - 获取密钥的值
  • getBit - 返回存储在key处的字符串值中offset处的位值
  • getRange - 获取存储在密钥中的字符串的子字符串
  • getSet - 设置键的字符串值并返回其旧值
  • incr,incrBy - 增加键的值
  • incrByFloat - 按给定的数量增加键的浮点值
  • mGet,getMultiple - 获取所有给定键的值
  • mSet,mSetNX - 将多个键设置为多个值
  • set - 设置键的字符串值
  • setBit - 设置或清除key中存储的字符串值中offset的位
  • setEx,pSetEx - 设置键的值和到期时间
  • setNx - 仅当密钥不存在时才设置密钥的值
  • setRange - 从指定偏移量开始的键覆盖字符串的一部分
  • strLen - 获取存储在键中的值的长度


get

描述:获取该键的值,get命令

参数:key

返回值:string/bool,如果key不存在返回false,否则返回此键的值

例:

$redis->get('key');

set

描述:给键的值设置为字符串,如果redis >= 2.6.12,你还可以传入扩展选项,如下所示。set命令

参数:

key

value

timeout/options array(可选),如果你传入一个整型,phpredis,会重定向为SETEX,如果你传入有效的数组,将尝试使用Redis> = 2.6.12扩展选项。

返回值:

true表示成功

例:

// 简单的 key -> value 设置
$redis->set('key', 'value');

// 将重定向,实际上调用的是SETEX
$redis->set('key','value', 10);

// 如果key不存在将设置值,生存时间为10秒
$redis->set('key', 'value', Array('nx', 'ex'=>10));

//如果key存在将设置值, 生存时间为1000毫秒
$redis->set('key', 'value', Array('xx', 'px'=>1000));

setEx,pSetEx

描述:将键的值设置为字符串,并设置生存时间。pSetEx生存时间以毫秒为单位。setEx命令pSetEx命令

参数:key ttl value

返回值:true表示命令成功

例:

$redis->setEx('key', 3600, 'value'); // 设置 key → value, 1h的生存时间
$redis->pSetEx('key', 100, 'value'); // 设置 key → value, 0.1s的生存时间

setNx

描述:如果当前数据库没有此键,则将键的值设置为字符串。setNx命令

参数:key value

返回值:true表示命令成功

例:

$redis->setNx('key', 'value'); /* return TRUE */
$redis->setNx('key', 'value'); /* return FALSE */

del,delete,unlink

描述:删除指定的键

参数:键的数组,或者是多个参数,每一个都是一个键。

          注意!如果已连接的redis服务器>=4.0.0,则可以使用unlink方法,与del方法相同,从而删除键。unlink命令是非阻塞的,将异步的执行删除。

返回值:long 删除键的数量

例:

$redis->set('key1', 'val1');
$redis->set('key2', 'val2');
$redis->set('key3', 'val3');
$redis->set('key4', 'val4');

$redis->delete('key1', 'key2'); /* return 2 */
$redis->delete(['key3', 'key4']); /* return 2 */

/* 如果Redis >= 4.0.0 可以使用unlink方法 */
$redis->unlink('key1', 'key2');
$redis->unlink(['key1', 'key2']);

exists

描述:判断键是否存在,exists命令

参数:key

返回值:long key存在的数量

例:

$redis->set('key', 'value');
$redis->exists('key'); /* 1 */
$redis->exists('NonExistingKey'); /* 0 */

$redis->mset(['foo' => 'foo', 'bar' => 'bar', 'baz' => 'baz']);
$redis->exists(['foo', 'bar', 'baz]); /* 3 */
$redis->exists('foo', 'bar', 'baz'); /* 3 */

注意!phpredis<4.0.0时,此函数只接受一个参数,并且返回bool值

incr,incrBy

描述:将存储的数字加一,如果传入第二个参数则将被用作增量,incr命令incrBy命令

参数:

key

value  增量仅适用于incrBy

返回值:

int 新值

例:

$redis->incr('key1'); /* 如果key1不存在则在自增前会设置成0 */
					  /* 现在值为 1了  */

$redis->incr('key1'); /* 2 */
$redis->incr('key1'); /* 3 */
$redis->incr('key1'); /* 4 */

// 将重定向, 实际调用的是 INCRBY
$redis->incr('key1', 10);   /* 14 */

$redis->incrBy('key1', 10); /* 24 */

incrByFloat

描述:以浮点精度增加键,incrByFloat命令

参数:

key

value  (float)增量仅适用于incrBy

返回值:

float  新值

例:

$redis->incrByFloat('key1', 1.5); /* key1不存在, 所以key最终为 1.5 */


$redis->incrByFloat('key1', 1.5); /* 3 */
$redis->incrByFloat('key1', -1.5); /* 1.5 */
$redis->incrByFloat('key1', 2.5); /* 4 */

decr,decrBy

描述:将存储的数字减一,如果传入第二个参数则将被用作减量,decr命令decrBy命令

参数:

key

value  减量仅适用于decrBy

返回值:

int 新值

例:

$redis->decr('key1'); /* 如果key1不存在则在自增前会设置成0  */
					  /* 现在值为 -1  */

$redis->decr('key1'); /* -2 */
$redis->decr('key1'); /* -3 */

// 将会重定向, 实际上调用的是decrBy
$redis->decr('key1', 10);   /* -13 */

$redis->decrBy('key1', 10); /* -23 */

mGet,getMultiple

描述:获取所有指定键的值,如果某个键不存在则为false,mGet命令

参数:array  包含所有键的数组

返回值:array  键对应值得数组

例:

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

getSet

描述:设置一个值并返回该键的上一个值。getSet命令

参数:

key

value  string

返回值:string  此键的前一个值

例:

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

randomKey

描述:返回一个随机的键

参数::无

返回值:string  当前redis中存在的key

例:

$key = $redis->randomKey();
$surprise = $redis->get($key);	//鬼才知道能返回什么

move

描述:将键移动到另一个数据库

参数:

key  将移动的键

dbindex  目标数据库的编号

返回值:

true表示成功,false表示失败

例:

$redis->select(0);	// 切换到 DB 0
$redis->set('x', '42');	// 将42赋给x
$redis->move('x', 1);	// 将x移动到 DB 1
$redis->select(1);	// 切换到 DB 1
$redis->get('x');	// 将会返回 42

rename,renameKey

描述:重命名一个key

参数:string srckey 重命名的key

string dstkey key的新名字

返回值:true表示成功,false表示失败

例:

$redis->set('x', '42');
$redis->rename('x', 'y');
$redis->get('y'); 	// → 42
$redis->get('x'); 	// → `FALSE`

renameNx

描述:与重命名相同,但如果新键名已存在,则不会替换key。这与setNx的行为相同。

expire,setTimeOut,pexpire

描述:设置超时时间,pexpire需要以毫秒为单位

参数:

string:key键名

int:键的生存时间

返回值

bool:true表示成功,否则失败

例:

$redis->set('x', '42');
$redis->setTimeout('x', 3);	// x 将在3秒后消失.
sleep(5);				// 等待5秒
$redis->get('x'); 		// 将会返回false, 因为x已过期.

expireAt,pexpireAt

描述:设置到期日期(时间戳),pexpire需要毫秒的时间戳

参数:

string:key键名

int:Unix时间戳m,key的过期日期。

返回值:

bool:true表示成功,否则失败

例:

$redis->set('x', '42');
$now = time(NULL); // 当前的时间戳
$redis->expireAt('x', $now + 3);	// x将在3秒后消失.
sleep(5);				// 等待5秒
$redis->get('x'); 		// 将会返回false, 因为x已经过期.

keys,getKeys

描述:返回模式匹配后的字符串

参数:

string:使用'*'作为通配符。

返回值:

string数组:返回匹配的键

例:

$allKeys = $redis->keys('*');	// 匹配所有的键.
$keyWithUserPrefix = $redis->keys('user*');

scan

描述:扫描键

参数:

long(引用):初始化为null

string:可选参数,匹配模式

long:可选参数,每次迭代的键数(仅仅对redis是建议)

返回值:

array/bool:返回键的数组,结束返回false

注意:SCAN是RedisCluster的定向节点命令

例:

/* 不启用 Redis::SCAN_RETRY (默认条件) */
$it = NULL;
do {
    // 扫描一些key
    $arr_keys = $redis->scan($it);

    // Redis可能返回空结果, 需要避免
    if ($arr_keys !== FALSE) {
        foreach($arr_keys as $str_key) {
            echo "Here is a key: $str_key\n";
        }
    }
} while ($it > 0);
echo "No more keys to scan!\n";

/* 启用Redis::SCAN_RETRY,使redis空结果时不返回 */
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
$it = NULL;

/* 如果有从服务器返回空结果,phpredis将重试scan命令,因此不要空结果检查*/
while ($arr_keys = $redis->scan($it)) {
    foreach ($arr_keys as $str_key) {
        echo "Here is a key: $str_key\n";
    }
}
echo "No more keys to scan!\n";

object

描述:描述key指向的对象,object命令

参数:

string:要检索的信息,encoding编码,refcount引用次数,idletime空闲时间

string:key

返回值:

string用于编码,long用于引用次数与空闲时间,false表示key不存在

例:

$redis->object("encoding", "l"); // → ziplist
$redis->object("refcount", "l"); // → 1
$redis->object("idletime", "l"); // → 400 (以秒为单位, 精度为10 秒).

type

描述:返回键的数据类型,type命令

参数:key

返回值:

 返回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

描述:将字符串附加到键对应的字符串后,append命令。时间复杂度O(1)

参数:

key 键名

value 附加的字符串

返回值:

int: 追加后值的大小

例:

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

getRange

描述:返回一个大字符串的子字符串,getRange命令

       注意:substr也受支持,但是redis已经弃用了

参数:key,start,end

返回值:

string:子字符串

例:

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

setRange

描述:更改大字符串的小字符串,setRange命令

参数:key键名,offset偏移量,value值

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

例:

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

strLen

描述:获取字符串值得长度,strLen命令

参数:key

返回值:int 长度

例:

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

getBit

描述:从较大字符串中返回一个位,getBit命令

参数:key键名,offset偏移量

返回值:int 位值(0或1)

例:

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

setBit

描述:更改字符串的一个位,setBit命令

参数:key键名,offset偏移量,value bool值或者是int(0或1)

返回值:

int 0或1,原来储存的位

例:

$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") */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值