redis和mysql怎么一起在springmvc里面

一、mysql集成到springMVC中的方法:1、在SRC目录下创建一个db-config.properties文件来存放我们的数据源配置信息:db.url= jdbc:mysql:///springmvcdb?useUnicode=true&characterEncoding=utf8 db.username=root db.password=root db.dirverClass= com.mysql.jdbc.Driver 2、配置applicationContext.xml文件...
redis和mysql怎么一起在springmvc里面
用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql,此种情况存在的问题主要是如何保证mysql与redis的数据同步,二者数据同步的关键在于mysql数据库中主键,方案是在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。

String tbname = "login";

//获取mysql表主键值--redis启动时
long id = MySQL.getID(tbname);
//设置redis主键值--redis启动时
redisService.set(tbname, String.valueOf(id));

System.out.println(id);
long l = redisService.incr(tbname);
System.out.println(l);
Login login = new Login();
login.setId(l);
login.setName("redis");
redisService.hmset(String.valueOf(login.getId()), login);

boolean b = MySQL.insert("insert into login(id,name) values(" + login.getId() + ",'" + login.getName() + "')");
/**
*
* 队列处理器更新mysql失败:
*
* 清除缓存数据,同时主键值自减
*/
if (!b){
redisService.delKeyAndDecr(tbname, "Login:"+String.valueOf(login.getId()));
}
System.out.println(redisService.exists("Login:"+String.valueOf(login.getId())));
System.out.println(redisService.get(tbname));2016-10-01
一、mysql集成到springMVC中的方法:

1、在SRC目录下创建一个db-config.properties文件来存放我们的数据源配置信息:
db.url= jdbc:mysql:///springmvcdb?useUnicode=true&characterEncoding=utf8
db.username=root
db.password=root
db.dirverClass= com.mysql.jdbc.Driver
2、配置applicationContext.xml文件:
<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- 定义个缺省的控制适配器 -->
<bean
class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- 获取配置文件 -->
<bean id="config"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:db-config.properties</value>
</list>
</property>
</bean>
<!-- 获取数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>${db.dirverClass}</value>
</property>
<property name="url">
<value>${db.url}</value>
</property>
<property name="username">
<value>${db.username}</value>
</property>
<property name="password">
<value>${db.password}</value>
</property>
</bean>
<!--
URL到处理器的映射列表可以配置多个
mappings属性健值为URL程序文件地址,而值为处理器的Bean名字,URL程序文件地址可采用路径匹配的模式,如:
com/mvc/t?st.jsp:匹配com/mvc/test.jsp、com/mvc/tast.jsp等 com/mvc /*.jsp
:匹配所有com/mvc/下带jsp后缀的URL com/mvc
/**/test.jsp:匹配所有在com/mvc路径下或子孙路径下的test.jsp com/mvc
/**/*.jsp:匹配所有com/mvc路径下或子孙路径下带.jsp后缀的URL cn/**/web/bla.jsp:匹配
cn/option/web/dog.jsp cn/option/test/web/dog.jsp cn/web/dog.jsp的请求
-->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>
user.do=userAction
</value>
</property>
</bean>

<!--定义视图通过internalResourceView来表示使用的是Servlet/jsp技术-->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.InternalResourceView
</value>
</property>
<!--jsp存放的目录-->
<property name="prefix">
<value>/jsp/</value>
</property>
<!--jsp文件的后缀-->
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<bean id="userDao" class="com.yjde.springmvc.UserDao">
<property name="dataSource"ref="dataSource"></property>
</bean>
<!--定义控制器-->
<bean id="userAction" class="com.yjde.springmvc.UserController">
<property name="dao">
<ref bean="userDao"/>
</property>
<property name="commandClass">
<value>com.yjde.springmvc.UserDao</value>
</property>
<property name="viewpage">
<value>userInfo</value>
</property>
</bean>
</beans>

