中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php操作redis數據庫常見方法有哪些

發布時間:2021-05-07 10:25:08 來源:億速云 閱讀:129 作者:小新 欄目:開發技術

這篇文章主要介紹了php操作redis數據庫常見方法有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

php有什么用

php是一個嵌套的縮寫名稱,是英文超級文本預處理語言,它的語法混合了C、Java、Perl以及php自創新的語法,主要用來做網站開發,許多小型網站都用php開發,因為php是開源的,從而使得php經久不衰。

redis連接與驗證

<?php
//創建一個redis客戶端
$redis = new Redis();
//連接redis服務,指定主機,端口,和超時時間
$redis->connect('127.0.0.1', 6379, 60);
//進行密碼驗證
$redis->auth('');

redis的字符串(string)操作

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

redis的哈希(hash)操作

//設置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);
//批量設置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不存在時返回空數組
$ret = $redis->hKeys('user');
var_dump($ret);
//獲取hash表中所有字段值
$ret = $redis->hVals('user');
var_dump($ret);
//當hash表中字段不存在時,設置值。如果hash表不存在先創建,若字段存在,不作任何操作。
//設置成功返回true,否則返回false
$ret = $redis->hSetNx('user', 'height', 172);
var_dump($ret);
//獲取hash表的字段數量,hash不存在返回0
$ret = $redis->hlen('user');
var_dump($ret);
//為hash表中字段值增加指定增量值,如果增量值為負數,則相當于減法操作
//hash表不存在則先創建,字段不存在則初始為0,若字段值為字符串,則返回false
$ret = $redis->hIncrBy('user', 'age', 10);
var_dump($ret);
//為hash表中字段值增加指定浮點增量值
$ret = $redis->hIncrByFloat('user', 'age', 0.25);
var_dump($ret);

五、redis的列表(list)操作

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

六、redis的集合(set)操作

//向集合添加一個或多個成員
//若集合不存在則先創建,若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);
//返回集合中成員的數量。
$ret = $redis->scard('friend');
var_dump($ret);
//移除并返回集合中的一個隨機元素
$ret = $redis->spop('friend');
var_dump($ret);
//返回集合中的一個或多個隨機成員元素,返回元素的數量和情況由函數的第二個參數count決定:
//如果count為正數,且小于集合基數,那么命令返回一個包含count個元素的數組,數組中的元素各不相同。
//如果count大于等于集合基數,那么返回整個集合。
//如果count為負數,那么命令返回一個數組,數組中的元素可能會重復出現多次,而數組的長度為count的絕對值。
$ret = $redis->sRandMember('friend', 2);
var_dump($ret);
//移除集合中指定的一個元素,忽略不存在的元素。刪除成功返回1,否則返回0。
$ret = $redis->sRem('friend', 'xiaowang');
var_dump($ret);
//迭代集合中的元素
//參數:集合的key,迭代器變量,匹配模式,每次返回元素數量(默認為10個)
$ret = $redis->sScan('friend', $iter, 'xiao*', 5);
var_dump($ret);
var_dump($iter);
//將指定成員從一個源集合移動到一個目的集合。
//若源集合不存在或不包含指定元素則不做任何操作,返回false。
//參數:源集合,目標集合,移動元素
$ret = $redis->sMove('friend', 'friend2', 'xiaoxu');
var_dump($ret);
//返回所有給定集合之間的差集,不存在的集合視為空集。
$ret = $redis->sDiff('friend', 'friend2');
var_dump($ret);
//將所有給定集合之間的差集存儲在指定的目的集合中。
//若目的集合已存在則覆蓋它。返回差集元素個數。
//參數:第一個參數為目標集合,存儲差集。
$ret = $redis->sDiffStore('friend3', 'friend2', 'friend');
var_dump($ret);
//返回所有給定集合的交集,不存在的集合視為空集。
$ret = $redis->sInter('friend', 'friend2');
var_dump($ret);
//將所有給定集合的交集存儲在指定的目的集合中。
//若目的集合已存在則覆蓋它。返回交集元素個數。
//參數:第一個參數為目標集合,存儲交集。
$ret = $redis->sInterStore('friend4', 'friend2', 'friend');
var_dump($ret);
//返回所有給定集合的并集,不存在的集合視為空集。
$ret = $redis->sUnion('friend', 'friend2');
var_dump($ret);
//將所有給定集合的并集存儲在指定的目的集合中。
//若目的集合已存在則覆蓋它。返回并集元素個數。
//參數:第一個參數為目標集合,存儲并集。
$ret = $redis->sUnionStore('friend5', 'friend2', 'friend');
var_dump($ret);

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

