这篇文章主要介绍了PHP操作Redis常用技巧,结合实例形式总结分析了php针对redis的连接、认证、string、hash等操作技巧与注意事项,需要的朋友可以参考下

本文实例讲述了PHP操作Redis常用技巧。分享给大家供大家参考,具体如下:

一、Redis连接与认证

  1. //连接参数:ip、端口、连接超时时间,连接成功返回true,否则返回false
  2.  
  3. $ret = $redis->connect('127.0.0.1', 6379, 30);
  4.  
  5. //密码认证:成功返回true,否则返回false
  6.  
  7. $ret = $redis->auth('123456');

二、String操作

  1. //设置键值:成功返回true,否则返回false
  2.  
  3. $redis->set('mystr', 'Welcome!');
  4.  
  5. //获取键值:成功返回String类型键值,若key不存在或不是String类型则返回false
  6.  
  7. $ret = $redis->get('mystr');
  8.  
  9. //从某个key所存储的字符串的指定偏移量开始,替换为另一指定字符串,成功返回替换后新字符串的长度。
  10.  
  11. $ret = $redis->setRange('mystr', 7, ' to Beijing!');
  12.  
  13. //获取存储在指定key中字符串的子字符串。
  14.  
  15. $ret = $redis->getRange('mystr', 0, 6);
  16.  
  17. //设置新值,返回旧值:若key不存在则设置值,返回false
  18.  
  19. $ret = $redis->getSet('mystr', 'hi man');
  20.  
  21. //一次设置多个键值对:成功返回true。
  22.  
  23. $ret = $redis->mset(['name' => 'jet', 'age' => 18]);
  24.  
  25. //一次获取多个key的值:返回一个键值对数组,其中不存在的key值为false。
  26.  
  27. $ret = $redis->mget(['name', 'age']);
  28.  
  29. //设置指定key的值及其过期时间,单位:秒。
  30.  
  31. //参数:键名,过期时间,键值。成功返回true。
  32.  
  33. $ret = $redis->setex('name', 10, 'jetwu');
  34.  
  35. //以毫秒为单位设置指定key的值和过期时间。成功返回true。
  36.  
  37. $ret = $redis->psetex('name', 10, 'jetwu');
  38.  
  39. //key的值不存在时,才为其设置值。key不存在且设置成功返回true,否则返回false。
  40.  
  41. $ret = $redis->setnx('name', 'boby');
  42.  
  43. //setnx命令的批量操作。只有在给定所有key都不存在的时候才能设置成功,只要其中一个key存在,所有key都无法设置成功。
  44.  
  45. $ret = $redis->msetnx(['country' => 'China', 'city' => 'Shenzhen']);
  46.  
  47. //获取指定key存储的字符串的长度,key不存在返回0,不为字符串返回false。
  48.  
  49. $ret = $redis->strlen('name');
  50.  
  51. //将指定key存储的数字值增加1。若key不存在会先初始化为0再增加1,若key存储的不是整数值则返回false。成功返回key新值。
  52.  
  53. $ret = $redis->incr('age');
  54.  
  55. //给指定key存储的数字值增加指定增量值。
  56.  
  57. $ret = $redis->incrBy('age', 10);
  58.  
  59. //给指定key存储的数字值增加指定浮点数增量。
  60.  
  61. $ret = $redis->incrByFloat('age', 1.5);
  62.  
  63. //将指定key存储的数字值减一。
  64.  
  65. $ret = $redis->decr('age');
  66.  
  67. //将指定key存储的数字值减去指定减量值。
  68.  
  69. $ret = $redis->decrBy('age', 10);
  70.  
  71. //为指定key追加值到原值末尾,若key不存在则相对于set()函数。
  72.  
  73. $ret = $redis->append('mystr', 'haha');


