Redis ACL之redis_set类分析介绍

本章主要介绍ACL中redis_set类中与Redis中set类型对应的命
redis_set的构造函数

redis_set(void);
redis_set(redis_client* conn);
redis_set(redis_client_cluster* cluster, size_t max_conns=0);
/**
* 将一个或多个member元素加入集合key当中,已经存在于集合的member元素将被
* 忽略;
* 1)假如key不存在,则创建一个包含member元素成员的集合
* 2)当key不是集合类型时,返回一个错误
* */
int sadd(const char* key, const char* first_member, ...);
int sadd(const char* key, const std::vector<const char*>& members);
int sadd(const char* key, const std::vector<string>& members);
int sadd(const char* key, const char* argv[], size_t argc);
int sadd(const char* key, const char* argv[], const size_t lens[], size_t argc);

/**
* 从集合对象中随机移除并返回某个成员存入buf中
* @param key{string&} 存储被移除的成员
* */
bool spop(const char* key, string& buf);

/**
* 获得集合对象成员的数量
* -1:出错或非集合对象
*  0:成员数量为空或该key不存在
* >0:成员数量非空
* */
int scard(const char* key);

/**
* 返回集合key中的所有成员
* 返回结果集数量,返回-1表示出错或一个key非集合对象。
* */
int smembers(const char* key, std::vector<string>* members);

/**
* 将member元素从src集合移动到dst
* param src{const char*} 源集合对象的键值
* param dit{const char*} 目标集合对象的键值
* param member{const char*} 源集合对象的成员
* 返回
* -1:出错或源/目标对象有一个非集合对象
*  0:源对象不存在或成员在源对象中不存在
*  1:成功从源对象中将一个成员移动至目标对象中
* */
int smove(const char* src, const char* dst, const char* member);
int smove(const char* src, const char* dst, const string& member);
int smove(const char* src, const char* dst, const char* member, size_t len);

/**
* 返回一个结果集数量,-1表示出错或有一个key非集合对象
* @param members{std::vector<string>*} 存储结果集
* */
int sdiff(std::vector<string>* members, const char* first_key, ...);
int sdiff(const std::vector<const char*>& keys, std::vector<string>* members);
int sdiff(const std::vector<string>& keys, std::vector<string>* members);

/**
* 返回一个集合的全部成员存在members中;返回值为结果集个数
* */
int sinter(std::vector<string>* members, const char* first_key, ...);
int sinter(const std::vector<const char*>& keys, std::vector<string>* members);
int sinter(const std::vector<string>& keys, std::vector<string>* members);

/**
* 返回一个集合的全部成员,该集合是所有给定集合的并集存在members中
* 返回值为结果集个数
* */
int sunion(std::vector<string>* members, const char*first_key, ...);
int sunion(const std::vector<const char*>& keys, std::vector<string>* members);
int sunion(const std::vector<string>& keys, std::vector<string>* members);

/**
* 这个命令和sdiff有点类似,但它将结果保存到dst集合中,而不是简单地返回结果集
* */
int sdiffstore(const char* dst, const char* first_key, ...);
int sdiffstore(const char* dst, const std::vector<const char*>& keys);
int sdiffstore(const char* dst, const std::vector<string>& keys);

/**
* 这个命令类似于sinter,但它将结果集保存到dst集合中
* */
int sinterstore(const char* dst, const char* first_key, ...);
int sinterstore(const char* dst, const std::vector<const char*>& keys);
int sinterstore(const char* dst, const std::vector<string>& keys);

/**
* 这个命令类似于sunion,但它将结果集保存到dst集合中
* */
int sunionstore(const char* dst, const char* first_key, ...);
int sunionstore(const char* dst, const std::vector<const char*>& keys);
int sunionstore(const char* dst, const std::vector<string>& keys);

/**
* 判断元素member是否是key集合的成员
* */
bool sismember(const char* key, const char* member);
bool sismember(const char* key, const char* member, size_t len);

/**
* 随机随机获取key中member,如果给定获取个数,则返回不超过该个数限制的结果集
* */
int srandmember(const char* key, string& out);
int srandmember(const char* key, size_t n, std::vector<string>& out);

/**
* 移除集合key中的一个或多个member元素,不存在的member元素将会被忽略
* */
int srem(const char* key, const char* first_member, ...);
int srem(const char* key, const std::vector<string>& member);
int srem(const char* key, const std::vector<const char*>& members);
int srem(const char* key, const char* members[], size_t lens[], size_t argc);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值