redis 實際測試,第二部分

redis 實際測試(由於功能太多,我就挑幾個重要的吧)

這個哥哥的博客非常好https://www.cnblogs.com/chrdai/p/6825684.html

list操作(列表用於隊列)

lPush 插入隊列頭,一個或者多個

var_dump($redis -> lPush('favorite_fruit','cherry'));     // key 不存在,創建一個新的列表, 返回 int 1
var_dump($redis -> lPush('favorite_fruit','banana'));     // key 存在。但是 list 類型, 返回 int 2
var_dump($redis -> lPush('ooo','cherry','777'));     // key 不存在,創建一個新的列表, 返回 id值
$redis -> set('pats','dog');
var_dump($redis -> lPush('pats','cat'));     // key 存在。但不是是 list 類型, 返回 boolean false

rPush 插入隊列尾,一個或者多個

var_dump($redis -> rPush('favorite_fruit','cherry'));     // key 不存在,創建一個新的列表, 返回 int 1
var_dump($redis -> rPush('favorite_fruit','banana'));     // key 存在。但是 list 類型, 返回 int 2
var_dump($redis -> rPush('ooo','cherry','777'));     // key 不存在,創建一個新的列表, 返回 id值
$redis -> set('pats','dog');
var_dump($redis -> rPush('pats','cat'));     // key 存在。但不是是 list 類型, 返回 boolean false

lPop 從頭刪除一個,隊列裏面沒有了

var_dump($redis -> lPush('favorite_fruit','cherry'));
var_dump($redis -> lPush('favorite_fruit','banana'));
var_dump($redis -> lPush('favorite_fruit','apple'));
var_dump($redis -> lPop('favorite_fruit'));             // string apple
var_dump($redis -> lRange('favorite_fruit',0,-1)); //根據id 查找列表區間

rPop 從尾部刪除一個,隊列裏面沒有了

$redis -> lPush('favorite_fruit','cherry');
$redis -> lPush('favorite_fruit','banana');
$redis -> lPush('favorite_fruit','apple');
var_dump($redis -> rPop('favorite_fruit'));             // string cherry
var_dump($redis -> lRange('favorite_fruit',0,-1));

blPop/brPop 移出列表的第一個/最後一個元素,獲取移除內容,如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。

// This first case: 非阻塞行爲,最少有一個非空列表
$redis -> lPush('favorite_fruit','cherry');
$redis -> lPush('favorite_fruit','banana');
$redis -> lPush('favorite_fruit','apple');

$redis -> lPush('pats','dog');
$redis -> lPush('pats','cat');
$redis -> lPush('pats','rabbit');

var_dump($redis -> blPop('favorite_fruit',3));

$array_blpop = array('favorite_fruit','pats');
var_dump($redis -> blPop($array_blpop,3));          // 優先彈出第一個非空列表的頭元素

var_dump($redis -> lRange('favorite_fruit',0,-1));


// This second case: 阻塞行爲, 所有給定key都不存在或包含空列表
var_dump($redis -> blPop('fake_key',2));    // 阻塞鏈接, 2s 之後超時結束,返回 array (size=0) empty

llen 獲取列表長度

$redis -> lPush('favorite_fruit','cherry');
$redis -> lPush('favorite_fruit','banana');
$redis -> lPush('favorite_fruit','apple');

var_dump($redis -> lLen('favorite_fruit'));     // int 3
var_dump($redis -> lLen('fake_key'));           // 列表不存在,返回 int 0

lrange 獲取列表置頂位置內容

$redis -> lPush('favorite_fruit','cherry');
$redis -> lPush('favorite_fruit','banana');
$redis -> lPush('favorite_fruit','apple');
$redis -> lPush('favorite_fruit','peach');
$redis -> lPush('favorite_fruit','pineapple');
$redis -> lPush('favorite_fruit','grape');

var_dump($redis -> lRange('favorite_fruit',1,3));
var_dump($redis -> lRange('favorite_fruit',6,2));     // 當 start > end 時,返回空數組, array (size=0) empty
var_dump($redis -> lRange('favorite_fruit',0,100));   // 當 end 大於列表長

