Redis使用set集合

<?php
declare(strict_types=1);
ini_set('display_errors', 'On');
error_reporting(-1);

/**
 * 打印变量的相关信息
 *
 * @param mixed $value 要打印的表达式
 * @param mixed ...$values 更多要打印的表达式
 * @return void echo
 */
function v(mixed $value, mixed ...$values): void
{
    ob_start(); // 打开输出控制缓冲
    var_dump($value);
    echo ob_get_clean(); // 从缓冲区获取var_dump()的内容,然后清空缓冲区

    foreach ($values as $v) {
        v($v); // 递归
    }
}

$redis = new Redis();
$redis->connect('localhost');
$redis->auth('************');

$redis->flushAll(); // 先清空Redis里的所有数据,避免影响演示效果

$key = 'name'; // set集合键名

// 获取set集合元素个数
echo 'set集合元素个数:' . $redis->sCard($key) . PHP_EOL; // set集合元素个数:0

// 添加一个值到set集合
$count = $redis->sAdd($key, '刘一');
v($count); // int(1)

// 一次添加两个值到set集合
$count = $redis->sAdd($key, '陈二', '张三');
v($count); // int(2)

// 获取set集合元素个数
echo 'set集合元素个数:' . $redis->sCard($key) . PHP_EOL; // set集合元素个数:3

// 添加已存在的值到set集合
$count = $redis->sAdd($key, '张三');
v($count); // int(0)

// 判断元素是否在集合中(存在的情况)
$isMember = $redis->sIsMember($key, '张三');
v($isMember); // bool(true)

// 判断元素是否在集合中(不存在的情况)
$isMember = $redis->sIsMember($key, '李四');
v($isMember); // bool(false)

// 获取set集合所有元素
$members = $redis->sMembers($key);
v($members);
// array(3) {
//     [0]=>
//   string(6) "张三"
//     [1]=>
//   string(6) "陈二"
//     [2]=>
//   string(6) "刘一"
// }

// 从set集合中删除元素
$count = $redis->sRem($key, '陈二');
v($count); // int(1)

// 获取set集合所有元素
$members = $redis->sMembers($key);
v($members);
// array(2) {
//     [0]=>
//   string(6) "张三"
//     [1]=>
//   string(6) "刘一"
// }


//========== 总结 ==========//
// 1、在Redis中,set集合的元素是无序且唯一的,单个set集合最多可存储4294967295个元素。

Copyright © 2024 码农人生. All Rights Reserved