首页 > php学习 > php操作redis
2019
09-10

php操作redis

redis扩展模块下载地址:https://pecl.php.net/package/redis

Redis类和RedisException类

Redis类用于创建Redis客户端:$redis=new Redis();

如果无法访问Redis服务器,会抛出RedisException异常对象(连接问题,Redis服务已关闭,或者redis主机过载等),在任何其他不涉及无法访问的服务器(如密钥不正确,无效命令等)的情况下,将返回FALSE

预定义常量

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类创建的Redis客户端对象连接redis:

连接到redis服务器:

$redis->connect($host,$port=6379,$timeout=0,$reserved,$retry_interval,$read_timeout)

$redis->connect($host,$port=6379,$timeout=0,$reserved,$retry_interval,$read_timeout)
    使用短连接连接到Redis实例
    $host:字符串,可以是ip地址主机,也可以是unix域套接字,从版本5.0.0开始,可以指定schema
    $port:int数字,redis服务器的端口号
    $timeout:float浮点数,连接超时时间,以秒为单位的值(默认为0表示无限制)
    reserved: 如果设置了retry_interval那么该值应该设置为NULL
    retry_interval: int数字, 重试间隔,以毫秒为单位的值
    read_timeout: float浮点数,读超时时间,以秒为单位的值(默认为0表示无限制)
    脚本结束之后连接就释放了

$redis->pconnect($host,$port=6379,$timeout=0,$persistent_id,$retry_interval,$read_timeout)

    使用长连接连接到Redis实例或重用已与pconnect建立的连接
    从版本4.2.1开始,通过将INI变量redis.pconnect.pooling_enabled设置为1,可以使用连接池,此功能在线程版本中不可用
    $persistent_id:string字符串。请求的持久连接的标识
    脚本结束之后连接不释放,连接保持在php-fpm进程中

1.pconnect方法建立后的连接并不随着一次php执行的结束而关闭,而是依赖于php-fpm进程,php-fpm进程不死,连接就一直存在,直到空闲超时自动断开。

2.使用pconnect代替connect,可以减少频繁建立redis连接的消耗,适用于高并发下PHP请求Redis。

3.如果使用pconnect,close的作用仅是使当前php不能再进行redis请求,但无法真正关闭redis长连接,连接在后续请求中仍然会被重用,直至fpm进程生命周期结束

    $redis->connect('127.0.0.1',5678);  //通过5678端口连接redis服务器
    $redis->connect('tls://127.0.0.1 '); //启用传输级安全性
    $redis->connect('/tmp/redis.sock'); // unix域套接字
    $redis->connect('127.0.0.1',6379,1,NULL,100); //1秒超时,重新连接尝试之间延迟100毫秒
    $redis->pconnect('127.0.0.1',6379,2.5,'X'); // x作为persistent_id发送

$redis->swapdb(int $db1,int $db2):以原子方式将Redis的一个数据库与另一个数据库交换

$redis->close():断开与Redis实例的连接

$redis->ping([string $message]):不提供$message时返回TRUE,否则返回参数值

剩余的操作命令和redis的命令基本相同,如设置key,$redis->set('key_name','value')。

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。