lRem 這個是刪除,三個參數,一個是,哪個列表,二,是刪除哪個元素,三是方向,大於0是從頭到尾,小於0是從尾到頭,等於0是刪除所有

$redis -> lPush('favorite_fruit','cherry');
$redis -> lPush('favorite_fruit','apple');
$redis -> lPush('favorite_fruit','apple');
$redis -> lPush('favorite_fruit','peach');
$redis -> lPush('favorite_fruit','apple');
$redis -> lPush('favorite_fruit','grape');

var_dump($redis -> lRem('favorite_fruit','apple',2));   // int 2    // 從開頭向結尾方向移除 2 個
var_dump($redis -> lRange('favorite_fruit',0,-1));

var_dump($redis -> lRem('favorite_fruit','apple',-1));   // int1    // 從結尾向開頭方向移除 1 個
var_dump($redis -> lRange('favorite_fruit',0,-1));

var_dump($redis -> lRem('favorite_fruit','peach',0));   // int 1    // 移除所有的 value
var_dump($redis -> lRange('favorite_fruit',0,-1));

lset 根據索引,替換值

$redis -> lPush('favorite_fruit','cherry');
$redis -> lPush('favorite_fruit','apple');
$redis -> lPush('favorite_fruit','peach');
$redis -> lPush('favorite_fruit','grape');

var_dump($redis -> lSet('favorite_fruit','1','pineapple'));   // 將第二個元素替換爲 pineapple
var_dump($redis -> lRange('favorite_fruit',0,-1));

var_dump($redis -> lSet('favorite_fruit','100','pitaya'));   // boolean false , 對索引超過範圍進行設置,設置不成功
var_dump($redis -> lSet('fake_key',1,'mango'));              // boolean false , 對不存在的 key 進行設置,設置不成功

lindex 根據索引獲得值

$redis -> lPush('favorite_fruit','cherry');
$redis -> lPush('favorite_fruit','apple');
$redis -> lPush('favorite_fruit','peach');
$redis -> lPush('favorite_fruit','grape');

var_dump($redis -> lIndex('favorite_fruit',2));     // string 'apple'
var_dump($redis -> lRange('favorite_fruit',0,-1));  // 原 list 表不變

linsert 根據索引插入值

$redis -> lPush('favorite_fruit','cherry');
$redis -> lPush('favorite_fruit','apple');
$redis -> lPush('favorite_fruit','peach');
$redis -> lPush('favorite_fruit','grape');

// The first case : 成功插入,返回列表長度
var_dump($redis -> lInsert('favorite_fruit','before','apple','Mango'));     // int 5
var_dump($redis -> lRange('favorite_fruit',0,-1));

// The seconde case : 沒有找到指定元素 ,返回 -1
var_dump($redis -> lInsert('favorite_fruit','before','not_exists','pitaya'));     // int -1
var_dump($redis -> lRange('favorite_fruit',0,-1));      // 原 list 不變

// The third case : 沒有找到指定元素 ,返回 0
var_dump($redis -> lInsert('fake_key','before','apple','watermelon'));     // int 0

Set(集合)(無序)(唯一)用於,相關性的存儲,比如客戶關係等

sadd 添加操作

$redis -> sAdd('myset','hello');
$redis -> sAdd('myset','foo');
$redis -> sAdd('myset','hello');    // 已存在的 key 被忽略

var_dump($redis -> sMembers('myset'));

Srem(刪除) 命令用於移除集合中的一個或多個成員元素,不存在的成員元素會被忽略。

$redis -> sAdd('myset','hello');
$redis -> sAdd('myset','foo');
$redis -> sAdd('myset','world');
$redis -> sAdd('myset','hi');
$redis -> sAdd('myset','welcome');

var_dump($redis -> sRem('myset','hello','foo'));    // int 2
var_dump($redis -> sMembers('myset'));

Smembers(查看所有) 命令返回集合中的所有的成員。 不存在的集合 key 被視爲空集合。

$redis -> sAdd('myset','hello');
$redis -> sAdd('myset','foo');
$redis -> sAdd('myset','world');
$redis -> sAdd('myset','hi');
$redis -> sAdd('myset','welcome');