以上就集成好了,加入mysql的jar包就可以连接mysql了。
二、redis集成springMVC的方法:
1. 依赖包安装
pom.xml 加入:

[html] view plain copy print?
<!-- redis cache related.....start -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.6.0.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.3</version>
</dependency>
2. Spring 项目集成进缓存支持
要启用缓存支持,我们需要创建一个新的 CacheManager bean。CacheManager 接口有很多实现,本文演示的是和 Redis 的集成,自然就是用 RedisCacheManager 了。Redis 不是应用的共享内存,它只是一个内存服务器,就像 MySql 似的,我们需要将应用连接到它并使用某种“语言”进行交互,因此我们还需要一个连接工厂以及一个 Spring 和 Redis 对话要用的 RedisTemplate,这些都是 Redis 缓存所必需的配置,把它们都放在自定义的 CachingConfigurerSupport 中:
@EnableCaching
public class RedisCacheConfig extends CachingConfigurerSupport {

@Bean
public JedisConnectionFactory redisConnectionFactory() {
JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory();

// Defaults
redisConnectionFactory.setHostName("192.168.1.166");
redisConnectionFactory.setPort(6379);
return redisConnectionFactory;
}

@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
redisTemplate.setConnectionFactory(cf);
return redisTemplate;
}

@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);

// Number of seconds before expiration. Defaults to unlimited (0)
cacheManager.setDefaultExpiration(3000); // Sets the default expire time (in seconds)
return cacheManager;
}
}
3、在 applicationContext.xml 中加入以下配置:
<context:component-scan base-package="com.defonds.bdp.cache.redis" />2016-11-12
mengvlog 阅读 71 次 更新于 2025-09-09 03:33:08 我来答关注问题0
  • 使用系统服务管理工具启动MySQL服务。检查MySQL服务是否成功启动,并监听指定的端口。创建数据库和表:登录MySQL数据库,根据需要创建数据库和表。设计表结构时,考虑数据的存储方式、索引策略等。2. Redis部署: 安装Redis: 根据操作系统类型,下载并安装Redis服务器。 安装过程中,注意配置Redis的端口...

  •  起航知识小百科 rocketmq实现redis和mysql最终一致性

    在业务场景中,为了保证Redis和MySQL的数据一致性,采用消息队列(如RocketMQ)进行异步同步是一种常见且有效的方案。以下是关于如何实现这一目标的详细说明:数据修改与消息发送:当MySQL数据库中的数据发生修改时,首先确保数据库事务的完整性。在数据库事务提交后,发送一条消息到RocketMQ,消息内容包含需要...

  •  深空见闻 rocketmq实现redis和mysql最终一致性

    RocketMQ可以通过异步同步的方式实现Redis和MySQL的最终一致性。具体实现方式如下:数据修改触发消息发送:当MySQL数据库中的数据发生修改时,业务系统会首先更新MySQL中的数据。紧接着,业务系统会将数据修改的事件封装成一条消息,并发送到RocketMQ的消息队列中。消息接收与Redis更新:RocketMQ的消费者端会监...

  • 数据的一致性是关键,读操作流程如下:数据读取时,优先从Redis获取,若不存在则查询MySQL。更新操作流程则需谨慎,以确保数据一致性。直接删除Redis中对应项或更新Redis,需考虑并发访问的复杂性。并发场景下,先更新MySQL后删除Redis可能导致数据不一致。因此,推荐每次更新MySQL后立即清除Redis,确保数据一致...

  •  翡希信息咨询 Redis 如何保持和 MySQL 数据一致

    一、数据流向控制 MySQL 持久化数据,Redis 只读数据 在这种模式下,Redis 主要作为 MySQL 的缓存层,用于加速读请求。读请求:对于不要求强一致性的读请求,优先从 Redis 中读取数据;对于要求强一致性的读请求,直接从 MySQL 中读取数据。写请求:所有写请求都先写入 MySQL,然后再更新 Redis。这样可以...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部