要将关系数据库中表的一行记录保持到redis中,在redis里要采用哪种数据类型,怎么保存?希望能举个具体示例
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
将java对象 序列化,然后以字节数组存储
可以直接用数据库的主键作为redis的可以,比如<YOUR_PREFIX><PRIMARY_KEY>这种,内容的话,比如直接把数据表记录json之后就可以
<YOUR_PREFIX><PRIMARY_KEY>
然后是一致性的问题
第一种方案是把redis的作为cache来使用,只在按照主键来读取记录时,先检查redis里面(get)有没有,如果没有则从数据库里面取,同时set redis中对应的值,在set时最好给记录设置一个expire时间,这样即使没有主动的清掉脏数据,一段时间后也可以通过expire的机制自动拿到新的值。在数据表记录变动时,直接删除掉redis中的记录即可。这个是我比较推荐的比较稳妥的做法。
第二种方案是直接在redis中处理全部的数据读写,只有在特定时机才把数据写回数据库中。有关写回机制,可以考虑使用一个带有消息队列,在每次redis有修改时,异步的让数据写回数据,可以通过一个timestamp来保证写回到数据库的数据是最新的;或者可以考虑使用redis在expire时机的通知机制(不过这个机制没有保障,见http://redis.io/topics/notifications)。
这个还是挺麻烦的可以参考一下这篇文章http://www.cnblogs.com/enjiex/p/3618546.html
是可以支持简单的增删改查,而且可以结合redis的事务实现简单的功能但是想要实现rdbms那套sql基本操作都很麻烦
综上
乖乖地读手册吧,别人给你的答案木有用的,手册里讲得很清楚,看完手册再考虑应用场景,到实用阶段的时候,有一些封装的第三方api可以调用,实际上你自己写也一样,从套接字开始写起,保管你对协议,语言,网络都有个新的认识
将java对象 序列化,然后以字节数组存储
可以直接用数据库的主键作为redis的可以,比如
<YOUR_PREFIX><PRIMARY_KEY>
这种,内容的话,比如直接把数据表记录json之后就可以然后是一致性的问题
第一种方案是把redis的作为cache来使用,只在按照主键来读取记录时,先检查redis里面(get)有没有,如果没有则从数据库里面取,同时set redis中对应的值,在set时最好给记录设置一个expire时间,这样即使没有主动的清掉脏数据,一段时间后也可以通过expire的机制自动拿到新的值。在数据表记录变动时,直接删除掉redis中的记录即可。这个是我比较推荐的比较稳妥的做法。
第二种方案是直接在redis中处理全部的数据读写,只有在特定时机才把数据写回数据库中。有关写回机制,可以考虑使用一个带有消息队列,在每次redis有修改时,异步的让数据写回数据,可以通过一个timestamp来保证写回到数据库的数据是最新的;或者可以考虑使用redis在expire时机的通知机制(不过这个机制没有保障,见http://redis.io/topics/notifications)。
这个还是挺麻烦的
可以参考一下这篇文章
http://www.cnblogs.com/enjiex/p/3618546.html
是可以支持简单的增删改查,而且可以结合redis的事务实现简单的功能
但是想要实现rdbms那套sql基本操作都很麻烦
综上
乖乖地读手册吧,别人给你的答案木有用的,手册里讲得很清楚,看完手册再考虑应用场景,到实用阶段的时候,有一些封装的第三方api可以调用,实际上你自己写也一样,从套接字开始写起,保管你对协议,语言,网络都有个新的认识