欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php操作redis數(shù)據(jù)庫常見方法實(shí)例總結(jié)

 更新時(shí)間:2020年02月20日 11:59:53   作者:懷素真  
這篇文章主要介紹了php操作redis數(shù)據(jù)庫常見方法,結(jié)合實(shí)例形式總結(jié)分析了PHP操作redis數(shù)據(jù)庫的基本安裝、連接、字符串、哈希表、列表、集合等相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了php操作redis數(shù)據(jù)庫常見方法。分享給大家供大家參考,具體如下:

一、安裝php_redis擴(kuò)展,用以操作redis

http://pecl.php.net/package/redis

選擇自已系統(tǒng)php版本對應(yīng)的擴(kuò)展。

二、redis連接與驗(yàn)證

<?php
//創(chuàng)建一個(gè)redis客戶端
$redis = new Redis();
//連接redis服務(wù),指定主機(jī),端口,和超時(shí)時(shí)間
$redis->connect('127.0.0.1', 6379, 60);
//進(jìn)行密碼驗(yàn)證
$redis->auth('');

三、redis的字符串(string)操作

//設(shè)置鍵的值,成功返回true,失敗返回false
$ret = $redis->set('app_id', '1234567890');
var_dump($ret);
//獲取鍵的值,成功返回鍵值,失敗返回false
$ret = $redis->get('app_id');
var_dump($ret);
//設(shè)置鍵的值從指定偏移量開始,替換成指定字符串,成功返回新字符串的長度
$ret = $redis->setRange('app_id', 2, '666');
var_dump($ret);
//獲取鍵的值,通過開始索引和結(jié)束索引,獲取的子符串包括開始索引和結(jié)束索引
$ret = $redis->getRange('app_id', 0, -1);
var_dump($ret);
$ret = $redis->getRange('app_id', 3, 6);
var_dump($ret);
//設(shè)置新值,返回舊值,如果key不存在,則設(shè)置值,返回false
$ret = $redis->getSet('app_id', '666666666');
var_dump($ret);
//一次設(shè)置多個(gè)鍵值對
$ret = $redis->mset(['db_name' => 'test', 'db_host' => 'localhost']);
var_dump($ret);
//一次獲取多個(gè)鍵值對,返回一個(gè)數(shù)組
$ret = $redis->mget(['db_name', 'db_host']);
var_dump($ret);
//設(shè)置鍵值,和過期時(shí)間,單位:秒,成功返回true
$ret = $redis->setex('name', 10, 'hello');
var_dump($ret);
//設(shè)置鍵值,過期時(shí)間以毫秒為單位
$ret = $redis->psetex('age', 10, '28');
var_dump($ret);
//key不存在時(shí),才設(shè)置值,key不存在且設(shè)置成功返回true,否則返回false
$ret = $redis->setnx('name', 'test');
var_dump($ret);
//setnx的批量操作,只有在所有key都不存在時(shí)才能設(shè)置成功,否則,有一個(gè)key存在,所有key都無法設(shè)置成功
$ret = $redis->msetnx(['name' => 'hello', 'age' => '28', 'sex' => '男']);
var_dump($ret);
//獲取鍵值的字符串長度,如果key不存在,返回0,如果值不為字符串返回false
$ret = $redis->strlen('name');
var_dump($ret);
//將key中存儲(chǔ)的數(shù)字值加1,如果key不存在先初始為0再加1,如果存儲(chǔ)的不是數(shù)字值,則返回false,成功返回新增值
$ret = $redis->incr('age');
var_dump($ret);
//將key中存儲(chǔ)的數(shù)字值加指定增量值
$ret = $redis->incrBy('age', 10);
var_dump($ret);
//將key中存儲(chǔ)的數(shù)字值加指定浮點(diǎn)增量值
$ret = $redis->incrByFloat('age', 0.25);
var_dump($ret);
//將key中存儲(chǔ)的數(shù)字值減1
$ret = $redis->decr('age');
var_dump($ret);
//將key中存儲(chǔ)的數(shù)字值減指定減量值
$ret = $redis->decrBy('age', 10);
var_dump($ret);
//給指定key的值,追加值到原值末尾,如果key不存在,則相當(dāng)于set()函數(shù)
$ret = $redis->append('name', 'hahaha');
var_dump($ret);

