/**
* Copyright 2014 Duan Bingnan
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.pinus4j.cache;
import java.util.List;
import java.util.Map;
import org.pinus4j.cluster.resources.ShardingDBResource;
import org.pinus4j.entity.meta.EntityPK;
/**
* 主缓存接口. 为Pinus存储提供一级缓存, 一级缓存使用memcached作为存储主要是对数据库表中的数据进行缓存查询进行缓存.
* 一级缓存的key格式:[clusterName + dbIndex].[tableName + tableIndex].id, value是数据库记录.
* 删除、修改操作会清除被操作数据的缓存
*
* @author duanbn
*/
public interface IPrimaryCache extends ICache {
/**
* 设置count数.
*
* @param db 分库分表
* @param count count数
*/
public void setCountGlobal(String clusterName, String tableName, long count);
/**
* 减少分表count数.
*
* @param db 分库分表
* @param delta 减少数
* @return 减少后的count数
*/
public long decrCountGlobal(String clusterName, String tableName, int delta);
/**
* 增加分表count数.
*
* @param db 分库分表
* @param delta 增加数
* @return 增加后的count数
*/
public long incrCountGlobal(String clusterName, String tableName, int delta);
/**
* 获取一张表的count值.
*
* @param db 分库分表
* @return count值.
*/
public long getCountGlobal(String clusterName, String tableName);
/**
* 批量添加记录
*
* @param clusterName
* @param tableName
* @param data
*/
public void putGlobal(String clusterName, String tableName, Map<EntityPK, ? extends Object> data);
/**
* 获取多条记录.
*
* @param db 分库分表
* @param pks 主键
* @return 多条数据
*/
public <T> Map<EntityPK, T> getGlobal(String clusterName, String tableName, EntityPK[] pks);
/**
* 批量删除缓存.
*
* @param db 分库分表
* @param pks 主键
*/
public void removeGlobal(String clusterName, String tableName, List<EntityPK> pks);
/**
* 设置count数.
*
* @param db 分库分表
* @param count count数
*/
public void setCount(ShardingDBResource db, long count);
/**
* 减少分表count数.
*
* @param db 分库分表
* @param delta 减少数
* @return 减少后的count数
*/
public long decrCount(ShardingDBResource db, long delta);
/**
* 增加分表count数.
*
* @param db 分库分表
* @param delta 增加数
* @return 增加后的count数
*/
public long incrCount(ShardingDBResource db, long delta);
/**
* 获取一张表的count值.
*
* @param db 分库分表
* @return count值.
*/
public long getCount(ShardingDBResource db);
/**
* 批量添加记录.
*
* @param db
* @param data
*/
public void put(ShardingDBResource db, Map<EntityPK, ? extends Object> data);
/**
* 获取多条记录.
*
* @param db 分库分表
* @param ids 主键
* @return 多条数据
*/
public <T> Map<EntityPK, T> get(ShardingDBResource db, EntityPK[] ids);
/**
* 批量删除缓存.
*
* @param db 分库分表
* @param ids 主键
*/
public void remove(ShardingDBResource db, List<EntityPK> pks);
}