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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两个人的幸福online

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值