四、redis的哈希(hash)操作

//設(shè)置hash表中的鍵值,成功返回1,失敗返回0
$ret = $redis->hSet('user', 'name', 'xiaoxu');
var_dump($ret);
//獲取hash表中鍵的值,如果hash表中不存在,則返回false
$ret = $redis->hget('user', 'name');
var_dump($ret);
//判斷hash表中字段是否存在,存在返回true,失敗返回false
$ret = $redis->hExists('user', 'name');
var_dump($ret);
//刪除hash表中的字段,成功返回1,失敗返回0
$ret = $redis->hDel('user', 'name');
var_dump($ret);
//批量設(shè)置hash表中字段的值,成功返回true
$ret = $redis->hMSet('user', ['name' => 'xiaoxu', 'age' => 28, 'sex' => '男']);
var_dump($ret);
//批量獲取hash表中字段的值
$ret = $redis->hMGet('user', ['name', 'age', 'sex']);
var_dump($ret);
//獲取hash表中所有字段和值
$ret = $redis->hGetAll('user');
var_dump($ret);
//獲取hash表中所有字段名,hash不存在時(shí)返回空數(shù)組
$ret = $redis->hKeys('user');
var_dump($ret);
//獲取hash表中所有字段值
$ret = $redis->hVals('user');
var_dump($ret);
//當(dāng)hash表中字段不存在時(shí),設(shè)置值。如果hash表不存在先創(chuàng)建,若字段存在,不作任何操作。
//設(shè)置成功返回true,否則返回false
$ret = $redis->hSetNx('user', 'height', 172);
var_dump($ret);
//獲取hash表的字段數(shù)量,hash不存在返回0
$ret = $redis->hlen('user');
var_dump($ret);
//為hash表中字段值增加指定增量值,如果增量值為負(fù)數(shù),則相當(dāng)于減法操作
//hash表不存在則先創(chuàng)建,字段不存在則初始為0,若字段值為字符串,則返回false
$ret = $redis->hIncrBy('user', 'age', 10);
var_dump($ret);
//為hash表中字段值增加指定浮點(diǎn)增量值
$ret = $redis->hIncrByFloat('user', 'age', 0.25);
var_dump($ret);

五、redis的列表(list)操作