三、Hash操作

  1. //为hash表中的字段赋值。成功返回1,失败返回0。若hash表不存在会先创建表再赋值,若字段已存在会覆盖旧值。
  2.  
  3. $ret = $redis->hSet('user', 'realname', 'jetwu');
  4.  
  5. //获取hash表中指定字段的值。若hash表不存在则返回false。
  6.  
  7. $ret = $redis->hGet('user', 'realname');
  8.  
  9. //查看hash表的某个字段是否存在,存在返回true,否则返回false。
  10.  
  11. $ret = $redis->hExists('user', 'realname');
  12.  
  13. //删除hash表的一个字段,不支持删除多个字段。成功返回1,否则返回0。
  14.  
  15. $ret = $redis->hDel('user', 'realname');
  16.  
  17. //同时设置某个hash表的多个字段值。成功返回true。
  18.  
  19. $ret = $redis->hMset('user', ['name' => 'jet', 'age' => 18]);
  20.  
  21. //同时获取某个hash表的多个字段值。其中不存在的字段值为false。
  22.  
  23. $ret = $redis->hMget('user', ['name', 'age']);
  24.  
  25. //获取某个hash表所有的字段和值。
  26.  
  27. $ret = $redis->hGetAll('user');
  28.  
  29. //获取某个hash表所有字段名。hash表不存在时返回空数组,key不为hash表时返回false。
  30.  
  31. $ret = $redis->hKeys('user');
  32.  
  33. //获取某个hash表所有字段值。
  34.  
  35. $ret = $redis->hVals('user');
  36.  
  37. //为hash表中不存在的字段赋值。若hash表不存在则先创建,若字段已存在则不做任何操作。设置成功返回true,否则返回false。
  38.  
  39. $ret = $redis->hSetNx('user', 'realname', 'jetwu');
  40.  
  41. //获取某个hash表的字段数量。若hash表不存在返回0,若key不为hash表则返回false。
  42.  
  43. $ret = $redis->hLen('user');
  44.  
  45. //为hash表中的指定字段加上指定增量值,若增量值为负数则相当于减法操作。若hash表不存在则先创建,若字段不存在则先初始化值为0再进行操作,若字段值为字符串则返回false。设置成功返回字段新值。
  46.  
  47. $ret = $redis->hIncrBy('user', 'age', 10);
  48.  
  49. //为hash表中的指定字段加上指定浮点数增量值。
  50.  
  51. $ret = $redis->hIncrBy('user', 'age', 1.5);


四、List操作

  1. //从list头部插入一个值。
  2.  
  3. $ret = $redis->lPush('city', 'guangzhou');
  4.  
  5. //从list尾部插入一个值。
  6.  
  7. $ret = $redis->rPush('city', 'guangzhou');
  8.  
  9. //获取列表指定区间中的元素。0表示列表第一个元素,-1表示最后一个元素,-2表示倒数第二个元素。
  10.  
  11. $ret = $redis->lrange('city', 0, -1);//查看队列所有元素
  12.  
  13. //将一个插入已存在的列表头部,列表不存在时操作无效。
  14.  
  15. $ret = $redis->lPushx('city', 'hangzhou');
  16.  
  17. //将一个或多个值插入已存在的列表尾部,列表不存在时操作无效。
  18.  
  19. $ret = $redis->rPushx('city', 'hangzhou');
  20.  
  21. //移除并返回列表的第一个元素,若key不存在或不是列表则返回false。
  22.  
  23. $ret = $redis->lPop('city');
  24.  
  25. //移除并返回列表的最后一个元素,若key不存在或不是列表则返回false。
  26.  
  27. $ret = $redis->rPop('city');
  28.  
  29. //移除并获取列表的第一个元素。如果列表没有元素则会阻塞列表直到等待超时或发现可弹出元素为止。
  30.  
  31. //参数:key,超时时间(单位:秒)
  32.  
  33. //返回值:[0=>key,1=>value],超时返回[]
  34.  
  35. $ret = $redis->blPop('city', 10);
  36.  
  37. //移除并获取列表的最后一个元素。如果列表没有元素则会阻塞列表直到等待超时或发现可弹出元素为止。
  38.  
  39. //参数:key,超时时间(单位:秒)
  40.  
  41. //返回值:[0=>key,1=>value],超时返回[]
  42.  
  43. $ret = $redis->brPop('city', 10);
  44.  
  45. //移除列表中最后一个元素,将其插入另一个列表头部,并返回这个元素。若源列表没有元素则返回false。
  46.  
  47. $ret = $redis->rpoplpush('city', 'city2');
  48.  
  49. //移除列表中最后一个元素,将其插入另一个列表头部,并返回这个元素。如果列表没有元素则会阻塞列表直到等待超时或发现可弹出元素为止。
  50.  
  51. //参数:源列表,目标列表,超时时间(单位:秒)
  52.  
  53. //超时返回false
  54.  
  55. $ret = $redis->brpoplpush('city', 'city2', 10);
  56.  
  57. //返回列表长度。
  58.  
  59. $ret = $redis->lLen('city');
  60.  
  61. //通过索引获取列表中的元素。若索引超出列表范围则返回false。
  62.  
  63. $ret = $redis->lindex('city', 0);
  64.  
  65. //通过索引设置列表中元素的值。若是索引超出范围,或对一个空列表进行lset操作,则返回false。
  66.  
  67. $ret = $redis->lSet('city', 2, 'changsha');
  68.  
  69. //在列表中指定元素前或后面插入元素。若指定元素不在列表中,或列表不存在时,不执行任何操作。
  70.  
  71. //参数:列表key,Redis::AFTER或Redis::BEFORE,基准元素,插入元素
  72.  
  73. //返回值:插入成功返回插入后列表元素个数,若基准元素不存在返回-1,若key不存在返回0,若key不是列表返回false。
  74.  
  75. $ret = $redis->lInsert('city', Redis::AFTER, 'changsha', 'nanjing');
  76.  
  77. //根据第三个参数count的值,移除列表中与参数value相等的元素。
  78.  
  79. //count > 0 : 从表头开始向表尾搜索,移除与value相等的元素,数量为count。
  80.  
  81. //count < 0 : 从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值。
  82.  
  83. //count = 0 : 移除表中所有与value相等的值。
  84.  
  85. //返回实际删除元素个数
  86.  
  87. $ret = $redis->lrem('city', 'guangzhou', -2);
  88.  
  89. //对一个列表进行修剪,只保留指定区间的元素,其他元素都删除。成功返回true。
  90.  
  91. $ret = $redis->ltrim('city', 1, 4);


