Redis作为缓存框架的问题

oSuMoHen 2014-12-15 05:30:21
create/updae/delete---同时存到redis和数据库;
query--先从redis查,没有记录才从数据库查,并把从数据库查的结果也放一份到redis作为缓存队列;

java怎么来实现这个?具体的思想
...全文
5088 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
X元素 2016-06-13
  • 打赏
  • 举报
回复
引用 10 楼 happyvx 的回复:
见到一个方案是,sql 作为key 查询结果序列化后 存入value 。表如果有数据修改添加删除,flushDB()。 但是整个项目只要有数据变更缓存就没了。 谁还有其他方案?
考虑一下LRU
tianfang 2016-06-13
  • 打赏
  • 举报
回复
作为应用开发者 找现成服务最好;你要的功能, ehcache已经为你实现 团队足够强大,类似BAT,或者有资助,可以做服务框架
windvx 2016-06-12
  • 打赏
  • 举报
回复
见到一个方案是,sql 作为key 查询结果序列化后 存入value 。表如果有数据修改添加删除,flushDB()。 但是整个项目只要有数据变更缓存就没了。 谁还有其他方案?
windvx 2016-06-12
  • 打赏
  • 举报
回复
给个解决方案吧
  • 打赏
  • 举报
回复
请教下,如果返回值是一个list集合,那么key该怎么设置 ------------------------------------------------------------
引用 4 楼 crazypandariy 的回复:
1、下载Jedis jar包 2、建议使用切面技术实现缓存(比如spring aop),如果未使用任何框架,请自己动手写动态代理,尽量将缓存的逻辑和数据库逻辑分离(推荐使用注解) 推荐使用spring框架的另一个原因是spring提供了一个相当强悍的动态语言功能SpEL,这个功能被我用来生成redis的key
hqq1007 2016-01-14
  • 打赏
  • 举报
回复
用jedis吧,挺简单的,不难
司少 2016-01-14
  • 打赏
  • 举报
回复
import redis.clients.jedis.Jedis; /** * Created by Administrator on 2016/1/14. */ public class tests1 { public static void main(String[] args) { Jedis jedis = new Jedis("localhost"); // 连接到Redis服务器 jedis.auth("36082423.."); // 输入口令进行验证 jedis.set("greeting", "Hello, world!"); // 将字符串缓存到Redis服务器 System.out.println(jedis.get("greeting") + "========"); // 从Redis缓存中获取数据 jedis.set("name", "欢迎来到Redis缓存!"); String name= jedis.get("name"); System.out.print(name+"==========="); } }
oh_Maxy 2014-12-18
  • 打赏
  • 举报
回复
谈不上什么框架不框架吧,简单理解,把redis服务器搭建好,有个客户端的包引入工程。 然后继承数据库操作,重写查询方法,从缓存查,查不到就调用super的本方法,然后写入缓存。 就这么简单,不用想太复杂。
疯狂熊猫人 2014-12-18
  • 打赏
  • 举报
回复
1、下载Jedis jar包 2、建议使用切面技术实现缓存(比如spring aop),如果未使用任何框架,请自己动手写动态代理,尽量将缓存的逻辑和数据库逻辑分离(推荐使用注解) 推荐使用spring框架的另一个原因是spring提供了一个相当强悍的动态语言功能SpEL,这个功能被我用来生成redis的key
loveunittesting 2014-12-17
  • 打赏
  • 举报
回复
这哪儿是啥问题,这就是不会啊。lz好好看看官方文档或者其他资料,会有收获的,不难。
致知Fighting 2014-12-16
  • 打赏
  • 举报
回复
redis有很多客户端,jedis是最出名的,直接通过jedis操作就可以了
tianfang 2014-12-16
  • 打赏
  • 举报
回复
看看hibernate 二级cache的设置(我用过ehcache),已经实现了这样的功能,只需配置就可以。 看看用JBOSS文档: Infinispan 替换 JPA/Hibernate 二级缓存 https://access.redhat.com/documentation/zh-CN/JBoss_Enterprise_Application_Platform/6.1/html/Migration_Guide/Replace_JPAHibernate_Second_Level_Cache_with_Infinispan.html 可以继续查询 Infinispan Hibernate 二级缓存,搜索更多结果
db服务器连接mysql+redis高可用高性能框架干货1、使用c++语言,vs2019开发垮平台[windows和linux]连接MySql和redis框架。2、使用MySql持久化玩家数据,redis做玩家数据缓存层,redis不做数据持久化。mysql搭配redis工作效率非常高效,就好比男女搭配干活不累,没有redis,mysql也能独立很好的完成用户读写请求。有了redis,用户访问数据的效率更高,时间更短,快速的完成请求。3、讲解如何保持mysql和redis数据强一致性策略,并在代码里实现。每次启动redis,使用管道技术,从mysql批量导入活跃用户数据到redis中,并设置过期时间.4、教程使用线程池技术,每个线程拥有自己独立的数据,线程绑定类。每一个实例就包含一个线程每个线程数据里包含:mysql连接器、redis连接器、内存回收池、安全的串行队列、条件变量、互斥量保证线程内的数据安全。5、工作原理:没有请求时,各个工作线程处于休眠状态。有读写请求时,从线程池获取一个线程,添加读写请求,把数据推送到线程工作队列中。然后工作线程获取队列的数据,进行串行工作任务安排,进行mysql数据库读写操作,以及redis读写数据操作,当完成工作任务时,执行下一个工作任务,同时把处理结果推送到逻辑线程,把数据给用户。6、用户读数据策略:用户获取数据首先是先从redis查找数据,redis命中,返回数据给玩家,redis命中失败,mysql中查找数据,然后写入数据到redis中,返回数据给用户。7、用户写数据策略:用户先从redis中删除数据,然后写数据到mysql中,最后再把数据写入到redis中,保持数据一致性。8、教程是一个干货教程,不是新手教程,mysql基础语法讲解的少,redis有讲解基础系列。教程讲解的是如何搭建一个支持高并发,高性能的读写数据库框架,使用mysql+redis搭配的高可用、高性能框架。该套框架在多个项目使用过,也在棋牌类项目里面使用过。

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