//從列表頭部插入一個(gè)值
$ret = $redis->lpush('students', 'xiaoxu');
$ret = $redis->lpush('students', 'xiaoxu2');
var_dump($ret);
//從列表尾部插入一個(gè)值
$ret = $redis->rpush('students', 'xiaowang');
$ret = $redis->rpush('students', 'xiaowang2');
var_dump($ret);
//獲取列表指定范圍內(nèi)的元素,0表示第一個(gè)元素,-1表示最后一個(gè)元素
$ret = $redis->lRange('students', 0, -1);
var_dump($ret);
//將一個(gè)值插入到已存在的列表頭部,列表不存在時(shí)操作無效。
$ret = $redis->lPushx('students', 'xiaozhang');
var_dump($ret);
//將一個(gè)值插入到已存在的列表尾部,列表不存在時(shí)操作無效。
$ret = $redis->rPushx('students', 'xiaoli');
var_dump($ret);
//移出并獲取列表的第一個(gè)元素,若key不存在或不是列表則返回false。
$ret = $redis->lpop('students');
var_dump($ret);
//移出并獲取列表的最后一個(gè)元素,若key不存在或不是列表則返回false。
$ret = $redis->rpop('students');
var_dump($ret);
//移出并獲取列表的第一個(gè)元素,如果列表沒有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。
//超時(shí)時(shí)間單位:秒
$ret = $redis->blPop('students', 10);
var_dump($ret);
//移出并獲取列表的最后一個(gè)元素,如果列表沒有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。
$ret = $redis->brPop('students', 10);
var_dump($ret);
//移除列表中最后一個(gè)元素,將其插入另一個(gè)列表頭部,并返回這個(gè)元素。若源列表沒有元素則返回false。
$ret = $redis->rpoplpush('students', 'students2');
var_dump($ret);
//移除列表中最后一個(gè)元素,將其插入另一個(gè)列表頭部,并返回這個(gè)元素。
//如果列表沒有元素則會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。
//超時(shí)時(shí)間單位:秒
$ret = $redis->brpoplpush('students', 'students2', 10);
var_dump($ret);
//獲取列表的長度
$ret = $redis->lLen('students2');
var_dump($ret);
//通過索引獲取列表中的元素。若索引超出列表范圍則返回false。
$ret = $redis->lIndex('students2', 0);
var_dump($ret);
//通過索引設(shè)置列表中元素的值。若是索引超出范圍,或?qū)σ粋€(gè)空列表進(jìn)行l(wèi)set操作,則返回false。
$ret = $redis->lSet('students2', 0, 'xiaomi');
var_dump($ret);
//在列表中指定元素前或后面插入元素。若指定元素不在列表中,或列表不存在時(shí),不執(zhí)行任何操作。
//參數(shù):列表的key,Redis::AFTER或Redis::BEFORE,基準(zhǔn)元素,插入元素
//返回值:插入成功返回插入后列表元素個(gè)數(shù),若基準(zhǔn)元素不存在返回-1,若key不存在返回0,若key不是列表返回false。
$ret = $redis->lInsert('students2', Redis::AFTER, 'xiaomi', 'xiaoji');
var_dump($ret);
//根據(jù)第三個(gè)參數(shù)count的值,移除列表中與參數(shù)value相等的元素。
//count > 0 : 從表頭開始向表尾搜索,移除與value相等的元素,數(shù)量為count。
//count < 0 : 從表尾開始向表頭搜索,移除與value相等的元素,數(shù)量為count的絕對值。
//count = 0 : 移除表中所有與value相等的值。
//返回實(shí)際刪除元素個(gè)數(shù)
$ret = $redis->lrem('students2', 'xiaomi', 0);
var_dump($ret);
//對列表進(jìn)行修剪,只保留指定區(qū)間的元素,其他元素都刪除。成功返回true。
$ret = $redis->ltrim('students2', 0, -1);
var_dump($ret);

六、redis的集合(set)操作

