Redis の機能とインストールと使用方法
30分06秒redis汎用キー操作コマンド
26分20秒文字列の構造とコマンドの詳細な説明
40分49秒リストの構造とコマンドの詳細な説明
30分33秒ビットマップ方式でアクティブユーザーをカウントする
17分54秒セットの構造とコマンドの詳細な説明
22分22秒オーダーセットの構造とコマンドの詳細な説明
40分57秒ハッシュ構造とコマンドの詳細な説明
12分00秒Redis トランザクションとロック アプリケーション
26分05秒チャンネルの公開とメッセージの購読
11分55秒RDBスナップショットの永続化
36分17秒aof ログの永続性
46分47秒Redis マスター/スレーブ レプリケーション
31分07秒Redis の運用と保守のための共通コマンド
31分18秒aof のリカバリと RDB サーバー間の移行
30分08秒センチネルの運用と保守の監視
40分57秒主要な設計原則
46分20秒phpRedis 拡張機能のコンパイル
19分39秒Weiboプロジェクトのユーザー登録とWeibo公開
01時間17分30秒Weiboプロジェクトのファン関係とWeiboのプッシュ
01時間22分41秒Weibo Cookie のセキュリティを強化する
34分36秒ハッシュデータの保管 Weibo
29分40秒Weiboキーデザインの概要
26分43秒ファンプルモデル
01時間26分43秒Weibo のコールド データは 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