`
oham_一1一
  • 浏览: 51406 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Redis Spring 整合 demo

阅读更多

项目打算重构,用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

 

大侠们帮忙看下哈,多谢指出不妥之处

 

 

 

 


 

  • 大小: 83.2 KB
  • 大小: 204.2 KB
分享到:
评论

相关推荐

    springMVC+mybatis+shiro+redis 项目整合demo

    这个"springMVC+mybatis+shiro+redis 项目整合demo"就是一个实例,展示了如何将这些技术集成到一个项目中,以实现高效的数据处理、用户认证授权和缓存管理。 首先,`SpringMVC` 是 Spring 框架的一部分,它是一个...

    spring整合redis小demo

    总的来说,Spring整合Redis使得在Java应用中使用Redis变得更加便捷,无论是简单的字符串操作还是复杂的对象存储,都能通过Spring提供的工具轻松实现。通过上述步骤,你可以构建一个基本的Spring-Redis集成系统,...

    spring+redis整合demo

    本文将详细解析"spring+redis整合demo"中的关键知识点,帮助你理解如何将Spring与Redis结合使用。 1. **Spring框架**:Spring是一个开源的Java平台,它简化了开发过程,提供了全面的编程和配置模型。Spring的核心...

    Redis+mysql整合spring的Demo

    本项目“Redis+mysql整合spring的Demo”提供了一个实际的示例,展示了如何在Spring框架中整合Redis和MySQL数据库,以实现高效的数据处理。下面我们将详细探讨涉及的知识点。 1. **Redis**: Redis是一个高性能的键值...

    Ehcache+xmemcached+redis 整合spring注解demo

    xmemcached提供了丰富的API,可以方便地与Spring整合,通过注解实现缓存管理。例如,可以使用`@Memcached`注解在方法上,使方法结果自动存储到Memcached服务器。 3. **Redis**: Redis是一个开源的、基于键值对的...

    Spring+redis整合demo2

    本文将深入探讨如何将Spring与Redis整合,以实现高效的数据管理。 首先,Spring对Redis的支持主要通过Spring Data Redis模块实现。这个模块提供了对Redis操作的抽象,使得开发者可以方便地在Spring应用中集成Redis...

    spring+redis的Demo

    本文将详细讲解如何将Redis与Spring框架整合,并实现一个基础的Demo。 首先,理解Spring和Redis的基本概念是至关重要的。Spring是一个开源的Java应用程序框架,它提供了一种模块化和松耦合的方式来构建应用。而...

    spring boot整合redis demo代码

    本示例将详细介绍如何在Spring Boot项目中整合Redis,实现数据的高效存储与访问。 一、集成Redis 1. 添加依赖 在Spring Boot项目的`pom.xml`文件中,我们需要引入Spring Data Redis和Spring Boot的Redis starter...

    maven+springmvc+redis+mybatis整合

    本项目以“maven+springmvc+redis+mybatis整合”为主题,旨在提供一个基于这些技术的集成框架,特别强调了利用Redis作为缓存来提升应用性能。下面将详细阐述这个框架中的各个组成部分以及它们之间的协作。 首先,...

    SpringMVC+redis集成demo,超简单使用案例

    SpringMVC+redis 简单案例,实现了简单的redis存取功能,以及springmvc的实例化功能,SpringMVC+redis 简单案例,实现了简单的redis存取功能,以及springmvc的实例化功能,SpringMVC+redis 简单案例,实现了简单的...

    Spring boot redis demo.rar

    Spring Boot 是一个流行的 Java 框架,它简化了创建生产级别的、独立的Spring应用程序的过程。Redis 是一个高性能的...这个"Spring boot redis demo"是一个很好的起点,帮助开发者快速上手Spring Boot与Redis的整合。

    redis cluster spring整合代码

    5. **测试代码**:在`RedisDemo`中,可能会有测试类或者方法,用来验证Redis集群与Spring的整合是否成功,例如存储和检索数据,检查数据分布情况,以及进行故障转移的测试。 6. **数据分布与槽管理**:由于是关于...

    spring boot demo (包括异常处理 aop redis的整合)

    在"spring boot demo"项目中,你将找到关于异常处理、AOP(面向切面编程)以及 Redis 整合的实践示例。 **异常处理**在Spring Boot中通常通过`@ControllerAdvice`和`@ExceptionHandler`注解实现。`@...

    Spring+Redis整合例子

    在Spring应用中整合Redis,首先需要在配置文件(如application.properties或yaml)中添加Redis服务器的相关连接信息,包括主机名、端口号、密码等。例如: ``` spring.redis.host=localhost spring.redis.port=...

    springboot+duubo+zokeeper+Redis整合demo

    在"springboot+duubo+zokeeper+Redis整合demo"中,这四个组件被结合在一起,构建了一个完整的微服务架构示例。Spring Boot作为基础框架,提供启动和运行服务的能力;Dubbo则用于服务的提供和消费,通过Zookeeper进行...

    springmvc整合redis简易Demo.zip

    在本项目"springmvc整合redis简易Demo.zip"中,我们将探讨如何将Spring MVC框架与Redis内存数据存储系统相结合,以实现高效的数据缓存和管理。这个简易Demo是为Java开发者设计的,旨在帮助他们理解并实践Spring MVC...

    springdataredis-demo

    - 提供了对不同Redis客户端的整合(Lettuce和Jedis) - 提供了RedisTemplate统一API来操作Redis - 支持Redis的发布订阅模型 - 支持Redis哨兵和Redis集群 - 支持基于Lettuce的响应式编程 - 支持基于JDK、JSON、字符串...

    SpringMVC整合RedisDemo

    在本项目"SpringMVC整合RedisDemo"中,我们探讨了如何将流行的Java Web框架SpringMVC与高性能的键值存储系统Redis相结合,以提升Web应用的数据处理速度和效率。这个项目采用Maven作为构建工具,确保依赖管理的便捷性...

    SSM整合Redis缓存Demo

    SSM整合Redis缓存Demo是基于Spring、SpringMVC和MyBatis的高效开发框架,进一步结合了Redis作为缓存技术的示例项目。这个Demo适用于开发者在MyEclipse或Eclipse环境中导入并配置数据库,只要本地已安装Redis服务器,...

Global site tag (gtag.js) - Google Analytics