两个都用mybatis的工程,想通过redis同步缓存

经常在黑云中出没 2016-05-09 08:02:07
我有两个mybatis的项目,功能不同的,但是连接的是同一台数据库的。然后,想缓存都放在一台redis上。
但是,这两个项目,虽然有些地方,两边对应的是同一张表,比如客户表,但是,两边毕竟是两个类,这个在redis存缓存的时候,应该是存了两份吧。
...全文
2388 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
写一个适配器
回复
w5325698 2016-06-18
我觉得楼主这个问题,类不同但是,可以拷贝属性,这样就可以满足楼主的需求了,毕竟在redis里面存的的只是简单的元数据。
回复
oxcow 2016-05-11
引用 3 楼 cclovescw 的回复:
[quote=引用 2 楼 oxcow 的回复:] 这个跟类没关系吧! 两个类,但是结构应该是一样的。那么你可以将其转换成json格式的字符串存入redis,然后在另一个系统中将其反序列话回来。
引用
我有两个mybatis的项目,功能不同的,但是连接的是同一台数据库的。然后,想缓存都放在一台redis上。 但是,这两个项目,虽然有些地方,两边对应的是同一张表,比如客户表,但是,两边毕竟是两个类,这个在redis存缓存的时候,应该是存了两份吧。
你的描述也有问题。既然都连的是同一个数据库,那么为什么还要放到redis中? 2个系统通过 DB 交换数据不就行了! 看不出来你这里要用 redis干嘛!
直接查DB,那不是速度太慢了嘛,所以要用缓存啊。两个类,结构不完全一样。两边在java类中的属性名称可能不一样,但是映射的字段是同一个。我的目的,不是只有一个实体去存到redis中。而是我有很多类,都想通过redis同步的。所以不方便,每个都去转换成json,再去存取。那这么多代码,都去翻一遍,很麻烦。我是希望mybatis的缓存配置中,可以通过配置来实现。[/quote] 没太明白你说的同步是要同步什么? 你的意思是 将数据库数据缓存到redis 然后每个系统去读redis缓存?但是你不同系统对同一表的映射字段又不一样,可是又想在redis中能来个大统一,这样每个系统查询时,直接读redis? 能把你的应用场景描述下么?
回复
引用 2 楼 oxcow 的回复:
这个跟类没关系吧! 两个类,但是结构应该是一样的。那么你可以将其转换成json格式的字符串存入redis,然后在另一个系统中将其反序列话回来。
引用
我有两个mybatis的项目,功能不同的,但是连接的是同一台数据库的。然后,想缓存都放在一台redis上。 但是,这两个项目,虽然有些地方,两边对应的是同一张表,比如客户表,但是,两边毕竟是两个类,这个在redis存缓存的时候,应该是存了两份吧。
你的描述也有问题。既然都连的是同一个数据库,那么为什么还要放到redis中? 2个系统通过 DB 交换数据不就行了! 看不出来你这里要用 redis干嘛!
直接查DB,那不是速度太慢了嘛,所以要用缓存啊。两个类,结构不完全一样。两边在java类中的属性名称可能不一样,但是映射的字段是同一个。我的目的,不是只有一个实体去存到redis中。而是我有很多类,都想通过redis同步的。所以不方便,每个都去转换成json,再去存取。那这么多代码,都去翻一遍,很麻烦。我是希望mybatis的缓存配置中,可以通过配置来实现。
回复
引用 7 楼 oxcow 的回复:
com.magix.common.redis.LoggingRedisCache是你自定义的 mybatis 二级缓存的实现吧! 源码呢? 我觉得你要用 mybaitis 的自定义二级缓存<cache>结合redis来解决这个问题,先参看下这个: http://blog.csdn.net/luanlouis/article/details/41280959 http://blog.csdn.net/luanlouis/article/details/41408341
嗯,那我先看看
回复
oxcow 2016-05-11
com.magix.common.redis.LoggingRedisCache是你自定义的 mybatis 二级缓存的实现吧! 源码呢?


我觉得你要用 mybaitis 的自定义二级缓存<cache>结合redis来解决这个问题,先参看下这个:

http://blog.csdn.net/luanlouis/article/details/41280959

http://blog.csdn.net/luanlouis/article/details/41408341
回复
引用 4 楼 oxcow 的回复:
[quote=引用 3 楼 cclovescw 的回复:] [quote=引用 2 楼 oxcow 的回复:] 这个跟类没关系吧! 两个类,但是结构应该是一样的。那么你可以将其转换成json格式的字符串存入redis,然后在另一个系统中将其反序列话回来。
引用
我有两个mybatis的项目,功能不同的,但是连接的是同一台数据库的。然后,想缓存都放在一台redis上。 但是,这两个项目,虽然有些地方,两边对应的是同一张表,比如客户表,但是,两边毕竟是两个类,这个在redis存缓存的时候,应该是存了两份吧。
你的描述也有问题。既然都连的是同一个数据库,那么为什么还要放到redis中? 2个系统通过 DB 交换数据不就行了! 看不出来你这里要用 redis干嘛!
直接查DB,那不是速度太慢了嘛,所以要用缓存啊。两个类,结构不完全一样。两边在java类中的属性名称可能不一样,但是映射的字段是同一个。我的目的,不是只有一个实体去存到redis中。而是我有很多类,都想通过redis同步的。所以不方便,每个都去转换成json,再去存取。那这么多代码,都去翻一遍,很麻烦。我是希望mybatis的缓存配置中,可以通过配置来实现。[/quote] 没太明白你说的同步是要同步什么? 你的意思是 将数据库数据缓存到redis 然后每个系统去读redis缓存?但是你不同系统对同一表的映射字段又不一样,可是又想在redis中能来个大统一,这样每个系统查询时,直接读redis? 能把你的应用场景描述下么?[/quote] 应用场景是这样子的,本来是两个公司的两套系统,都用mybatis的。然后,连接的是同一个数据库。其中,大概有20几张表,是两边公用的,比如订单表、产品表这些。现在因为这是两套系统,缓存用不起来。但是共用的那几张表,恰恰又是数据量最大,最需要用缓存的。所以,现在想弄一台redis,来放缓存。mybatis本身提供了缓存二次开发的,想用的实体,mapper中加一下<cache type="com.magix.common.redis.LoggingRedisCache" />。就能实现缓存了。但是两个系统,这20张表,两边建的实体,不一样的,虽说映射到数据库,是相同的表。我两边,都加这个<cache type="com.magix.common.redis.LoggingRedisCache" />的话。我估计是,在redis中,存的,同一个表的东西,存的是两份的。
回复
oxcow 2016-05-10
这个跟类没关系吧! 两个类,但是结构应该是一样的。那么你可以将其转换成json格式的字符串存入redis,然后在另一个系统中将其反序列话回来。
引用
我有两个mybatis的项目,功能不同的,但是连接的是同一台数据库的。然后,想缓存都放在一台redis上。 但是,这两个项目,虽然有些地方,两边对应的是同一张表,比如客户表,但是,两边毕竟是两个类,这个在redis存缓存的时候,应该是存了两份吧。
你的描述也有问题。既然都连的是同一个数据库,那么为什么还要放到redis中? 2个系统通过 DB 交换数据不就行了! 看不出来你这里要用 redis干嘛!
回复
有没有做过的兄弟,帮忙看看
回复
相关推荐
发帖
高性能WEB开发
创建于2008-07-01

2.5w+

社区成员

高性能WEB开发
申请成为版主
帖子事件
创建了帖子
2016-05-09 08:02
社区公告
暂无公告