redis在php中的用法,使用PHP-redis操作Redis
PHP連接Redis
我們一般使用connect連接Redis,connect方法為短連接,提供了主機(jī)、端口、連接超時(shí)等參數(shù)設(shè)置,如:
$redis->connect('127.0.0.1', 6379);
$redis->connect('127.0.0.1'); // 默認(rèn)端口6379,你可以設(shè)置為其他端口
$redis->connect('127.0.0.1', 6379, 2.5); // 2.5秒也連接不上則為超時(shí)斷開(kāi)
也可以使用pconnect或popen方法支持長(zhǎng)連接,使用同上。
示例代碼:
//連接本地的 Redis 服務(wù)
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//查看服務(wù)是否運(yùn)行
echo "Server is running: " . $redis->ping();
此外,phpredis還提供了驗(yàn)證密碼,選擇庫(kù)和關(guān)閉連接釋放資源、過(guò)期時(shí)間(用于緩存)、移動(dòng)庫(kù)等方法。
$redis->auth('password'); //登錄驗(yàn)證密碼,返回【true | false】
$redis->select(0); //選擇redis庫(kù), 0~15 共16個(gè)庫(kù)
$redis->close(); //釋放資源
$redis->expire('key', 10); //設(shè)置失效時(shí)間[true | false]
$redis->move('key', 15); //把當(dāng)前庫(kù)中的key移動(dòng)到15庫(kù)中[0|1]
String字符串
Redis 字符串?dāng)?shù)據(jù)類型的相關(guān)命令用于管理 redis 字符串值。可以設(shè)置、獲取、刪除鍵key的值,可以對(duì)鍵值自增和自減等。
$redis->set('key', 1); //設(shè)置key=aa value=1 [true]
$redis->mset($arr); //設(shè)置一個(gè)或多個(gè)鍵值[true]
$redis->setnx('key', 'value'); //key=value, key存在返回false[|true]
$redis->get('key'); //獲取key [value]
$redis->mget($arr); //(string|arr), 返回所查詢鍵的值
$redis->del($key_arr); //(string|arr)刪除key,支持?jǐn)?shù)組批量刪除【返回刪除個(gè)數(shù)】
$redis->delete($key_str, $key2, $key3); //刪除keys, [del_num]
$redis->getset('old_key', 'new_value'); //先獲得key的值,然后重新賦值, [old_value | false]
$redis->strlen('key'); //獲取當(dāng)前key的長(zhǎng)度
$redis->append('key', 'string'); //把string追加到key現(xiàn)有的value中[追加后的個(gè)數(shù)]
$redis->incr('key'); //自增1,如不存在key, 賦值為1(只對(duì)整數(shù)有效, 存儲(chǔ)以10進(jìn)制64位,redis中為str)[new_num | false]
$redis->incrby('key', $num); //自增$num, 不存在為賦值, 值需為整數(shù)[new_num | false]
$redis->decr('key'); //自減1,[new_num | false]
$redis->decrby('key', $num); //自減$num,[ new_num | false]
$redis->setex('key', 10, 'value'); //key=value,有效期為10秒[true]
List列表
Redis列表是簡(jiǎn)單的字符串列表,按照插入順序排序。你可以添加一個(gè)元素到列表的頭部(左邊)或者尾部(右邊)
一個(gè)列表最多可以包含 232-1 個(gè)元素 (4294967295, 每個(gè)列表超過(guò)40億個(gè)元素)。
$redis->llen('key'); //返回列表key的長(zhǎng)度, 不存在key返回0, [ len | 0]
$redis->lpush('key', 'value'); //增,只能將一個(gè)值value插入到列表key的表頭(左側(cè)),不存在就創(chuàng)建 [列表的長(zhǎng)度 |false]
$redis->rpush('key', 'value'); //增,只能將一個(gè)值value插入到列表key的表尾(右側(cè)) [列表的長(zhǎng)度 |false]
$redis->lInsert('key', Redis::AFTER, 'value', 'new_value'); //增,將值value插入到列表key當(dāng)中,位于值value之前或之后。[new_len | false]
$redis->lpushx('key', 'value'); //增,只能將一個(gè)值value插入到列表key的表頭,不存在不創(chuàng)建 [列表的長(zhǎng)度 |false]
$redis->rpushx('key', 'value'); //增,只能將一個(gè)值value插入到列表key的表尾,不存在不創(chuàng)建 [列表的長(zhǎng)度 |false]
$redis->lpop('key'); //刪,移除并返回列表key的頭元素, [被刪元素 | false]
$redis->rpop('key'); //刪,移除并返回列表key的尾元素, [被刪元素 | false]
$redis->lrem('key', 'value', 0); //刪,根據(jù)參數(shù)count的值,移除列表中與參數(shù)value相等的元素count=(0|-n表頭向尾|+n表尾向頭移除n個(gè)value) [被移除的數(shù)量 | 0]
$redis->ltrim('key', start, end); //刪,列表修剪,保留(start, end)之間的值 [true|false]
$redis->lset('key', index, 'new_v'); //改,從表頭數(shù),將列表key下標(biāo)為第index的元素的值為new_v, [true | false]
$redis->lindex('key', index); //查,返回列表key中,下標(biāo)為index的元素[value|false]
$redis->lrange('key', 0, -1); //查,(start, stop|0, -1)返回列表key中指定區(qū)間內(nèi)的元素,區(qū)間以偏移量start和stop指定。[array|false]
Hash字典
Redis hash 是一個(gè)string類型的field和value的映射表,hash特別適合用于存儲(chǔ)對(duì)象。Redis 中每個(gè) hash 可以存儲(chǔ)40多億鍵值對(duì)。
$redis->hset('key', 'field', 'value'); //增,改,將哈希表key中的域field的值設(shè)為value, 不存在創(chuàng)建, 存在就覆蓋【1 | 0】
$redis->hget('key', 'field'); //查,取值【value|false】
$arr = array('one'=>1, 2, 3);$arr2 = array('one', 0, 1);
$redis->hmset('key', $arr); //增,改,設(shè)置多值$arr為(索引|關(guān)聯(lián))數(shù)組, $arr[key]=field, [ true ]
$redis->hmget('key', $arr2); //查,獲取指定下標(biāo)的field,[$arr | false]
$redis->hgetall('key'); //查,返回哈希表key中的所有域和值。[當(dāng)key不存在時(shí),返回一個(gè)空表]
$redis->hkeys('key'); //查,返回哈希表key中的所有域。[當(dāng)key不存在時(shí),返回一個(gè)空表]
$redis->hvals('key'); //查,返回哈希表key中的所有值。[當(dāng)key不存在時(shí),返回一個(gè)空表]
$redis->hdel('key', $arr2); //刪,刪除指定下標(biāo)的field, 不存在的域?qū)⒈缓雎? [num | false]
$redis->hexists('key', 'field'); //查看hash中是否存在field, [1 | 0]
$redis->hincrby('key', 'field', $int_num); //為哈希表key中的域field的值加上量(+|-)num, [new_num | false]
$redis->hlen('key'); //返回哈希表key中域的數(shù)量。[ num | 0]
Set集合
Redis 的 Set 是 String 類型的無(wú)序集合。集合成員是唯一的,這就意味著集合中不能出現(xiàn)重復(fù)的數(shù)據(jù)。
Redis 中集合是通過(guò)哈希表實(shí)現(xiàn)的,所以添加,刪除,查找的復(fù)雜度都是 O(1)。
$redis->sadd('key', 'value1', 'value2', 'valuen'); //增,改,將一個(gè)或多個(gè)member元素加入到集合key當(dāng)中,已經(jīng)存在于集合的member元素將被忽略。[insert_num]
$redis->srem('key', 'value1', 'value2', 'valuen'); //刪,移除集合key中的一個(gè)或多個(gè)member元素,不存在的member元素會(huì)被忽略 [del_num | false]
$redis->smembers('key'); //查,返回集合key中的所有成員 [array | '']
$redis->sismember('key', 'member'); //判斷member元素是否是集合key的成員 [1 | 0]
$redis->spop('key'); //刪,移除并返回集合中的一個(gè)隨機(jī)元素 [member | false]
$redis->srandmember('key'); //查,返回集合中的一個(gè)隨機(jī)元素 [member | false]
$redis->sinter('key1', 'key2', 'keyn'); //查,返回所有給定集合的交集 [array | false]
$redis->sunion('key1', 'key2', 'keyn'); //查,返回所有給定集合的并集 [array | false]
$redis->sdiff('key1', 'key2', 'keyn'); //查,返回所有給定集合的差集 [array | false]
Sorted Set有序集合
Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重復(fù)的成員。
不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類型的分?jǐn)?shù)。redis正是通過(guò)分?jǐn)?shù)來(lái)為集合中的成員進(jìn)行從小到大的排序。
有序集合的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)。
$redis->zAdd('key', $score1, $member1, $scoreN, $memberN); //增,改,將一個(gè)或多個(gè)member元素及其score值加入到有序集key當(dāng)中。[num | 0]
$redis->zrem('key', 'member1', 'membern'); //刪,移除有序集key中的一個(gè)或多個(gè)成員,不存在的成員將被忽略。[del_num | 0]
$redis->zscore('key', 'member'); //查, 通過(guò)值反拿權(quán) [num | null]
$redis->zrange('key', $start, $stop); //查,通過(guò)(score從小到大)【排序名次范圍】拿member值,返回有序集key中,【指定區(qū)間內(nèi)】的成員 [array | null]
$redis->zrevrange('key', $start, $stop); //查,通過(guò)(score從大到小)【排序名次范圍】拿member值,返回有序集key中,【指定區(qū)間內(nèi)】的成員 [array | null]
$redis->zrangebyscore('key', $min, $max[, $config]); //查,通過(guò)scroe權(quán)范圍拿member值,返回有序集key中,指定區(qū)間內(nèi)的(從小到大排)成員[array | null]
$redis->zrevrangebyscore('key', $max, $min[, $config]); //查,通過(guò)scroe權(quán)范圍拿member值,返回有序集key中,指定區(qū)間內(nèi)的(從大到小排)成員[array | null]
$redis->zrank('key', 'member'); //查,通過(guò)member值查(score從小到大)排名結(jié)果中的【member排序名次】[order | null]
$redis->zrevrank('key', 'member'); //查,通過(guò)member值查(score從大到小)排名結(jié)果中的【member排序名次】[order | null]
$redis->ZINTERSTORE(); //交集
$redis->ZUNIONSTORE(); //差集
Server服務(wù)
Phpredis提供服務(wù)級(jí)別的操作方法,輕松管理redis。
$redis->dbSize(); //返回當(dāng)前庫(kù)中的key的個(gè)數(shù)
$redis->flushAll(); //清空整個(gè)redis[總true]
$redis->flushDB(); //清空當(dāng)前redis庫(kù)[總true]
$redis->save(); //同步??把數(shù)據(jù)存儲(chǔ)到磁盤(pán)-dump.rdb[true]
$redis->bgsave(); //異步??把數(shù)據(jù)存儲(chǔ)到磁盤(pán)-dump.rdb[true]
$redis->info(); //查詢當(dāng)前redis的狀態(tài) [verson:2.4.5....]
$redis->lastSave(); //上次存儲(chǔ)時(shí)間key的時(shí)間[timestamp]
$redis->watch('key', 'keyn'); //監(jiān)視一個(gè)(或多個(gè)) key ,如果在事務(wù)執(zhí)行之前這個(gè)(或這些) key 被其他命令所改動(dòng),那么事務(wù)將被打斷 [true]
$redis->unwatch('key', 'keyn'); //取消監(jiān)視一個(gè)(或多個(gè)) key [true]
$redis->multi(Redis::MULTI); //開(kāi)啟事務(wù),事務(wù)塊內(nèi)的多條命令會(huì)按照先后順序被放進(jìn)一個(gè)隊(duì)列當(dāng)中,最后由 EXEC 命令在一個(gè)原子時(shí)間內(nèi)執(zhí)行。
$redis->multi(Redis::PIPELINE); //開(kāi)啟管道,事務(wù)塊內(nèi)的多條命令會(huì)按照先后順序被放進(jìn)一個(gè)隊(duì)列當(dāng)中,最后由 EXEC 命令在一個(gè)原子時(shí)間內(nèi)執(zhí)行。
$redis->exec(); //執(zhí)行所有事務(wù)塊內(nèi)的命令,;【事務(wù)塊內(nèi)所有命令的返回值,按命令執(zhí)行的先后順序排列,當(dāng)操作被打斷時(shí),返回空值 false】
總結(jié)
以上是生活随笔為你收集整理的redis在php中的用法,使用PHP-redis操作Redis的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php 开启 pathinfo,ngin
- 下一篇: php文件管理器工具,八年PHP文件管理