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, '张三']

 

posted @ 2021-05-31 00:15  齐云海  阅读(438)  评论(0编辑  收藏  举报