链接redis及类型基本操作
// 普通链接redis
$redis->connect('127.0.0.1', '6379');
$redis->auth('password');
// 使用tp链接redis
$redis = new Redis(config('cache.redis')); // 链接redis
String操作
$redis->set('str', '123456'); // redis字符集写入
dump($redis->get('str')); // redis字符集获取
// 输出结果:
123456
// 修改数据直接写入覆盖就OK
$redis->set('str', '123');
$redis->set('str', 123, 10); // 有效期为10秒
// $redis->setex('str', 10, 123); // 有效期为10秒
echo $redis->get('str'); // 结果为123
// 创建多个mset
$list = array('k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3');
$redis->mset($list);
dump($redis->mget(array_keys($list)));
// 递增incr,递减decr
$redis->incr('num');
$redis->decr('num');
$redis->incrby('num', 10) //指定递增数字
$redis->decrby('num', 10) //指定递减数字
$redis->incrByFloat('num', 1.5); //键值加减小数。减为负数即可
// 删除key
$redis->del('str');
List操作
$redis->lPush('xiao', 'A'); // 从左插入队列
$redis->lPush('xiao', 'B'); // 从左插入队列
$redis->rPush('xiao', 'C'); // 从右插入队列
// 遍历key从左开始
dump($redis->lrange('xiao', 0, 2));
// 输出结果为:
array(3) {
[0] => string(1) "B"
[1] => string(1) "A"
[2] => string(1) "C"
}
// 从左侧索引为0的修改成Y
$redis->lSet('xiao', 0, 'Y');
dump($redis->lrange('xiao', 0, 2));
// 输出结果为:
array(3) {
[0] => string(1) "Y"
[1] => string(1) "A"
[2] => string(1) "C"
}
echo $redis->lLen('xiao'); // 获取key长度
// 删除队列最左侧一个切输出
echo $redis->lPop('xiao');
echo $redis->rPop('xiao'); // 右侧开始
Hash操作
$redis->hSet('hash', 'key', 'value');
dump($redis->hKeys('hash')); // hash所有的键
dump($redis->hVals('hash')); // hash所有的值
echo $redis->hGet('hash', 'key');
echo $redis->hGetAll('hash'); // 获取hash所有键值
// hExists判断key键是否存在,返回bool值
var_dump($redis->hExists('hash', 'key'));
// del删除
$redis->del('hash');
$redis->hDel('hash', 'key')
// hMset以数组形式添加多个,hMget获取多个
$redis->hMset('max', array('k1' => 'v1', 'k2' => 'k2'));
dump($redis->hMget('max', array('k1', 'k2')));
set集合
$sets1 = $redis->sAdd('key1', 'value1', 'value2'); // 创建集合
$sets2 = $redis->sAddArray('key2', array('value1', 'value2', 'value3'));
//取两个集合的并集
$union = $redis->sUnion('key1', 'key2');
// array(3) { [0]=> string(6) "value2" [1]=> string(6) "value1" [2]=> string(6) "value3" }
$redis->sUnionStore('store', 'key1', 'key2'); // 将key1和key2并集值存入store,返回bool
//取两个集合的交集
$inter = $redis->sInter('key1', 'key2');
// array(2) { [0]=> string(6) "value2" [1]=> string(6) "value1" }
$redis->sInterStore('store', 'key1', 'key2'); // 将key1和key2交集值存入store,返回bool
//取两个集合的差集
$diff = $redis->sDiff('key1', 'key2');
// array(0) { }
$redis->sRem('key1' , 'value1'); // 删除该集合中的value1
$redis->sMove('key1','key2','value1'); // 将key1中的value1移到key2返回bool
$redis->sIsMember('key1','value'); // 判断value是否为key1中的值
$redis->sCard('key1'); //返回长度
$redis->sRandMember('key1'); // 随机返回一个值
$redis->sPop('key1'); // 所及返回一个值且删除
zset有序集合
// 添加数据
$redis->zAdd('zset', 80, '张三');
$redis->zAdd('zset', 90, '李四');
$redis->zAdd('zset', 70, '王五');
$redis->zCard('zset'); // 获取有多少学员
$redis->zScore('zset', '张三'); // 获取张三的分数
$redis->zIncrBy('zset', 10, '张三'); // 给张三同学加10分
// 获取指定学员的排名,从0开始
$redis->zRank('zset', '张三'); // 从低到高排序的名次
$redis->zRevRank('zset', '王五'); // 从高到低排序的名次
$redis->zRangeByScore('zset', 75, 100); // 返回指定分数范围内从低到高排序的成员
$redis->zCount('zset', 2, 10); // 获取zset中score在区间[2, 10]元素的个数
$redis->zRemRangeByScore('zset', 1, 3); // 移除zset中score在区间[1, 3](含边界)的元素
$redis->zRemRangeByRank('zset', 0, 1); //默认元素score是递增的,移除zset中元素 从0开始到-1位置结束
// 删除成员
$redis->zRem('zet', '王五');