var_dump($redis -> sMembers('myset'));

Scard 命令返回集合中元素的數量。(統計)

$redis -> sAdd('myset','hello');
$redis -> sAdd('myset','foo');
$redis -> sAdd('myset','world');
$redis -> sAdd('myset','hi');
$redis -> sAdd('myset','welcome');

var_dump($redis -> sCard('myset'));     // int 5

Smove(集合的轉移) 命令將指定成員 member 元素從 source 集合移動到 destination 集合。

$redis -> sAdd('myset','hello');
$redis -> sAdd('myset','foo');
$redis -> sAdd('myset','world');
$redis -> sAdd('myset','hi');
$redis -> sAdd('myset','welcome');
$redis -> sAdd('destinationSet','welcome');

// The first case : member 包含在 source 中
var_dump($redis -> sMove('myset','destinationSet','foo'));  // boolean true
var_dump($redis -> sMembers('myset'));

// The second case : member 不在 source 中
var_dump($redis -> sMove('myset','destinationSet','not_exists'));  // boolean false
var_dump($redis -> sMembers('myset'));

// The third case : destination 中已經包含 member 元素
var_dump($redis -> sMove('myset','destinationSet','welcome'));  // boolean true
var_dump($redis -> sMembers('myset'));          // 只是將 welcome 從 myset 中移除

spop 隨機選擇一個,拿出來,原來集合裏面刪除掉

$redis -> sAdd('myset','hello');
$redis -> sAdd('myset','foo');
$redis -> sAdd('myset','world');
$redis -> sAdd('myset','hi');
$redis -> sAdd('myset','welcome');

// 其值會從原集合中移除
var_dump($redis -> sPop('myset'));      // string world
var_dump($redis -> sMembers('myset'));

Sinter 命令返回給定所有給定集合的交集。

Sunion 命令返回給定集合的並集。

Sdiff 命令返回給定集合之間的差集。

Sismember 命令判斷成員元素是否是集合的成員。

$redis -> sAdd('myset','hello');
$redis -> sAdd('myset','foo');
$redis -> sAdd('myset','world');
$redis -> sAdd('myset','hi');
$redis -> sAdd('myset','welcome');

var_dump($redis -> sIsMember('myset','hello'));     // true
var_dump($redis -> sIsMember('myset','good'));      // false

Sorted-set(有序集合)(圍繞着分數計算)(無序)(唯一)(包含排名)用於,排名積分等

Zadd 命令用於將一個或多個成員元素及其分數值加入到有序集當中。

$redis -> zAdd('myset',0,'hello');
$redis -> zAdd('myset',1,'world');
$redis -> zAdd('myset',1,'foo');      //  集合中的元素唯一,但是分數可以重複
$redis -> zAdd('myset',2,'hi');
$redis -> zAdd('myset',2.5,'welcome');

var_dump($redis -> zRange('myset',0,-1,'withScores'));

$redis -> zAdd('myset',3,'hi');     // hi 已經是 myset 的成員,此時更新分數值並重新插入這個成員元素
var_dump($redis -> zRange('myset',0,-1,'withScores'));

Zrem(刪除) 命令用於移除有序集中的一個或多個成員,不存在的成員將被忽略。

$redis -> zAdd('myset',0,'hello');
$redis -> zAdd('myset',1,'world');
$redis -> zAdd('myset',1,'foo');      //  集合中的元素唯一,但是分數可以重複
$redis -> zAdd('myset',2,'hi');
$redis -> zAdd('myset',2.5,'welcome');

$redis ->zRem('myset','hi');          // 一處集合中的某個元素
var_dump($redis -> zRange('myset',0,-1,'withScores'));

Zcard 命令用於計算集合中元素的數量。(統計集合)

$redis -> zAdd('myset',0,'hello');
$redis -> zAdd('myset',1,'world');
$redis -> zAdd('myset',1,'foo');      //  集合中的元素唯一,但是分數可以重複
$redis -> zAdd('myset',2,'hi');
$redis -> zAdd('myset',2.5,'welcome');