五、Set操作

  1. //将一个元素加入集合,已经存在集合中的元素则忽略。若集合不存在则先创建,若key不是集合类型则返回false,若元素已存在返回0,插入成功返回1。
  2.  
  3. $ret = $redis->sAdd('myset', 'hello');
  4.  
  5. //返回集合中所有成员。
  6.  
  7. $ret = $redis->sMembers('myset');
  8.  
  9. //判断指定元素是否是指定集合的成员,是返回true,否则返回false。
  10.  
  11. $ret = $redis->sismember('myset', 'hello');
  12.  
  13. //返回集合中元素的数量。
  14.  
  15. $ret = $redis->scard('myset');
  16.  
  17. //移除并返回集合中的一个随机元素。
  18.  
  19. $ret = $redis->sPop('myset');
  20.  
  21. //返回集合中的一个或多个随机成员元素,返回元素的数量和情况由函数的第二个参数count决定:
  22.  
  23. //如果count为正数,且小于集合基数,那么命令返回一个包含count个元素的数组,数组中的元素各不相同。
  24.  
  25. //如果count大于等于集合基数,那么返回整个集合。
  26.  
  27. //如果count为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为count的绝对值。
  28.  
  29. $ret = $redis->sRandMember('myset', 2);
  30.  
  31. //移除集合中指定的一个元素,忽略不存在的元素。删除成功返回1,否则返回0。
  32.  
  33. $ret = $redis->srem('myset', 'hello');
  34.  
  35. //迭代集合中的元素。
  36.  
  37. //参数:key,迭代器变量,匹配模式,每次返回元素数量(默认为10个)
  38.  
  39. $ret = $redis->sscan('myset', $it, 'a*', 5);
  40.  
  41. //将指定成员从一个源集合移动到一个目的集合。若源集合不存在或不包含指定元素则不做任何操作,返回false。
  42.  
  43. //参数:源集合,目标集合,移动元素
  44.  
  45. $ret = $redis->sMove('myset', 'myset2', 'aaa');
  46.  
  47. //返回所有给定集合之间的差集,不存在的集合视为空集。
  48.  
  49. $ret = $redis->sDiff('myset', 'myset2', 'myset3');
  50.  
  51. //将所有给定集合之间的差集存储在指定的目的集合中。若目的集合已存在则覆盖它。返回差集元素个数。
  52.  
  53. //参数:第一个参数为目标集合,存储差集。
  54.  
  55. $ret = $redis->sDiffStore('myset3', 'myset', 'myset2');
  56.  
  57. //返回所有给定集合的交集,不存在的集合视为空集。
  58.  
  59. $ret = $redis->sInter('myset', 'myset2', 'myset3');
  60.  
  61. //将所有给定集合的交集存储在指定的目的集合中。若目的集合已存在则覆盖它。返回交集元素个数。
  62.  
  63. //参数:第一个参数为目标集合,存储交集。
  64.  
  65. $ret = $redis->sInterStore('myset4', 'myset', 'myset2', 'myset3');
  66.  
  67. //返回所有给定集合的并集,不存在的集合视为空集。
  68.  
  69. $ret = $redis->sUnion('myset', 'myset2', 'myset3');
  70.  
  71. //将所有给定集合的并集存储在指定的目的集合中。若目的集合已存在则覆盖它。返回并集元素个数。
  72.  
  73. //参数:第一个参数为目标集合,存储并集。
  74.  
  75. $ret = $redis->sUnionStore('myset4', 'myset', 'myset2', 'myset3');