//將一個或多個成員元素及其分數值加入到有序集當中。
//如果某個成員已經是有序集的成員,則更新這個成員的分數值,并通過重新插入這個成員元素,來保證該成員在正確的位置上。
//分數值可以是整數值或雙精度浮點數。
$ret = $redis->zadd('scores', 60, 'math', 80, 'english', 75, 'chinese');
var_dump($ret);
//返回有序集中指定區間內的成員。成員按分數從小到大排序,分數值相同的則按字典序來排序。
//參數:第四個參數表示是否返回各個元素的分數值,默認為false。
$ret = $redis->zRange('scores', 0, -1, true);
var_dump($ret);
//返回有序集中指定區間內的成員。成員按分數值從大到小排序,分數值相同的則按字典序的逆序來排序。
$ret = $redis->zRevRange('scores', 0, -1, true);
var_dump($ret);
//返回有序集中指定分數區間的成員列表,按分數值從小到大排序,
//分數值相同的則按字典序來排序。默認使用閉區間。
$ret = $redis->zRangeByScore('scores', 60, 90, ['withscores' => true]);
var_dump($ret);
//返回有序集中指定分數區間的成員列表,按分數值遞減排序,
//分數值相同的則按字典序的逆序來排序。
//注意,區間表示的時候大值在前,小值在后,默認使用閉區間。
$ret = $redis->zRevRangeByScore('scores', 90, 60, ['withscores' => true]);
var_dump($ret);
//迭代有序集合中的元素。
//返回值:[元素名 => 分數值, ...]
$ret = $redis->zScan('scores', $iter, '*', 10);
var_dump($ret);
var_dump($iter);
//返回指定有序集的元素數量。
$ret = $redis->zCard('scores');
var_dump($ret);
//返回有序集中指定分數區間的成員數量。
$ret = $redis->zCount('scores', 60, 90);
var_dump($ret);
//返回有序集中指定成員的分數值。若成員不存在則返回false。
$ret = $redis->zScore('scores', 'english');
var_dump($ret);
//返回有序集中指定成員的排名,按分數值從小到大排序。分數值最小者排名為0。
$ret = $redis->zRank('scores', 'english');
var_dump($ret);
//返回有序集中指定成員的排名,按分數值從大到小排序。分數值最大者排名為0。
$ret = $redis->zRevRank('scores', 'english');
var_dump($ret);
//移除有序集中的一個或多個成員,忽略不存在的成員。返回刪除的元素個數。
$ret = $redis->zRem('scores', 'english');
var_dump($ret);
//移除有序集中指定排名區間的所有成員。
$ret = $redis->zRemRangeByRank('scores', 0, 2);
var_dump($ret);
//移除有序集中指定分數值區間的所有成員。
$ret = $redis->zRemRangeByScore('scores', 60, 90);
var_dump($ret);
//對有序集中指定成員的分數值增加指定增量值。
//若為負數則做減法,若有序集不存在則先創建,若有序集中沒有對應成員則先添加,最后再操作。
$ret = $redis->zIncrBy('scores', 2, 'chinese');
var_dump($ret);
//計算給定一個或多個有序集的交集,并將其存儲到一個目的有序集中。
//參數:目的有序集合,多個有序集合,多個有序集合的權重,合并有序集合的方式(成員的分數值與權重相乘后的是相加或是比較大小)
$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);
//計算給定一個或多個有序集的并集,并將其存儲到一個目的有序集中。
//結果集中某個成員的分數值是所有給定集下該成員分數值之和。
$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);

感謝你能夠認真閱讀完這篇文章,希望小編分享的“php操作redis數據庫常見方法有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

酒泉市| 西乌珠穆沁旗| 贡嘎县| 丰原市| 甘谷县| 东平县| 云霄县| 黎平县| 柏乡县| 四川省| 威宁| 荆州市| 马尔康县| 临海市| 蒙阴县| 宾川县| 房产| 顺义区| 朔州市| 福建省| 吴川市| 清远市| 株洲市| 安义县| 敖汉旗| 石狮市| 栾城县| 黄龙县| 武鸣县| 长宁区| 额尔古纳市| 正蓝旗| 新化县| 霍州市| 远安县| 宜川县| 陈巴尔虎旗| 弥渡县| 黔西| 霍林郭勒市| 那坡县|