首页 > 数据库 >PHP 操作redis 详细讲解转的

PHP 操作redis 详细讲解转的

时间:2023-10-12 09:44:06浏览次数:46  
标签:mset string dump redis key 讲解 array PHP

phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系

很有用;以下是redis官方提供的命令使用技巧:https://www.clw9335.com/gl/719374.html

下载地址如下:

https://github.com/owlient/phpredis(支持redis 2.0.4)

Redis::__construct构造函数
$redis = new Redis();

connect, open 链接redis服务
参数
host: string,服务地址
port: int,端口号
timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
注: 在redis.conf中也有时间,默认为300

pconnect, popen 不会主动关闭的链接
参考上面

setOption 设置redis模式

getOption 查看redis设置的模式

ping 查看连接状态

 

KEY相关操作

DEL

移除给定的一个或多个key

如果key不存在,则忽略该命令。

时间复杂度:
O(N),N为要移除的key的数量。 移除单个字符串类型的key,时间复杂度为O(1)。 移除单个列表、集合、有序集合或哈希表类型的key,时间复杂度为O(M),M为以上数据结构内的元素数量。
返回值:
被移除key的数量。

 

复制代码 复制代码 复制代码
//DEL
# 情况1: 删除单个key
$redis->set('myname','ikodota');
echo $redis->get('myname').'<br>'; # 返回:ikodota

$redis->del('myname');# 返回 TRUE(1)
var_dump($redis->get('myname')); # 返回 bool(false)

# 情况2: 删除一个不存在的key
if(!$redis->exists('fake_key')) # 不存在
var_dump($redis->del('fake_key')); # 返回 int(0)

# 情况3: 同时删除多个key
$array_mset=array('first_key'=>'first_val',
'second_key'=>'second_val',
'third_key'=>'third_val');
$redis->mset($array_mset); #用MSET一次储存多个值
$array_mget=array('first_key','second_key','third_key');
var_dump($redis->mget($array_mget)); #一次返回多个值 //array(3) { [0]=> string(9) "first_val" [1]=> string(10) "second_val" [2]=> string(9) "third_val" }

$redis->del($array_mget); #同时删除多个key
var_dump($redis->mget($array_mget)); #返回 array(3) { [0]=> bool(false) [1]=> bool(false) [2]=> bool(false) }
复制代码 复制代码 复制代码

 

KEYS
KEYS pattern 
查找符合给定模式的key
KEYS *命中数据库中所有keyKEYS h?llo命中hello, hallo and hxllo等。 KEYS h*llo命中hlloheeeeello等。 KEYS h[ae]llo命中hellohallo,但不命中hillo

特殊符号用"\"隔开

时间复杂度:
O(N),N为数据库中key的数量。
返回值:
符合给定模式的key列表。

警告 :KEYS的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的key,你最好还是用集合(Set)

 

复制代码 复制代码 复制代码
//KEYS
#$redis->FLUSHALL();
$array_mset_keys=array('one'=>'1',
'two'=>'2',
'three '=>'3',
'four'=>'4');
$redis->mset($array_mset_keys); #用MSET一次储存多个值
var_dump($redis->keys('*o*')); //array(3) { [0]=> string(4) "four" [1]=> string(3) "two" [2]=> string(3) "one" }
var_dump($redis->keys('t??')); //array(1) { [0]=> string(3) "two" }
var_dump($redis->keys('t[w]*')); //array(1) { [0]=> string(3) "two" }
print_r($redis->keys('*')); //Array ( [0] => four [1] => three [2] => two [3] => one )
复制代码 复制代码 复制代码

 

RANDOMKEY

从当前数据库中随机返回(不删除)一个key

时间复杂度:
O(1)
返回值:
当数据库不为空时,返回一个key。 当数据库为空时,返回nil。

 

复制代码 复制代码 复制代码
//RANDOMKEY
$redis->FLUSHALL();
# 情况1:数据库不为空
$array_mset_randomkey=array('fruit'=>'apple',
'drink'=>'beer',
'food'=>'cookis');
$redis->mset($array_mset_randomkey);
echo $redis->randomkey();
print_r($redis->keys('*')); # 查看数据库内所有key,证明RANDOMKEY并不删除key//Array ( [0] => food [1] => drink [2] => fruit )

# 情况2:数据库为空
$redis->flushdb(); # 删除当前数据库所有key
var_dump($redis-> randomkey()); //bool(false)
复制代码 复制代码 复制代码

 

TTL
TTL key

返回给定key的剩余生存时间(time to live)(以秒为单位)。

时间复杂度:
O(1)
返回值:
key的剩余生存时间(以秒为单位)。 当key不存在或没有设置生存时间时,返回-1 。

 

复制代码 复制代码 复制代码
//TTL
# 情况1:带TTL的key
$redis->flushdb();
//$redis->set('name','ikodota'); # 设置一个key
$redis->expire('name',30); # 设置生存时间为30秒 //return (integer) 1
echo $redis->get('name'); //return ikodota
echo $redis->ttl('name'); //(integer) 25