六、Zset操作

  1. //将一个或多个成员元素及其分数值加入到有序集当中。如果某个成员已经是有序集的成员,则更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。分数值可以是整数值或双精度浮点数。
  2.  
  3. $ret = $redis->zAdd('scores', 98, 'English', 90, 'physics');
  4.  
  5. //返回有序集中指定区间内的成员。成员按分数值递增排序,分数值相同的则按字典序来排序。
  6.  
  7. //参数:第四个参数表示是否返回各个元素的分数值,默认为false。
  8.  
  9. $ret = $redis->zRange('scores', 0, -1, true);//查看Zset所有成员以及它们各自的分数值
  10.  
  11. //返回有序集中指定区间内的成员。成员按分数值递减排序,分数值相同的则按字典序的逆序来排序。
  12.  
  13. $ret = $redis->zReverseRange('scores', 0, -1, true);
  14.  
  15. //返回有序集中指定分数区间的成员列表,按分数值递增排序,分数值相同的则按字典序来排序。默认使用闭区间。
  16.  
  17. $ret = $redis->zRangeByScore('scores', 90, 100, ['withscores'=>true]);
  18.  
  19. //返回有序集中指定分数区间的成员列表,按分数值递减排序,分数值相同的则按字典序的逆序来排序。注意,区间表示的时候大值在前,小值在后,默认使用闭区间。
  20.  
  21. $ret = $redis->zRevRangeByScore('scores', 100, 90, ['withscores'=>true]);
  22.  
  23. //迭代有序集合中的元素。
  24.  
  25. //返回值:[元素名=>分数值,,..]
  26.  
  27. $ret = $redis->zscan('scores', $it, '', 10);
  28.  
  29. //返回指定有序集的元素数量。
  30.  
  31. $ret = $redis->zCard('scores');
  32.  
  33. //返回有序集中指定分数区间的成员数量。
  34.  
  35. $ret = $redis->zCount('scores', 90, 100);
  36.  
  37. //返回有序集中指定成员的分数值。若成员不存在则返回false。
  38.  
  39. $ret = $redis->zScore('scores', 'math');
  40.  
  41. //返回有序集中指定成员的排名,按分数值递增排序。分数值最小者排名为0。
  42.  
  43. $ret = $redis->zRank('scores', 'chemistry');
  44.  
  45. //返回有序集中指定成员的排名,按分数值递减排序。分数值最大者排名为0。
  46.  
  47. $ret = $redis->zRevRank('scores', 'chemistry');
  48.  
  49. //移除有序集中的一个或多个成员,忽略不存在的成员。返回删除的元素个数。
  50.  
  51. $ret = $redis->zRem('scores', 'chemistry', 'English');
  52.  
  53. //移除有序集中指定排名区间的所有成员。
  54.  
  55. $ret = $redis->zRemRangeByRank('scores', 0, 2);
  56.  
  57. //移除有序集中指定分数值区间的所有成员。
  58.  
  59. $ret = $redis->zRemRangeByScore('scores', 80, 90);
  60.  
  61. //对有序集中指定成员的分数值增加指定增量值。若为负数则做减法,若有序集不存在则先创建,若有序集中没有对应成员则先添加,最后再操作。
  62.  
  63. $ret = $redis->zIncrBy('scores', 2, 'Chinese');
  64.  
  65. //计算给定一个或多个有序集的交集,并将其存储到一个目的有序集中。结果集中某个成员的分数值是所有给定集下该成员分数值之和。
  66.  
  67. $ret = $redis->zinterstore('zset3', 'zset2', 'zset1');
  68.  
  69. //计算给定一个或多个有序集的并集,并将其存储到一个目的有序集中。结果集中某个成员的分数值是所有给定集下该成员分数值之和。
  70.  
  71. $ret = $redis->zunionstore('zset3', 'zset2', 'zset1');