//向集合添加一個(gè)或多個(gè)成員
//若集合不存在則先創(chuàng)建,若key不是集合類型則返回false
//若元素已存在返回0,插入成功返回1。
$ret = $redis->sAdd('friend', 'xiaoxu', 'xiaowang', 'xiaoli', 'xiaozhang');
var_dump($ret);
//返回集合中所有成員。
$ret = $redis->sMembers('friend');
var_dump($ret);
//判斷元素是否是集合key的成員
$ret = $redis->sIsMember('friend', 'xiaoxu');
var_dump($ret);
//返回集合中成員的數(shù)量。
$ret = $redis->scard('friend');
var_dump($ret);
//移除并返回集合中的一個(gè)隨機(jī)元素
$ret = $redis->spop('friend');
var_dump($ret);
//返回集合中的一個(gè)或多個(gè)隨機(jī)成員元素,返回元素的數(shù)量和情況由函數(shù)的第二個(gè)參數(shù)count決定:
//如果count為正數(shù),且小于集合基數(shù),那么命令返回一個(gè)包含count個(gè)元素的數(shù)組,數(shù)組中的元素各不相同。
//如果count大于等于集合基數(shù),那么返回整個(gè)集合。
//如果count為負(fù)數(shù),那么命令返回一個(gè)數(shù)組,數(shù)組中的元素可能會(huì)重復(fù)出現(xiàn)多次,而數(shù)組的長度為count的絕對值。
$ret = $redis->sRandMember('friend', 2);
var_dump($ret);
//移除集合中指定的一個(gè)元素,忽略不存在的元素。刪除成功返回1,否則返回0。
$ret = $redis->sRem('friend', 'xiaowang');
var_dump($ret);
//迭代集合中的元素
//參數(shù):集合的key,迭代器變量,匹配模式,每次返回元素?cái)?shù)量(默認(rèn)為10個(gè))
$ret = $redis->sScan('friend', $iter, 'xiao*', 5);
var_dump($ret);
var_dump($iter);
//將指定成員從一個(gè)源集合移動(dòng)到一個(gè)目的集合。
//若源集合不存在或不包含指定元素則不做任何操作,返回false。
//參數(shù):源集合,目標(biāo)集合,移動(dòng)元素
$ret = $redis->sMove('friend', 'friend2', 'xiaoxu');
var_dump($ret);
//返回所有給定集合之間的差集,不存在的集合視為空集。
$ret = $redis->sDiff('friend', 'friend2');
var_dump($ret);
//將所有給定集合之間的差集存儲(chǔ)在指定的目的集合中。
//若目的集合已存在則覆蓋它。返回差集元素個(gè)數(shù)。
//參數(shù):第一個(gè)參數(shù)為目標(biāo)集合,存儲(chǔ)差集。
$ret = $redis->sDiffStore('friend3', 'friend2', 'friend');
var_dump($ret);
//返回所有給定集合的交集,不存在的集合視為空集。
$ret = $redis->sInter('friend', 'friend2');
var_dump($ret);
//將所有給定集合的交集存儲(chǔ)在指定的目的集合中。
//若目的集合已存在則覆蓋它。返回交集元素個(gè)數(shù)。
//參數(shù):第一個(gè)參數(shù)為目標(biāo)集合,存儲(chǔ)交集。
$ret = $redis->sInterStore('friend4', 'friend2', 'friend');
var_dump($ret);
//返回所有給定集合的并集,不存在的集合視為空集。
$ret = $redis->sUnion('friend', 'friend2');
var_dump($ret);
//將所有給定集合的并集存儲(chǔ)在指定的目的集合中。
//若目的集合已存在則覆蓋它。返回并集元素個(gè)數(shù)。
//參數(shù):第一個(gè)參數(shù)為目標(biāo)集合,存儲(chǔ)并集。
$ret = $redis->sUnionStore('friend5', 'friend2', 'friend');
var_dump($ret);

七、redis的有序集合(sorted set)操作

