Spring 整合 Redis-Windows
参考资料: 杨开振老师写的SSM+Redis 互联网轻量级框架整合开发
Redis的使用场景主要有两个,一个是缓存常用的数据,比如用户状态,用户通行证,一些验证码,都是有时效性;第二种 对数据进行高速读/写的场景,比如商品的秒杀,抢红包,淘宝,京东的双十一活动或者春运抢票,这类场合在一个瞬间成千上万的请求就会达到服务器,如果使用的是数据库,一瞬间数据库就要执行上万的SQL,很容易造成数据库的瓶颈,严重的会导致数据库瘫痪,造成Java Web 系统服务的崩溃。
一. 下载redis
链接: link.
这里有两种安装方式,第一种是安装向导可以配置一些东西,这里选选第二种,直接解压就行了。
二. 启动redis
点击redis-server 这样就可以启动redis服务器
启动成功就是这个样子,如果要用的话千万别关掉!!!
三. 导入相关依赖包
这两个包可以去maven*仓库找,注意我的spring版本是4.3.7,spring版本不一样,我们导入的包的版本也不一样,这里可能引起jar包和spring版本不兼容的问题,导入的jar包版本不一样,下面xml配置的语法规则也不一样。
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<!--redis的java api-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<!--在spring中使用redis-->
<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-redis -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.7.2.RELEASE</version>
</dependency>
四. 在application.xml里面配置redis
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!--最大空闲数 -->
<property name="maxIdle" value="50" />
<!--最大连接数 -->
<property name="maxTotal" value="100" />
<!--最大等待时间-->
<property name="maxWaitMillis" value="20000" />
</bean>
<bean id="connectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="localhost" />
<property name="port" value="6379" />
<!--<property name="password" value="paasword"/>-->
<property name="poolConfig" ref="poolConfig" />
</bean>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="connectionFactory" />
</bean>
五. 测试redis
我们下面简单的将一个字符串以键值对的形式存入redis中再拿出来,来看看我们连接redis服务器有没有成功。
public class RedisTest {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("application-context.xml");
RedisTemplate redisTemplate = applicationContext.getBean(RedisTemplate.class);
redisTemplate.opsForValue().set("token", "balabala");
String token = (String) redisTemplate.opsForValue().get("token");
System.out.println(token);
}
}
大家看打印的结果,成功取出redis中的数据。
六. 简单的讨论一下redis可以支持的存入的数据类型,怎么存类对象
参考:杨开振老师的 SSM+Redis 整合
Redis支持的6中数据类型:String List Set Hash Zset HyperLogLog
由于redis只能提供基于字符串型的操作,而在java中使用的却以类对象为主,所以需要redis存储的字符串和java对象互相转换,如果自己编写这些规则,工作量还是比较大的,所以spring提供了序列化的设计框架和一些序列化类,使用后它可以通过序列化把java对象转换,使得redis能把它存储起来,并且在读取的时候,再把由序列化的字符串转化为java对象,这样就可以来存来读取java对象了。因为spring提供了好多种序列化器,但它们都是RedisSerializer的实现类,下面举一个例子,看看怎么配置。
选用stringRedisSerializer作为redis的key的序列化器
选用jdkSerializationRedisSerializer作为redis的value的序列化器
<bean id="jdkSerializationRedisSerializer"
class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
<bean id="stringRedisSerializer"
class="org.springframework.data.redis.serializer.StringRedisSerializer" />
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="connectionFactory" />
//选用stringRedisSerializer作为redis的key的序列化器
<property name="keySerializer" ref="stringRedisSerializer" />
//选用jdkSerializationRedisSerializer作为redis的value的序列化器
<property name="valueSerializer" ref="jdkSerializationRedisSerializer" />
</bean>
把这两个类加载到ioc容器里,放在redisTemplate配置里,就可以直接使用RedisTemplate存取对象了。
上一篇: python实现发送和获取手机短信验证码
推荐阅读
-
Spring Cloud Gateway网关XSS过滤Filter
-
Spring Cloud动态配置实现原理与源码分析
-
Spring+Junit4进行接口测试实例代码
-
在Spring Boot中使用swagger-bootstrap-ui的方法
-
spring mvc中直接注入的HttpServletRequst安全吗
-
Spring boot工具类静态属性注入及多环境配置详解
-
Spring+Hibernate+Struts(SSH)框架整合实战
-
Spring Cloud Zuul的重试配置详解
-
SpringCloud之服务注册与发现Spring Cloud Eureka实例代码
-
Spring的RestTemplata使用的具体方法