欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring 整合 Redis-Windows

程序员文章站 2022-05-21 18:15:49
...

参考资料: 杨开振老师写的SSM+Redis 互联网轻量级框架整合开发

Redis的使用场景主要有两个,一个是缓存常用的数据,比如用户状态,用户通行证,一些验证码,都是有时效性;第二种 对数据进行高速读/写的场景,比如商品的秒杀,抢红包,淘宝,京东的双十一活动或者春运抢票,这类场合在一个瞬间成千上万的请求就会达到服务器,如果使用的是数据库,一瞬间数据库就要执行上万的SQL,很容易造成数据库的瓶颈,严重的会导致数据库瘫痪,造成Java Web 系统服务的崩溃。

一. 下载redis

链接: link.
Spring 整合 Redis-Windows
这里有两种安装方式,第一种是安装向导可以配置一些东西,这里选选第二种,直接解压就行了。

二. 启动redis

Spring 整合 Redis-Windows
点击redis-server 这样就可以启动redis服务器
Spring 整合 Redis-Windows
启动成功就是这个样子,如果要用的话千万别关掉!!!

三. 导入相关依赖包

这两个包可以去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);
    }
}

Spring 整合 Redis-Windows
大家看打印的结果,成功取出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存取对象了。