PHP操作Redis常用技巧的更多相关文章

  1. PHP操作Redis常用技巧总结

    一.Redis连接与认证 //连接参数:ip.端口.连接超时时间,连接成功返回true,否则返回false $ret = $redis->connect('127.0.0.1', 6379, 3 ...

  2. PHP操作Redis常用技巧总结【转】

    一.Redis连接与认证 //连接参数:ip.端口.连接超时时间,连接成功返回true,否则返回false $ret = $redis->connect('127.0.0.1', 6379, 3 ...

  3. JQuery表格操作的常用技巧总结

    JQuery对表格进行操作的常用技巧. 1.表格奇数行和偶数行分别添加样式 复制代码代码如下: $(function(){  $('tr:odd').addClass("odd") ...

  4. Redis学习总结(九)-- Redis常用技巧

    这里会记录下Redis 常用的小技巧 全局使用 redis-cli 等命令 在之前我们都在做 Redis 命令目录下通过 ./redis-cli这种形式访问,如果使用 redis-cli 的话就会报命 ...

  5. PHP操作Redis常用

    一.Redis连接与认证 //连接参数:ip.端口.连接超时时间,连接成功返回true,否则返回false $ret = $redis->connect('127.0.0.1', 6379, 3 ...

  6. php 操作 redis 常用命令

    原文地址: https://www.cnblogs.com/zhanghanwen16/p/9510481.html 1.redis连接与认证 //连接参数:ip.端口.连接超时时间,连接成功返回tr ...

  7. Redis常用命令代码实例集合

    //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->auth('12345 ...

  8. 【redis】redis常用命令及操作记录

    redis-cli是Redis命令行界面,可以向Redis发送命令,并直接从终端读取服务器发送的回复. 它有两种主要模式:一种交互模式,其中有一个REPL(read eval print loop), ...

  9. 第三百节,python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型

    python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型 delete(*names)根据删除redis中的任意数据类型 #!/usr/bin/env pyt ...

随机推荐

  1. python错误 ImportError: No module named setuptools 解决方法[转]

    在python运行过程中出现如下错误: python错误:ImportError: No module named setuptools这句错误提示的表面意思是:没有setuptools的模块,说明p ...

  2. 深入理解 Neutron -- OpenStack 网络实现(2):VLAN 模式

    问题导读 1.br-int.br-ethx的作用是什么?2.安全组策略是如何实现的?3.VLAN 模式与GRE模式有哪些不同点?流量上有哪些不同?4.L3 agent实现了什么功能? 接上篇深入理解 ...

  3. C语言程序设计--类型转换

    变量定义 int var_int = 111111111; char var_char = '2'; double var_double = 3.30; float var_float = 4.80; ...

  4. DragonBones龙骨插槽的隐藏

    参考: 插槽中对象的显示与隐藏问题 let factory = dragonBones.EgretFactory.factory; factory.parseDragonBonesData(RES.g ...

  5. 常见的几个js疑难点,match,charAt,charCodeAt,map,search

            JavaScript match() 方法 定义和用法 match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配. 该方法类似 indexOf() 和 lastI ...

  6. Vim 使用入门快捷键

    Vim 和 Emac 都是利器啊,前段时间决定熟悉一套跨平台的编辑器,以便在 Win,Mac,Ubuntu 下都有相同的编辑体验. 于是尝试了一下 Vim,使用了一段时间,确实比 UE 之类的要高效. ...

  7. WCF的简单使用

    WCF简单介绍 WCF(windows communication foundation)是微软推出的数据通信的统一编程模型,在WCF有四个主要的关键点: abcd Address(地址):定义服务的 ...

  8. Linux--netstat命令

    netstat:显示网络状态 语法定义:netstat [-acCeFghilMnNoprstuvVwx] [-A<网络类型>][--ip] 参数说明: -a 或 -all :显示所有连线 ...

  9. POJ-1088 滑雪 (记忆化搜索,dp)

    滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 86318 Accepted: 32289 Description Mich ...

  10. Jmeter(十一)_针对响应信息不明确的接口做关联

    下午写一个新功能的接口脚本,遇到几个技术问题,现在将解决方案写出来 1:做接口关联的时候,发现接口响应没有可以利用的信息.如下图只返回了一个成功的标识,这样的接口如何与之关联? 通过抓包观察后续的修改 ...