var_dump($redis ->zCard('myset'));          // int 5

Zcount(統計) 命令用於計算有序集合中指定分數區間的成員數量。

$redis -> zAdd('myset',0,'hello');
$redis -> zAdd('myset',1,'world');
$redis -> zAdd('myset',1,'foo');      //  集合中的元素唯一,但是分數可以重複
$redis -> zAdd('myset',2,'hi');
$redis -> zAdd('myset',2.5,'welcome');
$redis -> zAdd('myset',3,'score');

// 1分到3分之間的值有5個
var_dump($redis ->zCount('myset',1,3));          // int 5

Zscore 命令返回有序集中,成員的分數值。 如果成員元素不是有序集 key 的成員,或 key 不存在,

$redis -> zAdd('myset',0,'hello');
$redis -> zAdd('myset',1,'world');
$redis -> zAdd('myset',1,'foo');      //  集合中的元素唯一,但是分數可以重複
$redis -> zAdd('myset',2,'hi');
$redis -> zAdd('myset',2.5,'welcome');
$redis -> zAdd('myset',3,'score');

// 返回 foo 的分數值
var_dump($redis ->zScore('myset','foo'));          // float 1

Zincrby(改變指定分數) 命令對有序集合中指定成員的分數加上增量 increment

$redis -> zAdd('myset',0,'hello');
$redis -> zAdd('myset',1,'world');
$redis -> zAdd('myset',1,'foo');      //  集合中的元素唯一,但是分數可以重複
$redis -> zAdd('myset',2,'hi');
$redis -> zAdd('myset',2.5,'welcome');
$redis -> zAdd('myset',3,'score');

// 將 world 的分數增加0.6
var_dump($redis ->zIncrBy('myset',0.6,'world'));          // float 1.6

// 將 score 的分減去1.2
var_dump($redis ->zIncrBy('myset',-1.2,'score'));          // float 1.8

Zrange(排序) 返回有序集中,指定區間內的成員。

$redis -> zAdd('myset',0,'hello');
$redis -> zAdd('myset',1,'world');
$redis -> zAdd('myset',1,'foo');      //  集合中的元素唯一,但是分數可以重複
$redis -> zAdd('myset',2,'hi');
$redis -> zAdd('myset',2.5,'welcome');
$redis -> zAdd('myset',3,'score');

var_dump($redis ->zRange('myset',0,-1,'withScore'));

Zremrangebyscore(刪除) 命令用於移除有序集中,指定分數(score)區間內的所有成員。

$redis -> zAdd('myset',0,'hello');
$redis -> zAdd('myset',1,'world');
$redis -> zAdd('myset',1,'foo');
$redis -> zAdd('myset',2,'hi');
$redis -> zAdd('myset',2.5,'welcome');
$redis -> zAdd('myset',3,'score');

var_dump($redis ->zRevRangeByScore('myset',3,2));

var_dump($redis ->zRevRangeByScore('myset','+inf','-inf'));    // 返回分數值從正無窮到負無窮之間的值

var_dump($redis -> zRange('myset',0,-1,'withScore'));       // 原集合不變

Zinter 命令計算給定的一個或多個有序集的交集.

Zunionstore 命令計算給定的一個或多個有序集的並集.

Zrank 返回有序集中指定成員的排名

$redis -> zAdd('myset',0,'hello');
$redis -> zAdd('myset',1,'world');
$redis -> zAdd('myset',1,'foo');
$redis -> zAdd('myset',2,'hi');
$redis -> zAdd('myset',2.5,'welcome');
$redis -> zAdd('myset',3,'score');

var_dump($redis ->zRank('myset','welcome'));    // int 4

Zrevrank(排名) 命令返回有序集中成員的排名。

$redis -> zAdd('myset',0,'hello');
$redis -> zAdd('myset',1,'world');
$redis -> zAdd('myset',1,'foo');
$redis -> zAdd('myset',2,'hi');
$redis -> zAdd('myset',2.5,'welcome');
$redis -> zAdd('myset',3,'score');

var_dump($redis ->zRevRank('myset','welcome'));    // int 1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章