心魔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