package com.ag.base;


import com.wb.common.KvBean;

import java.util.List;

/**
 * Description:rdedis接口服务
 * Create Date: 2021/3/18
 */
public interface IRedisService {

    /**
     * 初始化所有缓存
     */
    default void redisLoad(){}

    /**
     * 刷新key(读表并覆盖)
     * @param dictName
     */
    default void refreshByDictName(String dictName){}

    /**
     * 从Redis中获取字典全部返回值（大数据量不推荐使用，可以使用likeByKey方法）
     * @param dictName
     * @return
     */
    default List<KvBean> getAllByKey(String dictName){return null;}
    default List<KvBean> getAllByKey(String dictName, String tenancyId){return null;}


    default List<KvBean> likeByKey(String dictName, String key){return null;}
    default List<KvBean> likeByKey(String dictName, String key, String tenancyId){return null;}
    default List<KvBean> likeByKey(String dictName, String key, Integer begIndex, Integer length){return null;}
    /**
     * 分页+模糊查询（不指定分页按20条数据返回，只取分页，key为null）
     * @param dictName 表名
     * @param key 只取分页，值为null
     * @param tenancyId 租户
     * @param begIndex 下标从0开始
     * @param length 获取数量
     * @return
     */
    default List<KvBean> likeByKey(String dictName, String key, String tenancyId, Integer begIndex, Integer length) {return null;}


    /**
     * key 转 value
     * @param dictName
     * @param key
     * @return
     */
    default String getTargetName(String dictName, String key){return null;}
    default String getTargetName(String dictName, String key, String tenancyId){return null;}

    /**
     * 多key的精确查找
     * @param dictName
     * @param keys
     * @return
     */
    default List<KvBean> findByMultKeys(String dictName, String keys) {return null;}
    default List<KvBean> findByMultKeys(String dictName, String keys, String tenancyId) {return null;}

    /**
     * 自定义key存入 Redis中
     */
    default void putCustomizeKey(String keyName, String list){}

    /**
     * 获取自定义key
     */
    default String getCustomizeKey(String key){return null;}

    default void delKey(String key){}



/**
 * 获取多组key（暂无实现）
 * @param collection
 * @return

default Map<String, List<T>> findByKey(Collection<String> collection){return null;}
 */


}
