https://github.com/phpredis/p...php
$redis = new Redis(); $redis->connect("127.0.0.1", 6379, 1); //TCP短链接,1秒超时,返回bool $redis->connect('/tmp/redis.sock'); //套接字 $redis->connect("127.0.0.1", 6379, 1, NULL, 100);//从新链接之间间隔100毫秒 $redis->pconnect("127.0.0.1", 6379, 1); //长链接,进程结束前,请求关闭结束时链接不释放。线程版不能使用.返回bool $redis->auth("mima"); //密码,返回bool $redis->select(0); //选择redis数据库,0-15个库,返回bool $redis->swapdb(0,1);//原子交换两个数据库,返回bool $redis->setOption(Redis::OPT_PREFIX, 'myAppName:');//在全部键上使用指定前缀 $redis->_prefix('my');//添加key的前缀,与上一步会合并myAppName:my $redis->close(); //关闭链接,返回bool $redis->ping(); //检查链接,返回字符串‘+PONG’ $redis->echo("1"); //发送字符串到redis。redis原值返回 $redis->isConnected(); //链接redis成功与否,返回bool
$redis->bgSave(); //异步在后台保存数据到磁盘。返回bool $redis->save();//同步保存数据到磁盘。返回bool $redis->bgRewriteAOF(); //启动AOF的后台重写 $redis->config("GET","*max-*-entries*");//获取配置项值 $redis->config("SET","dir","/var/run/redis/dumps/");//设置配置值 $redis->dbSize(); //返回当前库中的key个数 $redis->flushAll();//清空全部库中的全部key。总返回true $redis->flushDb();//清空当前库中的全部key。总返回true $redis->info(); //返回redis的全部状态数据。 $redis->info("CPU"); //传参返回指定状态数据 $redis->resetStat(); //重置info中的状态数据。 $redis->lastSave();//返回最后一次保存数据到磁盘的时间戳 $redis->time();//返回当前服务器时间 $redis->slowLog(”get“,10);//获取10条慢日志 $redis->slowLog("reset");//重置慢日志
$redis->multi(Redis::MULTI);//开启事务,事务块内支线的多条命令按照前后顺序放进一个队列中,最后由EXEC命令原子执行。 $redis->multi(Redis::PIPELINE);//开启管道,事务块内支线的多条命令按照前后顺序放进一个队列中,最后由EXEC命令原子执行。 .....事务命令块.... $redis->exec();//执行事务块内的命令,事务块内全部命令的返回值,安命令的执行顺序排列,当操做被打断时,返回false $redis->multi() ->set('key1', 'val1') ->get('key1') ->set('key2', 'val2') ->get('key2') ->exec();//返回每个命令的返回值的索引数组
$redis->delete('key1','key2');//删除指定键,返回删除key个数 $redis->delete(array('key1','key2')); $redis->unlink('key1','key2');//redis>=4.0.0 异步非阻塞删除。 $redis->unlink(array('key1','key2')); $redis->exists('key');//验证指定key是否存在,返回bool,redis>4.0.0存在返回1,不存在返回0 $redis->incr('key1');//自增1,返回自增后的整数 $redis->incrBy('key1',10);//增长指定数。 $redis->decr('key');//自减1,返回自减后的整数 $redis->decrBy('key',10);//减小指定数 $redis->mGet(array('key','key2'));//查询多个key的值,不存在的key值为false,返回数组 $redis->getSet('key',2);//设置key一个新值,返回key的设置以前的值 $redis->randomKey();//随机返回一个key名 $redis->move('key',1);//将key移动到1库中,返回bool $redis->rename('oldkey','newkey');//重命名key $redis->renameNx('oldkey','newkey');//重命名key,key存在撤销 $redis->expire('key',3);//设置key过时时间,单位秒,返回bool $redis->setTimeout('key',3);//同上 $redis->expireAt('key',time()+3);//设置key的到期时期时间戳,时间戳为秒 $redis->ttl('key');//返回key的剩余存活秒数,没有设置过时时间返回-1,key不存在返回-2 $redis->persist('key');//删除key的过时时间,返回bool $redis->keys('key*'); //返回符合匹配模式的key数组或字符串。*为匹配符 $redis->type('key');//返回key的数据类型 $redis->migrate('127.0.0.1',6379,array('key1','key2'),0,3600,true,true);//迁移多个键值到备份redis的0库中,迁移最大时间3600秒,迁移复制替换。redis<3.0.6,只支持单个key迁移 $redis->sort('key',array('sort'=>'desc','limit'=>array(0,1)));//对列表,集合,有序集合的元素进行排序,返回数组
$redis->get('key');//获取key值,key不存在返回false $redis->set('key','value');//设置key值,返回bool $redis->setEx('key',3600,'value');//设置key值和过时时间单位秒 $redis->setNx('key','value');//分布式锁。。redis中不存在key设置key值,存在不操做,返回bool $redis->append('key','value');//将值追加到指定key的字符串后面,返回新值长度 $redis->getRange('key',0,5);//返回key的值的指定范围的子字符串 $redis->setRange('key',5,'value');//修改替换key的指定位置以后的字符,返回长度 $redis->strLen('key');//获取key的值字符串长度 $redis->setBit('key',10,1);//设置位图指定位的状态值,0或1,返回设置以前的状态0或1 $redis->getBit('key',10);//获取位图指定位的状态值,0或1 $redis->bitCout('key');//统计位图中状态为1的个数 $redis->mSet(array('key1'=>1,'key2'=>2));//批量设置多个key的值,返回bool
$redis->lIndex('key',0);//返回指定index序号的列表中的元素值,-1倒序第一个,0顺序第一个,位置不存在值返回false $redis->lRange('key',0,-1);//返回指定开始和结束索引位置范围内的元素数组 $redis->lTrim('key',0,1);//修剪列表,只保留指定索引范围内的元素,返回bool $redis->lInsert('key',Redis::BEFORE,'a','b');//将值b插入值a前面,Redis::AFTER是后面,指定值不存在返回-1 $redis->lSet('key',0,'value');//设置指定索引位置的值,返回bool,超出范围返回false $redis->lPop('key');//删除列表第一个元素,并返回值,空列表返回false $redis->lPush('key','value');//在列表头部添加值,返回列表长度,不存在列表建立,key不是列表类型返回false。 $redis->rPush('key','value);//在列表尾部添加值,返回列表长度,不存在列表建立,key不是列表类型返回false。 $redis->rPop('key');//删除列表末尾的元素,并返回值,空列表返回false $redis->rpoplpush('key1','key2');//将key1的尾部弹出一个值存入key2列表的头部,并返回这个值, $redis->lLen('key');//返回列表的元素个数 $redis->lRem('key','a',2);//从头开始删除两个值为a的元素,0,删除所有a元素,负数倒序删除,返回删除个数
$redis->sAdd('key', '1');//添加值到集合中,值已存在返回false,返回集合当前的元素数量 $redis->sCard('key');//发返集合的元素个数,集合不存在返回0 $redis->sDiff('key1','key2','key3');//返回集合之间的差集,数组 $redis->sDiffStore('stare','key1','key2');//返回集合之间的差集个数,差集元素存储在第一个集合stare中 $redis->sInter('key1','key2','key3');//返回多个集合之间的交集数组,无交集返回空数组 $redis->sInterStore('store','key1','key2');//返回多个集合的交集元素个数,交接结果保存在第一个参数集合中。 $redis->sUnion('key1','key2');//返回多个集合之间的并集数组 $redis->sUnionStore('store','key1','key2');//返回多个集合的并集元素个数,并集结果保存在第一个参数的集合中。 $redis->sContains('key','value');//判断值是否在集合中,返回bool $redis->sMembers('key');//返回无序的集合全部的元素数组。 $redis->sMove('from','to','value');//从一个集合中移动一个元素到另外一个集合,返回bool $redis->sPop('key1',10);//从集合中随机删除一个元素并返回值。集合为空或不存在返回false;带个数参数,将返回指定个数的元素 $redis->sRandMember('key',10);//从集合中随机返回一个元素的值,如带个数参数,将返回指定个数的元素 $redis->sRemove('key','value1','value2');//删除集合中指定的元素,返回元素个数
$redis->zAdd('key',1,'value');//添加元素到有序集合,添加成功返回1,不然0 $redis->zCard('key');//返回集合元素个数,$redis->zSize(); $redis->zCount('key',0,100);//返回指定范围内的集合元素个数 $redis->zIncrBy('key',1,'value');//给指定的元素增长指定数,返回新的值 $redis->zInter('key',array('key2','key3'));//将数组中的多个集合的交集存放在第一个参数的集合中,返回新交集集合的元素个数 $redis->zUnion('key',array('key2','key3'));//将数组中 多个集合的并集存放在第一个参数的集合中,返回新并集的集合元素个数 $redis->zRange('key',0,-1);//返回指定索引范围的元素数组,0表示第一个,-1表示倒数第一个$redis->zRevRange('key',0,-1)反序返回 $redis->zRangeByScore('key',0,10);//返回指定排序值范围内的元素数组。 $redis->zRangeByScore('key',0,10,array('withscores'=>TRUE));//返回值为健名,排序值为健值的数组。 $redis->zRevRangeByScore('key',0,10);//反序zRangeByScore $redis->zRank('key','value');//返回指定元素的索引位置值 $redis->zScore('key','value');//返回指定元素的排序值 $redis->zDelete('key','value');//删除指定元素,成功返回1,失败返回0 $redis->zDeleteRangeByRank('key',0,1);//按索引的范围删除元素,返回删除个数 $redis->zDeleteRangeByScore('key',0,10);//按排序的范围删除元素,返回删除个数
$redis->hSet('key','hashKey','value');//设置修改哈希表key中的hashkey对应的值,不存在添加返回1,存在修改返回0,错误返回false $redis->hGet('key','hashKey');//获取值,不存在返回false $reids->hSetNx('key','hashKey','value');//锁机制,不存在时设置,存在不设置,不存在设置返回true,存在设置返回false $redis->hLen('key');//返回hash表元素个数 $redis->hStrLen('key','hashKey');//返回hash表中指定元素值的字符串长度,不存在字段返回0 $redis->hDel('key','hashKey1','hashKey2');//从hash表中删除元素,hash表不存在返回false,hashkey不存在返回0,存在返回删除个数 $redis->hKeys('key');//返回hash表中的key索引数组 $redis->hVals('key');//返回hash表中的value值索引数组 $redis->hGetAll('key');//返回hash表中的key和value组成的关联数组 $redis->hExists('key','hashkey');//验证hashkey是否存在hash表中,返回bool $redis->hIncrBy('key','hashkey',10);//给hash表中指定的hashkey值增长指定数,返回新值 $redis->hMSet('key',array('a'=>1,'b'=>2));//给hash表中设置多个键值对,元素值为NULL的设置空字符串,非字符串强制转为字符串,返回bool $redis->hMGet('key',array('a','b'));//获取多个指定的hashkey的值,返回关联数组
$redis->publish('chan-1', 'hello, world!');//发布消息到频道 $redis->subscribe(array('chan-1', 'chan-2', 'chan-3'), 'f');//订阅频道,并执行回调函数,频道,消息体 function f($redis, $chan, $msg) { switch($chan) { case 'chan-1': ... break; case 'chan-2': ... break; case 'chan-2': ... break; } }
要求 redis >= 3.2 $redis->geoAdd( "key", 37.773, -122.431, "San Francisco", -157.858, 21.315, "Honolulu" );//添加城市经纬度数据到key,返回添加成功个数 $redis->geoHash("key", "San Francisco");//查询多个成员地理位置编码后的字符串,返回数组 $redis->geoPos("key", "Honolulu", "Maui");//查询多个成员的经纬度,返回二维数组 $redis->geoDist("key", "Honolulu", "Maui", 'km');//查询成员之间的距离,默认单位米m,单位千米km,万里mi,步feet, $redis->geoRadius("", -157.858, 21.306, 300, 'mi');//返回指定地点经纬度半径300万里内的全部其余成员名的集合,返回数组。判断商圈范围 $redis->geoRadiusByMember("key", "Honolulu", 300, 'mi'));//使用成员名半径300万里内的其余成员集合 其余解决方案:postgresql / gis
$redis->eval('return 1');//执行lua脚本,返回复合类型数据 $redis->getLastError();//返回执行lua脚本后的最后一条错误信息,如无,返回false
SCAN 命令用于迭代当前数据库中的数据库键。 SSCAN 命令用于迭代集合键中的元素。 HSCAN 命令用于迭代哈希键中的键值对。 ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。 都支持增量式迭代, 它们每次执行都只会返回少许元素, 因此这些命令能够用于生产环境, 而不会出现像 KEYS 命令、 SMEMBERS 命令带来的问题 —— 当 KEYS 命令被用于处理一个大的数据库时, 又或者 SMEMBERS 命令被用于处理一个大的集合键时, 它们可能会阻塞服务器达数秒之久
为了不对线上redis带来卡顿,这就要用到scan指令,对于扫描出来的每个key,使用type指令得到key的类型,而后使用相应数据结构的size或者len方法来获得它的大小,对于每一种类型,保留大小的前N名做为扫描结果展现出来。 上面这样的过程redis官方已经在redis-cli指令中提供了这样的扫描功能,咱们能够直接拿来即用。 redis-cli -h 127.0.0.1 -p 6370 –-bigkeys 若是你担忧这个指令会大幅抬升redis的ops致使线上报警,还能够增长一个休眠参数。 redis-cli -h 127.0.0.1 -p 6370 –-bigkeys -i 0.1 上面这个指令每隔100条scan指令就会休眠0.1s,ops`就不会剧烈抬升,可是扫描的时间会变长。