Spring学习——Spring整合redis,实现redis缓存session

场景:

        现在使用的框架中有整合redis,用来缓存登录信息和保存在session中的一些信息,以前没有特别关注,最近有点时间,自己动手整合了下,记录下整合过程,以备以后不时之需。


第一步:添加涉及的jar包

使用maven 在pom.xml中添加引入


    
      org.springframework.data
      spring-data-redis
      1.7.6.RELEASE
    
    
      org.springframework.session
      spring-session
      1.2.0.RELEASE
    
    
      redis.clients
      jedis
      2.8.1
    

第二步:编写 redis 的相关连接配置信息

redis.hostName=192.168.1.205
redis.port=6379
redis.password=
redis还有很多的配置,我这边图方便,就只写了连接信息。

这里可以单独创建一个 redis.properties 文件,也可以把 redis 的连接配置信息写到其他的配置文件中,只要后面在 Spring 配置文件中有引入该配置就好

第三步:在 Spring 配置文件中增加redis的配置

首先,记得把写有redis的连接信息的配置文件引入进来

    
      


    
    
        
        
        
    

    
    
        
    

    
    
        
        
        
    
    
    
        
        
        
    

第四步:更改 web.xml ,增加拦截器


  
    org.springframework.web.context.ContextLoaderListener
  

  
  
    springSessionRepositoryFilter
    org.springframework.web.filter.DelegatingFilterProxy
  

  
    springSessionRepositoryFilter
    /*
  

这里有个注意点:

添加redis连接信息的spring配置文件,要在web.xml 文件中配置过,启动web项目时,容器会去读它的配置文件web.xml 中读两个节点,容器创建一个ServletContext(上下文),这个web项目所有部分都将共享这个上下文,容器将转化为键值对,并交给ServletContext。

Spring学习——Spring整合redis,实现redis缓存session_第1张图片


至此,Spring 整合 redis 就已经完成了,可以重启项目验证了。

在 demo 工程中,前台传入登录信息,因为只是简单的demo,没有做密码加密和登录校验,在登录方法中将登录信息存入session中,并在控制台打印相应的 session 信息。

Spring学习——Spring整合redis,实现redis缓存session_第2张图片


在 redis 中根据sessionId 查看保存的session信息,在这里,我使用的是 RedisDesktopManager   redis 可视化工具,有需要可以百度下载按照和使用。

根据上面demo工程控制台打印信息,我们可以知道 ,当前sessionId 为 6731e78e-4ad2-43e3-9ef8-d5b0725d2ead ,而保存在redis中的key则为  spring:session:sessions:6731e78e-4ad2-43e3-9ef8-d5b0725d2ead,这个格式是spring生成的,还没去看是否可以更改,但正常不需要更改也可以使用。

Spring学习——Spring整合redis,实现redis缓存session_第3张图片

如上图所示,当前redis中已经保存了key值为 spring:session:sessions:6731e78e-4ad2-43e3-9ef8-d5b0725d2ead 的数据,因为保存进redis中的数据都是经过序列化的,所以在当前可视化工具中看到的是乱码,我们用redis命令 

HGET   spring:session:sessions:6731e78e-4ad2-43e3-9ef8-d5b0725d2ead sessionAttr:account 查看

Spring学习——Spring整合redis,实现redis缓存session_第4张图片

由此可以看到当前里面存的是 account ,和我们之前控制台打印的账号信息一致。

\xAC\xED\x00\x05t\x00\x07  这个是redis 序列化时生成的。




你可能感兴趣的:(Java)