|
|||||||||
| 上一个类 下一个类 | 框架 无框架 | ||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | ||||||||
java.lang.Objectcom.akala.dbcache.core.BaseManager
public class BaseManager
免责声明:本代码所有权归作者所有,在保持源代码不被破坏以及所有人署名的基础上,任何组织或个人可自由无限使用,使用者需自行承担所有风险。
对象缓存A是:(A的最大长度可以设置大点,就看一段时间内常用的记录数)
|
Key键(long型) |
Value值(类型T) |
|
11 |
Id=11的T对象 |
|
22 |
Id=22的T对象 |
|
133 |
Id=133的T对象 |
|
…… |
|
列表缓存B是:(B是一个不带查询条件的列表缓存,通常列表不会太多,最大长度设置1000就可以了,不能设置太大,因为需要遍历)
|
Key键(String型) |
Value值(ArrayList型) |
|
from T order by createTime desc limit 0,50 |
ArrayList,对应取出来的所有id |
|
from T order by createTime desc limit 50,50 |
ArrayList,对应取出来的所有id |
|
from T order by createTime desc limit 100,50 |
ArrayList,对应取出来的所有id |
|
…… |
|
散列缓存C是:(C是散列缓存,无须遍历,可以设置成大一点,如一个网站同时在线人数是5000,那么设置成50000或10000都是没有问题的)
|
Key键(String型) |
Value值(HashMap) |
||||||||||
|
userId=2046 |
|
||||||||||
|
userId=2047 |
|
||||||||||
|
userId=2048 |
|
||||||||||
总结:这种缓存思路可以存储大规模的列表,缓存命中率极高,因此可以承受超大规模的应用,但是需要技术人员根据自身业务逻辑来
| 构造方法摘要 | |
|---|---|
BaseManager()
|
|
| 方法摘要 | |
|---|---|
void |
clearAllCache()
删除所有缓存!!!!!!!!!!! |
BaseRecord |
create(BaseRecord record)
创建一个数据库记录,并把对象放入本机缓存和memcached缓存。 |
boolean |
delete(BaseRecord br)
从数据库中删除数据,如果有必要,可以重写该方法删除缓存中的纪录和列表中的list缓存! |
boolean |
deleteById(long id)
根据ID从数据库中删除数据,如果有必要,可以重写该方法删除缓存中的纪录和列表中的list缓存! |
boolean |
deleteById(java.lang.String id)
根据ID从数据库中删除数据,如果有必要,可以重写该方法删除缓存中的纪录和列表中的list缓存! |
BaseRecord |
findById(long id)
根据id获取记录。 |
BaseRecord |
findById(java.lang.String id)
根据id获取记录。 |
BaseRecord |
findByProperty(java.lang.String fieldName,
java.lang.Object value)
根据某一个字段的值来获取对象 |
BaseRecord |
getFromMemCachedServer(java.lang.String key)
从memcached server获取对象,对象必须实现java.io.Serializable。 |
java.lang.String |
getHashFieldsList()
|
java.lang.String |
getHibernateConfigFile()
|
int |
getLength(java.util.List<org.hibernate.criterion.SimpleExpression> expList)
根据条件得到数据库记录的长度,Integer对象可以直接存在memcached缓存中,所以没有必要序列化! |
java.util.List<BaseRecord> |
getList(java.util.List<org.hibernate.criterion.SimpleExpression> expList,
java.util.List<org.hibernate.criterion.Order> orders,
int start,
int length)
每个表必须有id这个字段,每个类必须有id这个field。 |
int |
getProjectionLength(java.util.List<org.hibernate.criterion.SimpleExpression> expList,
org.hibernate.criterion.Projection project)
如果要用distinct,project必须是Projections.countDistinct("bbsThemeId");的形式 |
java.util.List |
getProjectionList(java.util.List<org.hibernate.criterion.SimpleExpression> expList,
java.util.List<org.hibernate.criterion.Order> orders,
org.hibernate.criterion.Projection project,
int start,
int length)
此处返回的List是Long对象或者Iterator对象,而不是BaseRecord!!!!!!!!!! |
java.lang.Class |
getRecordClass()
|
boolean |
putToUpdateMap(BaseRecord record)
非即时更新数据库对象。 |
void |
removeFromCache(long id,
boolean realRemove,
boolean isLocal)
分布式从缓存中去掉对象,下次读取就会从memcached读取或者从数据库读取。 |
void |
removeListCache(BaseRecord bt)
清除缓存,供本机调用。 |
void |
removeListCache(BaseRecord bt,
boolean isLocal)
本地(localhost)调用,在jsp中调用isLocal一律用true。 |
void |
set2MemCachedServer(BaseRecord br)
把om对象放入memcached server。 |
void |
setHashFieldsList(java.lang.String hashFieldsList)
|
void |
setHibernateConfigFile(java.lang.String hibernateConfigFile)
|
void |
setRecordClass(java.lang.Class recordClass)
|
boolean |
update(BaseRecord record,
boolean clearListCache)
更新一个数据库对象。 |
| 从类 java.lang.Object 继承的方法 |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 构造方法详细信息 |
|---|
public BaseManager()
| 方法详细信息 |
|---|
public void clearAllCache()
public BaseRecord findById(long id)
id - 记录的id
public BaseRecord findById(java.lang.String id)
id - 记录的id
public BaseRecord findByProperty(java.lang.String fieldName,
java.lang.Object value)
fieldName - 字段名value - 字段值
public boolean deleteById(long id)
id - long
public boolean deleteById(java.lang.String id)
id - String
public boolean delete(BaseRecord br)
br - BaseRecord
public boolean update(BaseRecord record,
boolean clearListCache)
record - 要更新的对象clearListCache - true表示需要清除列表缓存 false表示不需要
public BaseRecord create(BaseRecord record)
record - BaseRecord
public java.util.List<BaseRecord> getList(java.util.List<org.hibernate.criterion.SimpleExpression> expList,
java.util.List<org.hibernate.criterion.Order> orders,
int start,
int length)
expList - 查询条件orders - 排序start - 开始位置length - 获取长度
public int getLength(java.util.List<org.hibernate.criterion.SimpleExpression> expList)
cs - 查询条件
public java.util.List getProjectionList(java.util.List<org.hibernate.criterion.SimpleExpression> expList,
java.util.List<org.hibernate.criterion.Order> orders,
org.hibernate.criterion.Projection project,
int start,
int length)
expList - orders - project - 包含sum count group等复杂组合查询条件的Projection(s)start - length -
public int getProjectionLength(java.util.List<org.hibernate.criterion.SimpleExpression> expList,
org.hibernate.criterion.Projection project)
expList - project - 包含sum count group等复杂组合查询条件的Projection(s)
public boolean putToUpdateMap(BaseRecord record)
record - 需要update的对象
public void removeFromCache(long id,
boolean realRemove,
boolean isLocal)
id - the idrealRemove - 是否真的删除,当删除数据库时调用isLocal - 是否是本地调用
public void removeListCache(BaseRecord bt,
boolean isLocal)
bt - BaseRecord对象,如UserisLocal - 是否本地调用.public void removeListCache(BaseRecord bt)
bt - public BaseRecord getFromMemCachedServer(java.lang.String key)
key - 远程的key。
public void set2MemCachedServer(BaseRecord br)
om - BaseRecord对象,可以是任何继承BaseRecord的对象public java.lang.String getHibernateConfigFile()
public void setHibernateConfigFile(java.lang.String hibernateConfigFile)
public java.lang.Class getRecordClass()
public void setRecordClass(java.lang.Class recordClass)
public java.lang.String getHashFieldsList()
public void setHashFieldsList(java.lang.String hashFieldsList)
|
|||||||||
| 上一个类 下一个类 | 框架 无框架 | ||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | ||||||||