java redis mysql_如何使用Redis在Java中缓存mysql数据

java redis mysql_如何使用Redis在Java中缓存mysql数据_第1张图片

使用Redis读取和写入数据,并使用队列处理器定期将数据写入MySQL. 同时,我们必须注意避免冲突. 当redis启动时,去mysql读取所有表键值并将它们存储在redis中. 将数据写入redis时,递增并读取redis主键. 如果mysql更新失败,则需要清除缓存并同步redis主键. 该过程主要是实时读写redis,并且通过队列异步处理mysql数据以减轻对mysql的压力,但是该方法的应用场景主要基于高并发性和redis的高可用性集群架构. 相对比较复杂,通常不推荐使用. “内存和mysql同步机制”如何使redis与mysql同步[方案1]该程序实现mysql更新,添加和删除,以删除redis数据. 程序查询redis. 如果不存在,请查询mysql并保存redisredis和mysql数据的同步. 代码级别可以大致完成: 读取: 读取redis->否,读取mysql->将mysql数据返回给redis写入: 写入mysql->成功,写入redis(捕获所有mysql修改,写入和删除事件,对redis进行操作)[方案2]实时获取mysql binlog进行分析,然后将redisMySQL修改为Redis数据解决方案. 无论是MySQL还是Redis,它都具有数据同步这种机制,就像更常用的MySQL Master / Slave模式一样,是通过Slave端分析Master的binlog来实现的. 这样的数据实际上是一个异步过程,但是当服务器位于同一Intranet上时,异步延迟几乎可以忽略.

java redis mysql_如何使用Redis在Java中缓存mysql数据_第2张图片

从理论上讲,我们还可以使用相同的方法来分析MySQL Binlog文件并将数据插入Redis. 但这需要对binlog文件和MySQL有非常深入的了解. 同时,由于binlog中存在各种形式的Statement / Row / Mixedlevel,因此分析Binlog以实现同步的工作量非常大. 因此,我在这里选择了一种更便宜的开发方法,借用了成熟的MySQL UDF,首先将MySQL数据放入Gearman,然后通过自己编写的PHP Gearman Worker将数据同步到Redis. 比分析binlog的方法增加了很多过程,但是实现成本较低,并且更易于操作. [方案3]使用mysql的udf. 有关详细信息,请参阅MySQL :: MySQL 5.1参考手册:: 22.3向MySQL添加新功能. 然后在表更新后使用触发器来调用该函数,并将其插入并写入redis. 大概是这样的. [] 1.首先,很明显是否需要缓存,当前体系结构的瓶颈在哪里,如果该瓶颈确实是操作,则继续往下看. 2.弄清楚要使用的内存缓存和Redis之间的区别.

毕竟前者是一个缓存,不可能永久保存数据(LRU机制),并且支持分布式. 后者除了支持缓存外,还支持将持久性数据存储到磁盘. Redis必须自己实现分布式缓存(看起来已经集成了最新版本),以实现一致的哈希. 因为我不知道您的应用程序场景,所以很难说您必须使用内存缓存还是Redis. 例如,也许MongoDB在存储日志方面会更好. 3.具有大量缓存但不经常更改的数据,例如注释. 4.您的想法是正确和明确的. 在读取DB之前,如果有直接返回,则首先读取缓存;如果没有读取的DB,则应写入缓存层并返回. 5.考虑是否需要主从,读写分离,考虑分布式部署java redis缓存使用,并考虑将来是否横向扩展. 6.如果要一劳永逸,随后的维护和扩展很方便,那么可以优化现有的代码体系结构,并在需要更改大量代码的情况下替换组件,这表明当前体系结构存在问题. 您可以使用一些现有的框架,例如SpringMVC,将您的应用程序层与业务层和层分离. 在转到缓存之前,请做好此操作. 7.使读取缓存和其他操作成为服务组件,为业务层提供服务,而业务层为应用程序层提供服务. 8.保留原始组件并将其优化为服务组件,以方便后续业务层灵活地调用缓存或. 9.不建议一次全部缓存,并且起初不会启动核心业务. 您可以先用缓存组件替换边缘业务,然后逐步切换到核心业务. 10.刷新内存java redis缓存使用,以memcached为例,进行添加,修改和删除操作,通常使用延迟加载策略,即仅在添加时写入,并且不会立即更新Memcached,但不会等待更新再次读取加载到Memcached中后,修改和删除操作也会更新,然后将Memcached中的数据标记为无效,并等待下一次读取后再加载.

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-244025-1.html

你可能感兴趣的:(java,redis,mysql)