PHP操作Redis常用技巧
这篇文章主要介绍了PHP操作Redis常用技巧,结合实例形式总结分析了php针对redis的连接、认证、string、hash等操作技巧与注意事项,需要的朋友可以参考下
本文实例讲述了PHP操作Redis常用技巧。分享给大家供大家参考,具体如下:
一、Redis连接与认证
//连接参数:ip、端口、连接超时时间,连接成功返回true,否则返回false $ret = $redis->connect('127.0.0.1', 6379, 30); //密码认证:成功返回true,否则返回false $ret = $redis->auth('123456');
二、String操作
//设置键值:成功返回true,否则返回false $redis->set('mystr', 'Welcome!'); //获取键值:成功返回String类型键值,若key不存在或不是String类型则返回false $ret = $redis->get('mystr'); //从某个key所存储的字符串的指定偏移量开始,替换为另一指定字符串,成功返回替换后新字符串的长度。 $ret = $redis->setRange('mystr', 7, ' to Beijing!'); //获取存储在指定key中字符串的子字符串。 $ret = $redis->getRange('mystr', 0, 6); //设置新值,返回旧值:若key不存在则设置值,返回false $ret = $redis->getSet('mystr', 'hi man'); //一次设置多个键值对:成功返回true。 $ret = $redis->mset(['name' => 'jet', 'age' => 18]); //一次获取多个key的值:返回一个键值对数组,其中不存在的key值为false。 $ret = $redis->mget(['name', 'age']); //设置指定key的值及其过期时间,单位:秒。 //参数:键名,过期时间,键值。成功返回true。 $ret = $redis->setex('name', 10, 'jetwu'); //以毫秒为单位设置指定key的值和过期时间。成功返回true。 $ret = $redis->psetex('name', 10, 'jetwu'); //key的值不存在时,才为其设置值。key不存在且设置成功返回true,否则返回false。 $ret = $redis->setnx('name', 'boby'); //setnx命令的批量操作。只有在给定所有key都不存在的时候才能设置成功,只要其中一个key存在,所有key都无法设置成功。 $ret = $redis->msetnx(['country' => 'China', 'city' => 'Shenzhen']); //获取指定key存储的字符串的长度,key不存在返回0,不为字符串返回false。 $ret = $redis->strlen('name'); //将指定key存储的数字值增加1。若key不存在会先初始化为0再增加1,若key存储的不是整数值则返回false。成功返回key新值。 $ret = $redis->incr('age'); //给指定key存储的数字值增加指定增量值。 $ret = $redis->incrBy('age', 10); //给指定key存储的数字值增加指定浮点数增量。 $ret = $redis->incrByFloat('age', 1.5); //将指定key存储的数字值减一。 $ret = $redis->decr('age'); //将指定key存储的数字值减去指定减量值。 $ret = $redis->decrBy('age', 10); //为指定key追加值到原值末尾,若key不存在则相对于set()函数。 $ret = $redis->append('mystr', 'haha');
三、Hash操作
//为hash表中的字段赋值。成功返回1,失败返回0。若hash表不存在会先创建表再赋值,若字段已存在会覆盖旧值。 $ret = $redis->hSet('user', 'realname', 'jetwu'); //获取hash表中指定字段的值。若hash表不存在则返回false。 $ret = $redis->hGet('user', 'realname'); //查看hash表的某个字段是否存在,存在返回true,否则返回false。 $ret = $redis->hExists('user', 'realname'); //删除hash表的一个字段,不支持删除多个字段。成功返回1,否则返回0。 $ret = $redis->hDel('user', 'realname'); //同时设置某个hash表的多个字段值。成功返回true。 $ret = $redis->hMset('user', ['name' => 'jet', 'age' => 18]); //同时获取某个hash表的多个字段值。其中不存在的字段值为false。 $ret = $redis->hMget('user', ['name', 'age']); //获取某个hash表所有的字段和值。 $ret = $redis->hGetAll('user'); //获取某个hash表所有字段名。hash表不存在时返回空数组,key不为hash表时返回false。 $ret = $redis->hKeys('user'); //获取某个hash表所有字段值。 $ret = $redis->hVals('user'); //为hash表中不存在的字段赋值。若hash表不存在则先创建,若字段已存在则不做任何操作。设置成功返回true,否则返回false。 $ret = $redis->hSetNx('user', 'realname', 'jetwu'); //获取某个hash表的字段数量。若hash表不存在返回0,若key不为hash表则返回false。 $ret = $redis->hLen('user'); //为hash表中的指定字段加上指定增量值,若增量值为负数则相当于减法操作。若hash表不存在则先创建,若字段不存在则先初始化值为0再进行操作,若字段值为字符串则返回false。设置成功返回字段新值。 $ret = $redis->hIncrBy('user', 'age', 10); //为hash表中的指定字段加上指定浮点数增量值。 $ret = $redis->hIncrBy('user', 'age', 1.5);
四、List操作
//从list头部插入一个值。 $ret = $redis->lPush('city', 'guangzhou'); //从list尾部插入一个值。 $ret = $redis->rPush('city', 'guangzhou'); //获取列表指定区间中的元素。0表示列表第一个元素,-1表示最后一个元素,-2表示倒数第二个元素。 $ret = $redis->lrange('city', 0, -1);//查看队列所有元素 //将一个插入已存在的列表头部,列表不存在时操作无效。 $ret = $redis->lPushx('city', 'hangzhou'); //将一个或多个值插入已存在的列表尾部,列表不存在时操作无效。 $ret = $redis->rPushx('city', 'hangzhou'); //移除并返回列表的第一个元素,若key不存在或不是列表则返回false。 $ret = $redis->lPop('city'); //移除并返回列表的最后一个元素,若key不存在或不是列表则返回false。 $ret = $redis->rPop('city'); //移除并获取列表的第一个元素。如果列表没有元素则会阻塞列表直到等待超时或发现可弹出元素为止。 //参数:key,超时时间(单位:秒) //返回值:[0=>key,1=>value],超时返回[] $ret = $redis->blPop('city', 10); //移除并获取列表的最后一个元素。如果列表没有元素则会阻塞列表直到等待超时或发现可弹出元素为止。 //参数:key,超时时间(单位:秒) //返回值:[0=>key,1=>value],超时返回[] $ret = $redis->brPop('city', 10); //移除列表中最后一个元素,将其插入另一个列表头部,并返回这个元素。若源列表没有元素则返回false。 $ret = $redis->rpoplpush('city', 'city2'); //移除列表中最后一个元素,将其插入另一个列表头部,并返回这个元素。如果列表没有元素则会阻塞列表直到等待超时或发现可弹出元素为止。 //参数:源列表,目标列表,超时时间(单位:秒) //超时返回false $ret = $redis->brpoplpush('city', 'city2', 10); //返回列表长度。 $ret = $redis->lLen('city'); //通过索引获取列表中的元素。若索引超出列表范围则返回false。 $ret = $redis->lindex('city', 0); //通过索引设置列表中元素的值。若是索引超出范围,或对一个空列表进行lset操作,则返回false。 $ret = $redis->lSet('city', 2, 'changsha'); //在列表中指定元素前或后面插入元素。若指定元素不在列表中,或列表不存在时,不执行任何操作。 //参数:列表key,Redis::AFTER或Redis::BEFORE,基准元素,插入元素 //返回值:插入成功返回插入后列表元素个数,若基准元素不存在返回-1,若key不存在返回0,若key不是列表返回false。 $ret = $redis->lInsert('city', Redis::AFTER, 'changsha', 'nanjing'); //根据第三个参数count的值,移除列表中与参数value相等的元素。 //count > 0 : 从表头开始向表尾搜索,移除与value相等的元素,数量为count。 //count < 0 : 从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值。 //count = 0 : 移除表中所有与value相等的值。 //返回实际删除元素个数 $ret = $redis->lrem('city', 'guangzhou', -2); //对一个列表进行修剪,只保留指定区间的元素,其他元素都删除。成功返回true。 $ret = $redis->ltrim('city', 1, 4);
五、Set操作
//将一个元素加入集合,已经存在集合中的元素则忽略。若集合不存在则先创建,若key不是集合类型则返回false,若元素已存在返回0,插入成功返回1。 $ret = $redis->sAdd('myset', 'hello'); //返回集合中所有成员。 $ret = $redis->sMembers('myset'); //判断指定元素是否是指定集合的成员,是返回true,否则返回false。 $ret = $redis->sismember('myset', 'hello'); //返回集合中元素的数量。 $ret = $redis->scard('myset'); //移除并返回集合中的一个随机元素。 $ret = $redis->sPop('myset'); //返回集合中的一个或多个随机成员元素,返回元素的数量和情况由函数的第二个参数count决定: //如果count为正数,且小于集合基数,那么命令返回一个包含count个元素的数组,数组中的元素各不相同。 //如果count大于等于集合基数,那么返回整个集合。 //如果count为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为count的绝对值。 $ret = $redis->sRandMember('myset', 2); //移除集合中指定的一个元素,忽略不存在的元素。删除成功返回1,否则返回0。 $ret = $redis->srem('myset', 'hello'); //迭代集合中的元素。 //参数:key,迭代器变量,匹配模式,每次返回元素数量(默认为10个) $ret = $redis->sscan('myset', $it, 'a*', 5); //将指定成员从一个源集合移动到一个目的集合。若源集合不存在或不包含指定元素则不做任何操作,返回false。 //参数:源集合,目标集合,移动元素 $ret = $redis->sMove('myset', 'myset2', 'aaa'); //返回所有给定集合之间的差集,不存在的集合视为空集。 $ret = $redis->sDiff('myset', 'myset2', 'myset3'); //将所有给定集合之间的差集存储在指定的目的集合中。若目的集合已存在则覆盖它。返回差集元素个数。 //参数:第一个参数为目标集合,存储差集。 $ret = $redis->sDiffStore('myset3', 'myset', 'myset2'); //返回所有给定集合的交集,不存在的集合视为空集。 $ret = $redis->sInter('myset', 'myset2', 'myset3'); //将所有给定集合的交集存储在指定的目的集合中。若目的集合已存在则覆盖它。返回交集元素个数。 //参数:第一个参数为目标集合,存储交集。 $ret = $redis->sInterStore('myset4', 'myset', 'myset2', 'myset3'); //返回所有给定集合的并集,不存在的集合视为空集。 $ret = $redis->sUnion('myset', 'myset2', 'myset3'); //将所有给定集合的并集存储在指定的目的集合中。若目的集合已存在则覆盖它。返回并集元素个数。 //参数:第一个参数为目标集合,存储并集。 $ret = $redis->sUnionStore('myset4', 'myset', 'myset2', 'myset3');
六、Zset操作
//将一个或多个成员元素及其分数值加入到有序集当中。如果某个成员已经是有序集的成员,则更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。分数值可以是整数值或双精度浮点数。 $ret = $redis->zAdd('scores', 98, 'English', 90, 'physics'); //返回有序集中指定区间内的成员。成员按分数值递增排序,分数值相同的则按字典序来排序。 //参数:第四个参数表示是否返回各个元素的分数值,默认为false。 $ret = $redis->zRange('scores', 0, -1, true);//查看Zset所有成员以及它们各自的分数值 //返回有序集中指定区间内的成员。成员按分数值递减排序,分数值相同的则按字典序的逆序来排序。 $ret = $redis->zReverseRange('scores', 0, -1, true); //返回有序集中指定分数区间的成员列表,按分数值递增排序,分数值相同的则按字典序来排序。默认使用闭区间。 $ret = $redis->zRangeByScore('scores', 90, 100, ['withscores'=>true]); //返回有序集中指定分数区间的成员列表,按分数值递减排序,分数值相同的则按字典序的逆序来排序。注意,区间表示的时候大值在前,小值在后,默认使用闭区间。 $ret = $redis->zRevRangeByScore('scores', 100, 90, ['withscores'=>true]); //迭代有序集合中的元素。 //返回值:[元素名=>分数值,,..] $ret = $redis->zscan('scores', $it, '', 10); //返回指定有序集的元素数量。 $ret = $redis->zCard('scores'); //返回有序集中指定分数区间的成员数量。 $ret = $redis->zCount('scores', 90, 100); //返回有序集中指定成员的分数值。若成员不存在则返回false。 $ret = $redis->zScore('scores', 'math'); //返回有序集中指定成员的排名,按分数值递增排序。分数值最小者排名为0。 $ret = $redis->zRank('scores', 'chemistry'); //返回有序集中指定成员的排名,按分数值递减排序。分数值最大者排名为0。 $ret = $redis->zRevRank('scores', 'chemistry'); //移除有序集中的一个或多个成员,忽略不存在的成员。返回删除的元素个数。 $ret = $redis->zRem('scores', 'chemistry', 'English'); //移除有序集中指定排名区间的所有成员。 $ret = $redis->zRemRangeByRank('scores', 0, 2); //移除有序集中指定分数值区间的所有成员。 $ret = $redis->zRemRangeByScore('scores', 80, 90); //对有序集中指定成员的分数值增加指定增量值。若为负数则做减法,若有序集不存在则先创建,若有序集中没有对应成员则先添加,最后再操作。 $ret = $redis->zIncrBy('scores', 2, 'Chinese'); //计算给定一个或多个有序集的交集,并将其存储到一个目的有序集中。结果集中某个成员的分数值是所有给定集下该成员分数值之和。 $ret = $redis->zinterstore('zset3', 'zset2', 'zset1'); //计算给定一个或多个有序集的并集,并将其存储到一个目的有序集中。结果集中某个成员的分数值是所有给定集下该成员分数值之和。 $ret = $redis->zunionstore('zset3', 'zset2', 'zset1');
相关推荐:
以上是PHP操作Redis常用技巧的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP在现代Web开发中仍然重要,尤其在内容管理和电子商务平台。1)PHP拥有丰富的生态系统和强大框架支持,如Laravel和Symfony。2)性能优化可通过OPcache和Nginx实现。3)PHP8.0引入JIT编译器,提升性能。4)云原生应用通过Docker和Kubernetes部署,提高灵活性和可扩展性。

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP用于构建动态网站,其核心功能包括:1.生成动态内容,通过与数据库对接实时生成网页;2.处理用户交互和表单提交,验证输入并响应操作;3.管理会话和用户认证,提供个性化体验;4.优化性能和遵循最佳实践,提升网站效率和安全性。

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP成为许多网站首选技术栈的原因包括其易用性、强大社区支持和广泛应用。1)易于学习和使用,适合初学者。2)拥有庞大的开发者社区,资源丰富。3)广泛应用于WordPress、Drupal等平台。4)与Web服务器紧密集成,简化开发部署。