//echo $redis->ttl('name'); # 30秒过去,name过期 //(integer) -1
var_dump($redis->get('name')); # 过期的key将被删除 //return bool(false);

# 情况2:不带TTL的key
$redis->set('site','wikipedia.org');//OK
var_dump($redis->ttl('site'));//int(-1)

# 情况3:不存在的key
$redis->EXISTS('not_exists_key');//int(0)
var_dump($redis->TTL('not_exists_key'));//int(-1)
复制代码 复制代码 复制代码

 

EXISTS
EXISTS key

检查给定key是否存在。

时间复杂度:
O(1)
返回值:
key存在,返回1,否则返回0

标签:mset,string,dump,redis,key,讲解,array,PHP
From: https://www.cnblogs.com/zx8868/p/17758759.html

相关文章

  • jQuery能做到,PHP能做到,C#也能做到
    题目有些大,但文中谈到的问题很小;看似表扬C#,实际不是。这个小问题来自这样的应用场景——以HTTPPOST的方式调用第三方API,第三方API不支持JSON传参,只能通过URLquerystring方式传参(a=1&b=2)。假设API的地址是https://www.clw9335.com/gl/index-htm-page-9.html,需要传递的参数是us......
  • php实现一个简单的购物网站
    实现一个简单的购物网站一、考试时间:8小时二、开发工具:DW三、数据库:见附件四、需要实现的页面:https://www.clw9335.com/Index:浏览商品页面,显示商品列表,用户可以点击“购买“。ViewCart:查看购物车页面,显示已购买的商品信息,可以点击“删除“已买的商品ViewAccount:查看个人账......
  • Redis学习--------分片集群、散列插槽、集群伸缩、故障转移
    Redis学习--------分片集群、散列插槽、集群伸缩、故障转移https://blog.csdn.net/qq_43719634/article/details/124911627Redis集群添加新节点(水平扩展)、删除其中一个节点https://blog.csdn.net/qq_33417321/article/details/119518848 ......
  • Redis 持久化
    现在大家都习惯与用Redis作为缓存系统,并且在其中放入常用的热点数据,从而减少直接对数据库访问的操作。Redis持久化就是将Redis内存数据永久存储到磁盘中的操作Redis提供的两种持久化方式RDB(RedisDataBase)在不同间隔时间点将Redis内存数据生成快照并存储到磁盘中(存储......
  • Redis学习之Redisson实现可重入锁
    如何实现可重入锁目的:保证同一个线程可以多次获取同一把锁解决思路:在锁的value中额外保存当前线程获取锁的次数,每次获取锁+1、释放锁-1,当次数为0时才真正删除key。采用hash结构来存储锁信息,如图:流程如下:注意:所有的判断和操作都需要使用Lua脚本来保证原子性每......
  • 【环境搭建】phpstudy显示目录列表
      问题来源新版本的PHPStudy访问127.0.0.1不再像以前版本一样显示目录列表了解决办法打开vhosts.conf将图中标记出来的一行OptionsFollowSymLinksExecCGI改成Options+Indexes+FollowSymLinks+ExecCGI重启Apache后访问即可。 分类: 环境搭建......
  • YOLOv8+DeepSORT多目标车辆跟踪(车辆检测+跟踪+车辆计数)(内附免费资源+部署讲解)
    https://blog.csdn.net/Little_Carter/article/details/133610076目录一、前言二、开发环境(前提条件)三、环境搭建教程3.1、创建虚拟环境3.2、选择虚拟环境并安装所需要的包3.3、运行代码步骤3.3.1、克隆git储存库3.3.2、转到克隆库的文件夹下3.3.3、安装依赖项3.3.4......
  • Centos7部署php项目
    Centos7部署php项目一、安装NGINX添加nginx源rpm-Uvhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm安装并启动nginxyuminstallnginxsystemctlenable--nownginx//启动二、安装MySQL安装并启动MySQLyuminsta......
  • redis-cluster群集在线设置密码【原创】
    1、在线设置密码redis-cli-p7001-cconfigsetmasterauthyourpasswordconfigsetrequirepassyourpasswordauthyourpasswordconfigrewrite#查看密码configgetrequirepass#连接客户端redis-cli-c-ayourpassword如果想删除密码#清除密码configsetre......
  • 传奇服务端Mirserver功能讲解
    DBServer(数据库服务端)ConnectionFDB(人物数据库,数据库格式为传奇自定义格式)Log(角色选择服务端日志)AddrTable.txt(IP地址配置)!IdList.txt(缴费账号列表,!Setup.exe中ServiceMode=TRUE时起作用)!ServerInfo.txt(IP地址配置)DBServer.exe(数据库主程序)DBSrc.ini(数据库主程序配......