import { BaseProvider } from '../../mvc/ioc.decorator';
/** 缓存配置 */
export interface ICacheConfig {
    /** redis地址 */
    host: string;
    /** 端口 */
    port: number;
    /** 密码 */
    password?: string;
    /** 用户名 */
    username?: string;
}
/**
 * Redis 缓存数据通道
 */
export interface ICacheAccess {
    config: ICacheConfig;
    get: (key: string) => Promise<string>;
    set: (key: string, value: string) => Promise<void>;
    remove: (key: string) => Promise<void>;
    exists: (key: string) => Promise<boolean>;
    /** 设置key的有效期 单位秒 */
    expire: (key: string, ttl: number) => Promise<boolean>;
    getSet: (key: string, value: string) => Promise<string>;
    search: (partykey: string) => Promise<string[]>;
    setNX: (key: string, value: string) => Promise<boolean>;
}
/**
 * Redis 缓存数据通道
 */
export declare class CacheAccess extends BaseProvider implements ICacheAccess {
    onFree(): void;
    /**
     * redis连接信息
     */
    config: ICacheConfig;
    private _redis;
    private _client?;
    private get redis();
    /**
     * 获取一个redis客户端
     */
    private getRedis;
    /** 初始化客户端， 允许不初始化， 每次临时生成 */
    initClient(): void;
    /** 关闭客户端 */
    quitClient(): void;
    private execute;
    /**
     * redis.get
     * @param key 缓存的key
     */
    get(key: string): Promise<string>;
    /**
     * redis.set
     * @param key 缓存的key
     * @param value 缓存的值
     * @param expire (可选) 缓存有效期 单位秒
     */
    set(key: string, value: string, expire?: number): Promise<void>;
    /**
     * redis.del 删除
     * @param key 需要删除的key
     */
    remove(key: string | string[]): Promise<void>;
    /**
     * 检查key是否存在
     * @param key
     */
    exists(key: string): Promise<boolean>;
    /**
     * 设置key的有效期 单位秒
     * @param key
     * @param ttl 有效期 单位秒
     */
    expire(key: string, ttl: number): Promise<boolean>;
    /**
     * Set the string value of a key and return its old value.
     * if old value not exists,return nil
     * @param key
     * @param value new value
     */
    getSet(key: string, value: string): Promise<string>;
    /**
     * 查找key
     * @param partykey
     */
    search(partykey: string): Promise<string[]>;
    /**
     * Set the value of a key, only if the key does not exist.
     * 设置成功，返回 1 。 设置失败，返回 0 。
     * @param key
     * @param value
     */
    setNX(key: string, value: string): Promise<boolean>;
}
