项目打算重构,用Redis做缓存。自己写了个业务级封装,还请各路高手帮个忙给予指点。。。
首先这个demo数据库用的是Mysql,Mybatis做的持久化中间件。
测试的数据库表:
CREATE TABLE `tb_team` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(30) DEFAULT NULL, `user_id` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`), KEY `user_id` (`user_id`), CONSTRAINT `tb_team_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; CREATE TABLE `tb_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(10) DEFAULT NULL, `add_date` datetime DEFAULT NULL, `team_id` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`), KEY `team_id` (`team_id`), CONSTRAINT `tb_user_ibfk_1` FOREIGN KEY (`team_id`) REFERENCES `tb_team` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=utf8;
缓存策略如下:
查询结果集缓存的是实体的缓存key,而不是整个结果集,在返回这些结果集数据时,通过这些实体key就能找到对应的hashmap,而这些hashmap就是每个实体对应的缓存数据。
按照这个策略,不适合对频繁改动的数据做缓存,因为每次的修改操作都会修改缓存。需要自行判别哪些数据访问比较频繁且不经常修改。还有的是,这里没有考虑到集群缓存的情况,紧适合单机。
整体思路:对应关系型数据库中的实体表,为需要提供缓存访问的实体表数据提供一个CommonMapper的接口,包含一组常用的数据操作方法,这组操作将会被进行缓存功能封装。
提供一个CacheService<T, D extends CommonMapper<T>>接口,对应commonMapper,提供相应的数据操作方法以及一些缓存相关的方法。有CacheServiceImpl 抽象类实现CacheService,具体在里面进行缓存数据操作的封装。该类需要被继承,由具体的子类提供其相应的实体数据的缓存存储方式(不同实体具有不一样的属性,影响到缓存数据的存储和提取)
- save,新增实体的缓存以及数据库记录,同时清除跟这个实体表相关的查询缓存。
- update, 更新实体的缓存以及数据库记录,同时清除跟这个实体表相关的查询缓存。
- delete,删除实体缓存以及数据库记录,同时清除跟这个实体表相关的查询缓存。
- deleteByIds 与delete类同。
- get,首先尝试从缓存获取,若获取不了再从数据库获取,若有,则缓存这个实体,若没有则返回null。
- selectListCacheByParam,需要用到RedisCacheSearchBuilder来操作查询参数,目的是用这些查询参数结合指定的一个业务关键字生成一个key,用于缓存查询到的实体缓存key列表,这些key对应一个缓存list,list里面存储这查询结果实体的缓存key。(参考缓存策略)
- 其他的查询如连接查询需要自己实现,但原理与selectListCacheByParam参不多,只是做缓存时对应不同的实体要操作不同的结果集实体key列表(详情看看demo里的)。
demo的结构如下(有些丑,不太会UML):
项目可以clone下来:
这是oschina的git库,github又特么访问不了
https://git.oschina.net/oham/testredis.git
大侠们帮忙看下哈,多谢指出不妥之处
相关推荐
这个"springMVC+mybatis+shiro+redis 项目整合demo"就是一个实例,展示了如何将这些技术集成到一个项目中,以实现高效的数据处理、用户认证授权和缓存管理。 首先,`SpringMVC` 是 Spring 框架的一部分,它是一个...
总的来说,Spring整合Redis使得在Java应用中使用Redis变得更加便捷,无论是简单的字符串操作还是复杂的对象存储,都能通过Spring提供的工具轻松实现。通过上述步骤,你可以构建一个基本的Spring-Redis集成系统,...
本文将详细解析"spring+redis整合demo"中的关键知识点,帮助你理解如何将Spring与Redis结合使用。 1. **Spring框架**:Spring是一个开源的Java平台,它简化了开发过程,提供了全面的编程和配置模型。Spring的核心...
本项目“Redis+mysql整合spring的Demo”提供了一个实际的示例,展示了如何在Spring框架中整合Redis和MySQL数据库,以实现高效的数据处理。下面我们将详细探讨涉及的知识点。 1. **Redis**: Redis是一个高性能的键值...
xmemcached提供了丰富的API,可以方便地与Spring整合,通过注解实现缓存管理。例如,可以使用`@Memcached`注解在方法上,使方法结果自动存储到Memcached服务器。 3. **Redis**: Redis是一个开源的、基于键值对的...
本文将深入探讨如何将Spring与Redis整合,以实现高效的数据管理。 首先,Spring对Redis的支持主要通过Spring Data Redis模块实现。这个模块提供了对Redis操作的抽象,使得开发者可以方便地在Spring应用中集成Redis...
本文将详细讲解如何将Redis与Spring框架整合,并实现一个基础的Demo。 首先,理解Spring和Redis的基本概念是至关重要的。Spring是一个开源的Java应用程序框架,它提供了一种模块化和松耦合的方式来构建应用。而...
本示例将详细介绍如何在Spring Boot项目中整合Redis,实现数据的高效存储与访问。 一、集成Redis 1. 添加依赖 在Spring Boot项目的`pom.xml`文件中,我们需要引入Spring Data Redis和Spring Boot的Redis starter...
本项目以“maven+springmvc+redis+mybatis整合”为主题,旨在提供一个基于这些技术的集成框架,特别强调了利用Redis作为缓存来提升应用性能。下面将详细阐述这个框架中的各个组成部分以及它们之间的协作。 首先,...
SpringMVC+redis 简单案例,实现了简单的redis存取功能,以及springmvc的实例化功能,SpringMVC+redis 简单案例,实现了简单的redis存取功能,以及springmvc的实例化功能,SpringMVC+redis 简单案例,实现了简单的...
Spring Boot 是一个流行的 Java 框架,它简化了创建生产级别的、独立的Spring应用程序的过程。Redis 是一个高性能的...这个"Spring boot redis demo"是一个很好的起点,帮助开发者快速上手Spring Boot与Redis的整合。
5. **测试代码**:在`RedisDemo`中,可能会有测试类或者方法,用来验证Redis集群与Spring的整合是否成功,例如存储和检索数据,检查数据分布情况,以及进行故障转移的测试。 6. **数据分布与槽管理**:由于是关于...
在"spring boot demo"项目中,你将找到关于异常处理、AOP(面向切面编程)以及 Redis 整合的实践示例。 **异常处理**在Spring Boot中通常通过`@ControllerAdvice`和`@ExceptionHandler`注解实现。`@...
在Spring应用中整合Redis,首先需要在配置文件(如application.properties或yaml)中添加Redis服务器的相关连接信息,包括主机名、端口号、密码等。例如: ``` spring.redis.host=localhost spring.redis.port=...
在"springboot+duubo+zokeeper+Redis整合demo"中,这四个组件被结合在一起,构建了一个完整的微服务架构示例。Spring Boot作为基础框架,提供启动和运行服务的能力;Dubbo则用于服务的提供和消费,通过Zookeeper进行...
在本项目"springmvc整合redis简易Demo.zip"中,我们将探讨如何将Spring MVC框架与Redis内存数据存储系统相结合,以实现高效的数据缓存和管理。这个简易Demo是为Java开发者设计的,旨在帮助他们理解并实践Spring MVC...
- 提供了对不同Redis客户端的整合(Lettuce和Jedis) - 提供了RedisTemplate统一API来操作Redis - 支持Redis的发布订阅模型 - 支持Redis哨兵和Redis集群 - 支持基于Lettuce的响应式编程 - 支持基于JDK、JSON、字符串...
在本项目"SpringMVC整合RedisDemo"中,我们探讨了如何将流行的Java Web框架SpringMVC与高性能的键值存储系统Redis相结合,以提升Web应用的数据处理速度和效率。这个项目采用Maven作为构建工具,确保依赖管理的便捷性...
SSM整合Redis缓存Demo是基于Spring、SpringMVC和MyBatis的高效开发框架,进一步结合了Redis作为缓存技术的示例项目。这个Demo适用于开发者在MyEclipse或Eclipse环境中导入并配置数据库,只要本地已安装Redis服务器,...