redis特点及安装使用
30分钟06秒redis通用key操作命令
26分钟20秒string结构及命令详解
40分钟49秒list结构及命令详解
30分钟33秒位图法统计活跃用户
17分钟54秒set结构及命令详解
22分钟22秒order set结构及命令详解
40分钟57秒hash结构及命令详解
12分钟00秒redis事务及锁应用
26分钟05秒频道发布与消息订阅
11分钟55秒rdb快照持久化
36分钟17秒aof日志持久化
46分钟47秒redis主从复制
31分钟07秒redis运维常用命令
31分钟18秒aof恢复与rdb服务器间迁移
30分钟08秒sentinel运维监控
40分钟57秒key设计原则
46分钟20秒phpRedis扩展编译
19分钟39秒微博项目之用户注册与微博发布
01小时17分钟30秒微博项目之粉丝关系与推送微博
01小时22分钟41秒增强微博cookie安全
34分钟36秒哈希数据存储微博
29分钟40秒微博key设计总结
26分钟43秒粉丝拉取模式
01小时26分钟43秒微博冷数据写入mysql
52分钟04秒高速写入测试
01小时10分钟46秒心魔5年前
PHP Redis 使用手册 key通用命令 $redis->set('key','AA'); //设置某个 $redis->get('key'); //获取某个 $redis->keys('*'); //获取所有 $redis->keys('k*'); //模糊某个 $redis->keys('ke[ty]'); //模糊某个 $redis->randomKey(); //随机返回key $redis->exists('key'); //验证键是否存在,存在返回true $redis->type('key'); //返回类型 $redis->delete('key'); //删除键值 可以传入数组 array('key1','key2')删除多个键 $redis->rename('x', 'y'); //修改键名(可覆盖)return 1 $redis->renamenx('x', 'y'); //修改键名(不可覆盖已有键名) reutrn 1 or 0 $redis->ttl('key'); //查看生命周期(永久周期为-1) $redis->setEx('key', 3600, 'value'); //秒级生命周期 $redis->pSetEx('key', 100, 'value'); //毫秒级生命周期 $redis->persist('key'); //设置永久生命周期 $redis->select(num); //切换数据库(total 16) $redis->flushDb(); //清空数据 string命令 $redis->set('key','AA'); //设置 $redis->setnx('key','AA'); //存在返回false 不存在返回true $redis->setex('key',5,'AA'); //设置 key 生命周期为 5秒 的键值 AA $redis->psetex('key',5000,'AA'); //设置 key 生命周期为 5000毫秒 的键值 AA $redis->mset(array('key0' => 'value0', 'key1' => 'value1')); //批量设置键值 $redis->msetnx(array('key0' => 'value0', 'key1' => 'value1'));//批量设置键值 $redis->setRange('key', 2, '00'); //如果key的value=abcdef c开始替换2个为0即为:ab00ef 如果游标溢出 则用补\x00! $redis->get('key'); //获取 $redis->mget(array('key1','key2')); //批量获取键值,返回一个数组 $redis->getRange('key', 0, 5); // 键值截取从0位置开始到5位置结束 (start游标溢出则为空) $redis->getSet('key','BB'); //将键key的值设置为BB, 并返回这个键值原来的值AA $redis->append('key', '00'); //如果key的value=abcdef,追加到键值后面,键值为abcdef00 $redis->incr('num'); //键值加1 $redis->incrby('num',-10); //键值加减10 $redis->incrByFloat('num', +/- 1.5); //键值加减小数 $redis->decr('num'); // 键值减1 $redis->decrBy('num',10); // 键值减10 $redis->strlen('key'); //键值长度 --------------------------------------------------------------------------------------- $redis->set('key', "*"); // ord("*") = 42 = 0x2f = "0010 1010" $redis->setBit('key', 5, 1); /* returns 0 */修改二进制位 $redis->get('key'); /* chr(0x2f) = "/" = b("0010 1111") */ list命令 $redis->lPush('list', 'A'); //插入 链表 左侧进入,返回链长度 内容:A $redis->rPush('list', 'B'); //插入 链表 右侧进入,返回链长度 内容:AB $redis->lRange('list', 0, 2); //链表截取 从0开始 2位置结束(-1为全部) $redis->lPop('list'); //删除list最左一个单位 返回list $redis->rPop('list'); //删除list最右一个单位 返回list $redis->lRem('list', 'b', 2); //list=abcdabcdabcd链表从左开始删除元素2个b ;-2 从右开始 删除元素2个b $redis->lTrim('list', 0, 2); //list=abcda截取下标 从0开始,截取到2 内容:list=abc $redis->lindex('list',0); //返回0所在单元的值 $redis->llen('list','list'); //返回list单元个数 $redis->lInsert('list', Redis::BEFORE|Redis::AFTER, 'C', 'B'); //在C元素之前插入B $redis->rpoplpush('list1', 'list2'); //从一个链表原子到另一个链表 set命令 $redis->sAdd('key' , 'AA'); //插入元素 $redis->sMembers('key'); //获取容器key中所有元素 $redis->sRem('key' , 'AA'); //移除容器中的TK $redis->sMove('key','key1','AA'); //将容易key中的元素AA 移动到容器key1 操作成功返回TRUE $redis->sPop('key'); //随机返回容器中一个元素,并移除该元素 $redis->sRandMember('key'); //随机返回容器中一个元素,不移除该元素 $redis->sCard('key'); //返回SET容器的成员数 $redis->sIsMember('key','AA'); //检查VALUE是否是SET容器中的成员 $redis->sInter('key','key1'); //交集 $redis->sInterStore('store','key','key1'); //将集合key和集合key1的 交集 存入store $redis->sUnion('key','key1'); //并集 $redis->sUnionStore('store','key','key1');//集合key和集合key1的 并集 保存在集合store中 $redis->sDiff('key','key1','key2'); //返回数组,存在于key集合而不存在于集合key1 key2 order set 命令 $redis->zAdd('zkey', 1, 'A'); //插入A关联score 1 $redis->zRange('zkey',0,-1); //获取集合元素,从0位置 到 -1 位置 $redis->zRange('zkey',0,-1, true); //获取集合元素,从0位置 到 -1 位置, 返回一个关联数组带 分数 $redis->zDelete('zkey', 'B'); //移除集合tkey中元素B 成功返回1 失败返回 0 $redis->zRevRange('zkey', 0, -1); //获取集合元素,从0位置 到 -1 位置,数组按照score降序处理 $redis->zRevRange('zkey', 0, -1,true);// 获取集合元素,从0位置 到 -1 位置,数组按照score降序处 理 返回score关联数组 $redis->zRangeByScore('zkey', 0, 0.2,array('withscores' => true)); //获取几个zkey中score 在区间[0,0.2]元素 ,score由低到高排序,元素具有相同的 score,那么会按照字典顺序排列 , withscores控制返回关联数组 $redis->zRangeByScore('zkey', 0.1, 0.36, array('withscores' => TRUE, 'limit' => array(0, 1))); //其中limit中 0和1 表示取符合条件集合中 从0位置开始,向后扫 描1个 返回关联数组 $redis->zCount('zkey', 2, 10); // 获取zkey中score在区间[2, 10]元素的个数 $redis->zRemRangeByScore('zkey', 1, 3); // 移除zkey中score在区间[1, 3](含边界)的元素 $redis->zRemRangeByRank('zkey', 0, 1); /默认元素score是递增的,移除zkey中元素 从0开始到-1位置 $redis->zSize('zkey'); //返回存储在key对应的有序集合中的元素的个数 $redis->zScore('zkey', 'A'); // 返回集合tkey中元素A的score值 $redis->zRank('zkey', 'A'); // 返回集合zkey中元素A的索引值z集合中元素按照score从低到高 进行排列 ,即最低的score index索引为0 $redis->zIncrBy('zkey', 2.5, 'A'); // 将集合zkey中元素A的score值 加 2.5 $redis->zUnion('union', array('zkey', 'zkey1'));// 将集合tkey和集合tkey1元素合并于集合union $redis->zUnion('ko2', array('k1', 'k2'), array(5, 2));//集合k1和集合k2并集k02,k1*5,k2*2, 相同元素 score sum $redis->zInter('ko1', array('k1', 'k2')); // 集合k1和集合k2取交集于k01 按照score值递增排序 如果集合元素相同,score值相加 $redis->zUnion('ko2', array('k1', 'k2'), array(10, 2),'MAX');// 各个子集乘以因子之后,递增排 序,相同的 score取最大值(MAX)也可以设置MIN 取最小值 $redis->zInter('ko1', array('k1', 'k2'), array(5, 1));//集合k1和集合k2取交集k01k1*5,k2*2, 相同元素 score sum、 $redis->zInter('ko1', array('k1', 'k2'), array(5, 1),'MAX'); // 各个子集乘以因子之后,元素 score按照递增排序,相同的元素score取最大值(MAX)也可以设置 MIN 取最小值 hash 命令 $redis->hSet('h', 'name', 'AA'); //h 添加name字段 value为AA $redis->hSetNx('h', 'name', 'AA'); //h 添加name字段 value为AA 如果字段name的 value存在返回false 否则返回 true $redis->hGet('h', 'name'); // 获取h表中name字段value $redis->hLen('h'); // 获取h表长度即字段的个数 $redis->hDel('h','name'); // 删除h表中name字段 $redis->hKeys('h'); // 获取h表中所有字段 $redis->hVals('h'); // 获取h表中所有字段value $redis->hGetAll('h'); // 获取h表中所有字段和value 返回一个关联数组(字段为键值) $redis->hExists('h', 'name'); // 判断name 字段是否存在与表h 不存在返回false $redis->hIncrBy('h', 'age', -2); // 设置h表中age字段value加(-2) 如果value是个非数值 则返回 false 否则,返回操作后的value $redis->hMset('h', array('score' => '80', 'salary' => 2000)); // 表h 批量设置字段和value $redis->hMGet('h', array('score','salary')); // 表h 批量获取字段的value 事物 $redis->set('money',100); //设置金额100 $redis->watch('money'); //监听(乐观锁) $redis->set('money',0); //其他操作金额为0 $ret = $redis->multi() //开启事务 ->decrBy('money',10) //减金额10 ->exec(); //执行 不成功 //由于其他事物操作,事物监听到修改后事物不执行 订阅 //订阅端 $redis->subscribe(array('chan-1'),'f'); //设置接收订阅频道 //发布端 $redis->publish('chan-1', 'hello, world!'); // 发布订阅 //订阅端 发布端发布消息后,订阅端及时收到发布的消息
1