acl/lib_acl_cpp/include/acl_cpp/redis/redis_hyperloglog.hpp
2015-03-29 19:27:41 +08:00

68 lines
2.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include "acl_cpp/acl_cpp_define.hpp"
#include <vector>
#include "acl_cpp/stdlib/string.hpp"
#include "acl_cpp/redis/redis_command.hpp"
namespace acl
{
class redis_client;
class ACL_CPP_API redis_hyperloglog : virtual public redis_command
{
public:
/**
* see redis_command::redis_command()
*/
redis_hyperloglog();
/**
* see redis_command::redis_command(redis_client*)
*/
redis_hyperloglog(redis_client* conn);
/**
* see redis_command::redis_command(redis_cluster* size_t)
*/
redis_hyperloglog(redis_cluster* cluster, size_t max_conns);
virtual ~redis_hyperloglog();
/**
* 将任意数量的元素添加到指定的 HyperLogLog 里面
* @param key {const char*} 指定 key 值
* @param first_element {const char*} 元素集合的第一个元素值,非空字符串
* @return {int} 操作是否成功,同时表明是否发生了变更,返回值含义如下:
* 1操作成功且数据发生了变更新增数据或老数据发生变更
* 0修改老数据未发生变化
* -1出错或对应的 key 对象非 hyperloglog 对象
*/
int pfadd(const char* key, const char* first_element, ...);
int pfadd(const char* key, const std::vector<const char*>& elements);
int pfadd(const char* key, const std::vector<string>& elements);
/**
* 获得给定键列表的 HyperLoglog 去重后元素的近似数量
* @param first_key {const char*} key 集合的第一个 key非空字符串
* @return {int} 键列表集合中经去重后元素的近似数量
*/
int pfcount(const char* first_key, ...);
int pfcount(const std::vector<const char*>& keys);
int pfcount(const std::vector<string>& keys);
/**
* 将多个 HyperLogLog 合并merge为一个 HyperLogLog 合并后的
* HyperLogLog 的基数接近于所有输入 HyperLogLog 的可见集合的并集
* @param dst {const char*} 目标存储 HyperLogLog 对象的键值
* @param first_src {const char*} 源对象集合中第一个源 HyperLogLog 对象的键
* @return {bool} 操作是否成功,返回 false 表明出错或目标/源对象非
* HyperLogLog 对象
*/
bool pfmerge(const char* dst, const char* first_src, ...);
bool pfmerge(const char* dst, const std::vector<const char*>& keys);
bool pfmerge(const char* dst, const std::vector<string>& keys);
};
} // namespace acl