注意:laravel6.0 推荐使用 phpredis
一、Redis 连接与认证
连接参数:ip、端口、连接超时时间,连接成功返回 true,否则返回 false
$ret = $redis->connect('127.0.0.1', 6379, 30);
密码认证:成功返回 true,否则返回 false
$ret = $redis->auth('123456');
二、String 操作
设置键值:成功返回 true,否则返回 false
$redis->set('cfun', 'Welcome!');
获取键值:成功返回 String 类型键值,若 key 不存在或不是 String 类型则返回 false
$ret = $redis->get('cfun');
从某个 key 所存储的字符串的指定偏移量开始,替换为另一指定字符串,成功返回替换后新字符串的长度。
$ret = $redis->setRange('cfun', 7, ' to Beijing!');
获取存储在指定 key 中字符串的子字符串。
$ret = $redis->getRange('cfun', 0, 6);
设置新值,返回旧值:若 key 不存在则设置值,返回 false
$ret = $redis->getSet('cfun', 'hi man');
一次设置多个键值对:成功返回 true。
$ret = $redis->mset(['name' => 'cfun', 'age' => 18]);
一次获取多个 key 的值:返回一个键值对数组,其中不存在的 key 值为 false。
$ret = $redis->mget(['name', 'age']);
设置指定 key 的值及其过期时间,单位:秒。
参数:键名,过期时间,键值。成功返回 true。
$ret = $redis->setex('name', 10, 'cfun');
以毫秒为单位设置指定 key 的值和过期时间。成功返回 true。
$ret = $redis->psetex('name', 10, 'cfun');
key 的值不存在时,才为其设置值。key 不存在且设置成功返回 true,否则返回 false。
$ret = $redis->setnx('name', 'boby');
setnx 命令的批量操作。只有在给定所有 key 都不存在的时候才能设置成功,只要其中一个 key 存在,所有 key 都无法设置成功。
$ret = $redis->msetnx(['country' => 'China', 'city' => 'HangZhou']);
获取指定 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('cfun', 'haha');
三、Hash 操作
为 hash 表中的字段赋值。成功返回 1,失败返回 0。若 hash 表不存在会先创建表再赋值,若字段已存在会覆盖旧值。
$ret = $redis->hSet('user', 'realname', 'cfun');
获取 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' => 'cfun', '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', 'cfun');
获取某个 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', 'ShangHai');
从 list 尾部插入一个值。
$ret = $redis->rPush('city', 'ShangHai');
获取列表指定区间中的元素。0 表示列表第一个元素,-1 表示最后一个元素,-2 表示倒数第二个元素。
$ret = $redis->lrange('city', 0, -1);
查看队列所有元素
将一个插入已存在的列表头部,列表不存在时操作无效。
$ret = $redis->lPushx('city', 'ShangHai');
将一个或多个值插入已存在的列表尾部,列表不存在时操作无效。
$ret = $redis->rPushx('city', 'NanJing');
移除并返回列表的第一个元素,若 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', 'ShangHai', -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');
本作品采用《CC 协议》,转载必须注明作者和本文链接