PHP调用Redis的常用基本操作介绍
Redis的连接
// 实例化redis类 $redis = new \Redis(); // 参数1:host,参数2:port $redis->connect('127.0.0.1', 6379); // 如果有密码的话,则: $redis->auth('密码'); // 测试redis是否连接成功 var_dump($redis->ping()); // 返回true则代表连接成功
一、string类型的常用操作
// 设置值与取值 // 设置 没有过期时间,会永久保存 $redis->set('test', '测试'); // true 如果之前的数据存在,则会覆盖原来的数据 // 获取 $redis->get('test'); // 测试 // 设置带过期时间的数据。参数1:key 参数2:ttl 参数3:value $redis->setex('test', 600, '测试'); // 指定的 key 不存在时,为 key 设置指定的值。 $redis->setnx('test', '测试1'); // false $redis->setnx('test1', '测试1'); // true // 为setnx设置过期时间。参数1:key 参数2:ttl $redis->expire('test1', 600); // 计数器 // 递增计数值 $redis->incr('number'); // 第一次执行是1 第二次执行是2 以此类推... 默认递增值是1 $redis->incr('number', 2); // 则指定递增值为2 // 强制性指定递增值,不传指定递增值则会报错 $redis->incrBy('number', 2); // 减少计数值 $redis->decr('number'); // 假如number为2 则第一次执行是1 第二次执行是0 以此类推... $redis->incr('number', 2); // 则指定递减值为2 // 强制性指定递减值,不传指定递减值则会报错 $redis->decrBy('number', 2);
二、list类型的常用操作
// lpush 从左边插入 参数1:list的名称 参数2:元素 $redis->lpush('list', 'a'); // 1,list:[a] $redis->lpush('list', 'b'); // 2,list:[b,a] // 从左边弹出 $redis->lpop('list'); // b // 从右边弹出 $redis->rpop('list'); // a // 从右边插入 $redis->rpush('list', c); // 3,list:[b,a,c] // 取出list里面的数据 参数1:list名称,参数2:从哪开始,参数3:到哪结束。当参数3等于-1时,则代表获取全部值 $redis->lRange('list', 0, 1); // [b, a] $redis->lRange('list', 0, -1); // [b,a,c]
三、set(无序集合)类型的常用操作
// 插入元素到set集合内 $redis->sAdd('set1', 'val1'); // ['val1'] // sAdd还可同事插入多个元素 $redis->sAdd('set2', 'val1', 'val2', 等...); // [val1, val2, ...] // 根据set集合名称取出集合内的元素 $redis->sMembers('set1'); // ['val1'] // 删除集合内的某个元素(和set一样,可以同时删除多个元素) $redis->sRem('set2', 'val1'); // [val2, ...] $redis->sRem('set2', 'val1', 'val2', 等...); // [...] // 计算集合内的元素个数 $redis->sCard('set1'); // 1 // 判断集合内是否包含某个元素 $redis->sIsMember('set1', 'val1'); // true // 返回集合与其他集合的交集 (可以一次获取多个集合间的交集) $redis->sInter('set1', 'set2', 等...); // ['val1'] // 返回集合与其他集合的差集 (可以一次获取多个集合间的差集) $redis->sDiff('set1', 'set2', 等...); // [val2] // 差集需要注意参数顺序 $redis->sDiff('set2', 'set1'); // [] // 返回集合与集合间的并级 (可以一次获取多个集合间的并集) $redis->sUnion('set1', 'set2'); // [val1, val2, 等...]
四、zset(有序集合)类型的常用操作
// 添加有序集合。参数1:集合名称,参数2:分数1,参数3:值1,参数4:分数2,参数5:值2。参数N、值N... 以此类推 $redis->zAdd('zset1', '1','val1','2','val2'); // ['val1','val2'] // 获取有序集合数据,查出来的数据根据分数进行排序。参数1:key,参数2:开始位置,参数3:结束位置。当结束位置等于-1时,则取出全部数据。 $redis->zRange('zset1', 0, 0); // ['val1'] $redis->zRange('zset1', 0, 1); // ['val1','val2'] $redis->zRange('zset1', 0, -1); // ['val1','val2'] // 获取带分数的有序集合数据 $redis->zRange('zset1', 0, 1, true); // ['val1'=>1, 'val2'=>2] // 获取根据分数进行倒序的有序集合数据(参数与用法和zRange都一样,只不过查出来的结果集是倒序排列的) $redis->zRevRange('zset1', 0, 1); // ['val2', 'val1'] $redis->zRevRange('zset1', 0, 1, true); // ['val2'=>2, 'val1'=>1] // 获取数据在集合内的下标 $redis->zRank('zset1', 'val1'); // 0 // 获取数据在集合内倒序排列的下标 $redis->zRank('zset1', 'val1'); // 1 // 获取集合内有多少条数据 $redis->zCard('zset1'); // 2 // 根据分数计算集合内的数据条数。参数1:集合名称,参数2:开始分数,参数3:结束分数 $redis->zCount('zset1', 0, 1); // 1 // 对集合内某条数据的分数值进行累加。参数1:集合名称,参数2:累加的分数值,参数3:要操作的数据 $redis->zIncrBy('zset1', 1, 'val1'); // ['val1'=>2, 'val2'=>2] // 获取集合内某条数据的分数值 $redis->zScore('zset1', 'val2'); // 2
五、hash类型的常用操作
// 设置hash key对应的field的value。参数1:键名,参数2:字段名称,参数3:字段值 $redis->hset('hset1', 'id', 1); $redis->hset('hset1', 'name', '张三'); $redis->hset('hset1', 'price', 0.1); // 批量设置,实现的效果等同于上面的效果 $redis->hMSet('hset1', ['id'=>1,'name'=>'张三','price'=>0.1]); // 获取所有键值对 $redis->hGetAll('hset1'); // ['id'=>1, 'name'=>'张三', 'price'=>0.1] // 获取单条 $redis->hget('hset1', 'id'); // 1 // 获取多条 $redis->hMGet('hset1', ['id','name']); // ['id'=>1, 'name'=>'张三'] // 对值进行累加 $redis->hIncrBy('hset1', 'id', 1); // 2 // 对浮点型的值进行累加 $redis->hIncrByFloat('hset1', 'price', 0.2); // 0.3 // 删除hash key对应的field的value $redis->hDel('hset1', 'price'); // 删除后:['id'=>1, 'name'=>'张三'] // 获取hash key field的数量 $redis->hLen('hset1'); // 2 // 判断hash key是否有field $redis->hExists('hset1', 'id'); // true // 获取hash key里面的field键名 $redis->hKeys('hset1'); // ['id', 'name'] // 获取hash key里面的filed值 $redis->hVals('hset1'); // [1, '张三']