Java缓存设计求助-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Java缓存设计求助

2016-02-19 17:34:36 2303 1

我遇到的问题!不知道各位是如何解决的!
比如一张用户表
有 id,用户类型,帐号,密码
id: 主键
用户类型 聚集索引
帐号,密码 唯一索引
在代码中的缓存设计就会对应3个Map
id -> map1.put(id,obj)
用户类型 -> map2.put(用户类型1,set) *set中保存的是用户类型=1的所有id
帐号,密码 -> map3.put(帐号+密码,id)
这样可以很方便的把数据库关系映射在代码缓存中,可以很方便的操作!
但是有个问题就是,必须缓存整张表,并且不能做超时!
比如就上面这个例子 用3个用户 一个用户类型=1 两个用户类型=2
假如其中一个用户类型=2的超时了,他对应的缓存对象和缓存关系都应用删除!这时就存在一个问题了
就是再次查询用户类型=2的就只有一个用户了 因为用户类型关系的Map中 用户类型=2的Key存在。我就不再取查询数据库,而真实数据库存在用户类型为2的却有2个人
这种情况我想了2个方案感觉都不是很好
1.全缓存不做超时(很多不常用的数据也在缓存里 感觉有点不舒服)
2.超时不清除索引关系(这样在做查询列表的时候还要遍历检查这个对象在缓存中是否存在不存在查库再加入缓存感觉代价很高)
有么有好的方案

取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 18:44:57

    你这等于就是把缓存做数据库来用,所以那个超时移除可以去掉了.
    至于那些不常用的数据,可以想办法做到要用到时加载,不用时剔除,这块才是你需要设计的地方,比如说针对这种数据启用超时.

    0 0
相关问答

20

回答

【大咖问答】对话PostgreSQL 中国社区发起人之一,阿里云数据库高级专家 德哥

阿里ACE 彭飞 2019-07-10 09:36:10 1221237浏览量 回答数 20

170

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 232197浏览量 回答数 170

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 159391浏览量 回答数 145

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 340431浏览量 回答数 8

119

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 300958浏览量 回答数 119

24

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 657869浏览量 回答数 24

34

回答

Win Server 2003-2016 加密勒索事件必打补丁合集

妙正灰 2017-05-15 10:44:38 283178浏览量 回答数 34

39

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 262843浏览量 回答数 39

21

回答

请教一下数据量有100万条左右要什么配置?

易网网络 2013-03-27 15:18:02 193517浏览量 回答数 21

1

回答

foxmail 关联企业邮箱提示邮箱地址或者密码错误

2017-12-30 21:50:39 151998浏览量 回答数 1
+关注
落地花开啦
喜欢技术,喜欢努力的人
0
文章
7824
问答
问答排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载