//將一個(gè)或多個(gè)成員元素及其分?jǐn)?shù)值加入到有序集當(dāng)中。
//如果某個(gè)成員已經(jīng)是有序集的成員,則更新這個(gè)成員的分?jǐn)?shù)值,并通過重新插入這個(gè)成員元素,來保證該成員在正確的位置上。
//分?jǐn)?shù)值可以是整數(shù)值或雙精度浮點(diǎn)數(shù)。
$ret = $redis->zadd('scores', 60, 'math', 80, 'english', 75, 'chinese');
var_dump($ret);
//返回有序集中指定區(qū)間內(nèi)的成員。成員按分?jǐn)?shù)從小到大排序,分?jǐn)?shù)值相同的則按字典序來排序。
//參數(shù):第四個(gè)參數(shù)表示是否返回各個(gè)元素的分?jǐn)?shù)值,默認(rèn)為false。
$ret = $redis->zRange('scores', 0, -1, true);
var_dump($ret);
//返回有序集中指定區(qū)間內(nèi)的成員。成員按分?jǐn)?shù)值從大到小排序,分?jǐn)?shù)值相同的則按字典序的逆序來排序。
$ret = $redis->zRevRange('scores', 0, -1, true);
var_dump($ret);
//返回有序集中指定分?jǐn)?shù)區(qū)間的成員列表,按分?jǐn)?shù)值從小到大排序,
//分?jǐn)?shù)值相同的則按字典序來排序。默認(rèn)使用閉區(qū)間。
$ret = $redis->zRangeByScore('scores', 60, 90, ['withscores' => true]);
var_dump($ret);
//返回有序集中指定分?jǐn)?shù)區(qū)間的成員列表,按分?jǐn)?shù)值遞減排序,
//分?jǐn)?shù)值相同的則按字典序的逆序來排序。
//注意,區(qū)間表示的時(shí)候大值在前,小值在后,默認(rèn)使用閉區(qū)間。
$ret = $redis->zRevRangeByScore('scores', 90, 60, ['withscores' => true]);
var_dump($ret);
//迭代有序集合中的元素。
//返回值:[元素名 => 分?jǐn)?shù)值, ...]
$ret = $redis->zScan('scores', $iter, '*', 10);
var_dump($ret);
var_dump($iter);
//返回指定有序集的元素?cái)?shù)量。
$ret = $redis->zCard('scores');
var_dump($ret);
//返回有序集中指定分?jǐn)?shù)區(qū)間的成員數(shù)量。
$ret = $redis->zCount('scores', 60, 90);
var_dump($ret);
//返回有序集中指定成員的分?jǐn)?shù)值。若成員不存在則返回false。
$ret = $redis->zScore('scores', 'english');
var_dump($ret);
//返回有序集中指定成員的排名,按分?jǐn)?shù)值從小到大排序。分?jǐn)?shù)值最小者排名為0。
$ret = $redis->zRank('scores', 'english');
var_dump($ret);
//返回有序集中指定成員的排名,按分?jǐn)?shù)值從大到小排序。分?jǐn)?shù)值最大者排名為0。
$ret = $redis->zRevRank('scores', 'english');
var_dump($ret);
//移除有序集中的一個(gè)或多個(gè)成員,忽略不存在的成員。返回刪除的元素個(gè)數(shù)。
$ret = $redis->zRem('scores', 'english');
var_dump($ret);
//移除有序集中指定排名區(qū)間的所有成員。
$ret = $redis->zRemRangeByRank('scores', 0, 2);
var_dump($ret);
//移除有序集中指定分?jǐn)?shù)值區(qū)間的所有成員。
$ret = $redis->zRemRangeByScore('scores', 60, 90);
var_dump($ret);
//對有序集中指定成員的分?jǐn)?shù)值增加指定增量值。
//若為負(fù)數(shù)則做減法,若有序集不存在則先創(chuàng)建,若有序集中沒有對應(yīng)成員則先添加,最后再操作。
$ret = $redis->zIncrBy('scores', 2, 'chinese');
var_dump($ret);
//計(jì)算給定一個(gè)或多個(gè)有序集的交集,并將其存儲(chǔ)到一個(gè)目的有序集中。
//參數(shù):目的有序集合,多個(gè)有序集合,多個(gè)有序集合的權(quán)重,合并有序集合的方式(成員的分?jǐn)?shù)值與權(quán)重相乘后的是相加或是比較大小)
$redis->zAdd('s1', 1, '111');
$redis->zAdd('s1', 2, '222');
$redis->zAdd('s1', 3, '333');
$redis->zAdd('s2', 4, '222');
$redis->zAdd('s2', 5, '333');
$ret = $redis->zInter('s3', ['s1', 's2'], [1, 5], 'SUM');
// ['222' => 22, '333' => 28]
var_dump($ret);
$ret = $redis->zInter('s4', ['s1', 's2'], [1, 5], 'MIN');
// ['222' => 2, '333' => 3]
var_dump($ret);
$ret = $redis->zInter('s5', ['s1', 's2'], [1, 5], 'MAX');
// ['222' => 20, '333' => 25]
var_dump($ret);
//計(jì)算給定一個(gè)或多個(gè)有序集的并集,并將其存儲(chǔ)到一個(gè)目的有序集中。
//結(jié)果集中某個(gè)成員的分?jǐn)?shù)值是所有給定集下該成員分?jǐn)?shù)值之和。
$ret = $redis->zUnion('s6', ['s1', 's2'], [5, 1], 'SUM');
// ['111' => 5, '222' => 14, '333' => 20]
var_dump($ret);
$ret = $redis->zUnion('s7', ['s1', 's2'], [5, 1], 'MIN');
// ['222' => 4, '111' => 5, '333' => 5]
var_dump($ret);
$ret = $redis->zUnion('s8', ['s1', 's2'], [5, 1], 'MAX');
// ['111' => 5, '222' => 10, '333' => 15]
var_dump($ret);

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php+redis數(shù)據(jù)庫程序設(shè)計(jì)技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP基本語法入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 隊(duì)列在編程中的實(shí)際應(yīng)用(php)

    隊(duì)列在編程中的實(shí)際應(yīng)用(php)

    隊(duì)列(Queue)是運(yùn)算受到限制的一種線性表。只允許在表的一端進(jìn)行插入,而在另一端進(jìn)行刪除元素的線性表。隊(duì)尾(rear)是允許插入的一端。隊(duì)頭(front)是允許刪除的一端??贞?duì)列是不含元素的空表。
    2010-09-09
  • 淺析Apache中RewriteCond規(guī)則參數(shù)的詳細(xì)介紹

    淺析Apache中RewriteCond規(guī)則參數(shù)的詳細(xì)介紹

    Apache中 RewriteCond語句對于我來說一直是個(gè)難點(diǎn),多次試圖去把它搞明白,都沒有結(jié)構(gòu),這次我終于算大概知道它的意思了
    2013-06-06
  • PHP編程過程中需要了解的this,self,parent的區(qū)別

    PHP編程過程中需要了解的this,self,parent的區(qū)別

    this是指向?qū)ο髮?shí)例的一個(gè)指針,在實(shí)例化的時(shí)候來確定指向;self是對類本身的一個(gè)引用,一般用來指向類中的靜態(tài)變量;parent是對父類的引用,一般使用parent來調(diào)用父類的構(gòu)造函數(shù)。
    2009-12-12
  • PHP中引用類型和值類型功能與用法示例

    PHP中引用類型和值類型功能與用法示例

    這篇文章主要介紹了PHP中引用類型和值類型功能與用法,簡單分析了php引用類型和值類型的概念、功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-02-02
  • php 定界符格式引起的錯(cuò)誤

    php 定界符格式引起的錯(cuò)誤

    下面是一個(gè)錯(cuò)誤的代碼,能看出哪里出錯(cuò)了么??對于我這個(gè)初學(xué)者什么都是蒙蒙懂的,真的無從下手,但是真的要自己嘗試了才知道哪里錯(cuò)了,書和教程都不會(huì)告訴我哪里錯(cuò)了
    2011-05-05
  • PHP讀取目錄樹的實(shí)現(xiàn)方法分析

    PHP讀取目錄樹的實(shí)現(xiàn)方法分析

    這篇文章主要介紹了PHP讀取目錄樹的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了php針對文件目錄結(jié)構(gòu)的遍歷、讀取操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-03-03
  • PHP Document 代碼注釋規(guī)范

    PHP Document 代碼注釋規(guī)范

    PHPDocumentor是一個(gè)用PHP寫的工具,對于有規(guī)范注釋的php程序,它能夠快速生成具有相互參照,索引等功能的API文檔。老的版本是 phpdoc。
    2009-04-04
  • php實(shí)現(xiàn)與python進(jìn)行socket通信的方法示例

    php實(shí)現(xiàn)與python進(jìn)行socket通信的方法示例

    這篇文章主要介紹了php實(shí)現(xiàn)與python進(jìn)行socket通信的方法,結(jié)合實(shí)例形式分析了php使用自定義類發(fā)送socket請求數(shù)據(jù)及Python接收socket數(shù)據(jù)并處理請求等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • 緩存技術(shù)詳談—php

    緩存技術(shù)詳談—php

    緩存技術(shù)詳談—php...
    2006-12-12
  • Dedecms V3.1 生成HTML速度的優(yōu)化辦法

    Dedecms V3.1 生成HTML速度的優(yōu)化辦法

    Dedecms V3.1 生成HTML速度的優(yōu)化辦法...
    2007-03-03

最新評論