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`就不會劇烈擡升,可是掃描的時間會變長。