Redis 使用记录(五)

Set(集合)

Set 是 String 类型的无序集合,成员唯一,不会出现重复的数据。Set 最多可以包含 232 – 1 个元素(40多亿)。

应用场景

统计访问IP

可以用来记录访问的IP,Set 有成员唯一性,所以不用担心 重复记录。

联系人、粉丝列表

记录用户的联系人、粉丝列表或者关注列表,利用Set 的交集可以得到不同用户的共同关注、共同联系人等。

实例

<?php
include 'redis.php';

$redis = getRedis();
$redisKey = 'name_set';
$redisKey1 = 'name_set1';
$redisKey2 = 'team_set';
$redisKey3 = 'team_set1';

$redis->sAdd($redisKey, 'kobe');// 向set中添加成员
print_r($redis->sMembers($redisKey));// 获取set中的所有成员 Array ( [0] => kobe )
echo '<br />';
var_dump($redis->sAdd($redisKey, 'kobe'));// 因为set具有成员唯一性,所以这个添加不成功 int(0)
echo '<br />';
$redis->sAdd($redisKey, 'Gasol');
echo $redis->sCard($redisKey) . '<br />';// 获取set中的成员数 2
var_dump($redis->sIsMember($redisKey, 'kobe'));// 当前值是否存在 bool(true)
echo '<br />';
$redis->sAdd($redisKey1, 'kobe', 'fisher', 'iverson');// Array ( [0] => iverson [1] => kobe [2] => fisher )
echo $redis->sPop($redisKey1) . '<br />';// 获取并移除一个随机元素 iverson
print_r($redis->sInter($redisKey, $redisKey1));// 获取指定set的交集 Array ( [0] => kobe )
echo '<br />';
print_r($redis->sDiff($redisKey, $redisKey1));// 获取指定set的差集 Array ( [0] => Gasol )
echo '<br />';
echo $redis->sRandMember($redisKey) . '<br />';// 获取指定数量的随机数,默认为1个 Gasol
var_dump($redis->sRem($redisKey1, 'kobe'));// 删除指定值
echo '<br />';
$redis->sAdd($redisKey2, 'Lakers', 'Spurs', 'Warriors', 'Rockets');
$redis->sAdd($redisKey3, 'Celtics', 'Bulls', '76ers', 'Warriors', 'Rockets');
$redis->sInterStore('temp', $redisKey2, $redisKey3);// 获取指定set的交集,并将结果存储在自定义set中
print_r($redis->sMembers('temp'));// Array ( [0] => Rockets [1] => Warriors )
echo '<br />';
$redis->sDiffStore('temp1', $redisKey2, $redisKey3);// 获取指定set的差集,并将结果存储在自定义set中
print_r($redis->sMembers('temp1'));// Array ( [0] => Lakers [1] => Spurs )
echo '<br />';
$redis->sMove('temp', 'temp1', 'Rockets');// 将指定值,从temp中移动到temp1中
print_r($redis->sMembers('temp1'));// Array ( [0] => Lakers [1] => Spurs )
echo '<br />';
print_r($redis->sUnion($redisKey2, $redisKey3));// 获取指定set的并集 Array ( [0] => Lakers [1] => Warriors [2] => Bulls [3] => Spurs [4] => 76ers [5] => Celtics [6] => Rockets )
echo '<br />';
$redis->sUnionStore('temp2', $redisKey2, $redisKey3);// 获取指定set的并集,并将结果存储在自定义set中
print_r($redis->sMembers('temp2'));// Array ( [0] => Lakers [1] => Warriors [2] => Bulls [3] => Spurs [4] => 76ers [5] => Celtics [6] => Rockets )

参考资料:菜鸟教程

    原文作者:haoyq
    原文地址: https://segmentfault.com/a/1190000017908038
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