龙空技术网

spring data redis集成以及session共享

程序员柳大侠 266

前言:

此刻我们对“aspnetsession扩展”大约比较关切,小伙伴们都想要了解一些“aspnetsession扩展”的相关内容。那么小编在网上网罗了一些对于“aspnetsession扩展””的相关知识,希望看官们能喜欢,各位老铁们快快来了解一下吧!

redis 是一款基于内存存储的高性能缓存框架,支持多种数据结构如string, hash, list, set、sorted set、bitmap等多种数据类型,也提供了很多高可用功能如rdb和aof备份、哨兵模式和集群模式部署。redis有许多的应用场景,一般用于替代一些数据库访问热点数据操作减少数据库压力以及提高性能,也可用于session共享、排行榜等。redis是业内最流行的一款缓存框架,使用的非常频繁。

redis

一些主流的开源框架也很好的集成了redis,Spring生态下的Spring Data系列集成了Redis,使用起来非常方便。Spring Data系列还拥有许多方便使用的项目。

Spring Data系列

下面介绍下在springboot中Spring Data Redis的简单使用。

简单三步集成。

1.加入maven依赖

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-data-redis</artifactId></dependency>

2.application.yml配置文件中配置redis服务器和端口以及连接池信息

spring:  redis:    host: 192.168.67.129#    password: 123456    port: 6379    jedis:      pool:        max-active: 100 #最大连接数        max-wait: 30000  #最大阻塞等待时间(负数代表没有限制)        max-idle: 20 #最大空闲连接数        min-idle: 0 #最小空闲连接数    timeout: 3000 #连接超时

3.使用RedisTemplate或操作redis

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;@Componentpublic class RedisService {    @Autowired    private RedisTemplate redisTemplate;    /**     * 设置缓存信息     * @param key 键     * @param value 值     */    public void set(String key,String value){        redisTemplate.opsForValue().set(key,value);    }    /**     * 获取缓存信息     * @param key 键     * @return 值     */    public String get(String key){        Object value = redisTemplate.opsForValue().get(key);        if(null != value) {            return value.toString();        }        return "";    }}

以上就是最简单的集成redis使用了,如果不会安装redis或者对redis有疑问的可以评论区留言。

可以使用docker-compose安装,新建docker-compose.yml文件,然后再同目录下执行docker-compose up -d即可创建redis。如果不会docker-compose或者没有服务器不会装虚拟机linux通信可以参考我的另外几篇文章docker-compose安装 centos7安装docker linux虚拟机设置NAT模式与主机进行网络通讯 。

version: "3"services:  redis:    image: redis    ports:      - "6379:6379"    restart: "always"    container_name: redis01    privileged: true    volumes:      - /opt/redis/conf/redis.conf:/etc/redis/redis.conf      - /opt/redis/data:/data
下面扩展一下session共享的使用(基于上面的配置)

1.加入maven依赖

<dependency>    <groupId>org.springframework.session</groupId>    <artifactId>spring-session-data-redis</artifactId></dependency>

springboot会自动给我们在启动类添加上注解@EnableRedisHttpSession,该注解会在底层会创建一个 springSessionRepositoryFilter 的过滤器,该过滤器实现了 Filter接口,过滤器将 HttpSession 替换为spring session支持的方式,springboot帮我们实现了所有请求会经过springSessionRepositoryFilter 过滤器,这样就不会使用servlet容器比如tomcat的HttpSession方式了。session信息将被持久化到redis中。

2.配置session存储类型、失效时间、写入模式、命名空间

在springboot的application.properties或application.yml文件配置如下内容

spring.session.store-type=redisserver.servlet.session.timeout=1800 # Session 超时时间,默认单位秒,也可以使用spring.session.timeout属性spring.session.redis.flush-mode=on_save # Sessions写入redis存储的模式,on_save 保存时写入 ,IMMEDIATE 立刻写入spring.session.redis.namespace=spring:session # 命名空间

3.测试接口代码

@RequestMapping("/session")public String session(HttpSession session){    System.out.println(session.getId());    return session.getId();}

4.测试查看redis session数据

我们在浏览器请求下 ,然后去服务器上看下redis的存储信息,可以看到,redis中已经存储了session信息了

redis session信息

其中spring:session:sessions是sessionid,spring:session:expirations是指session到该时间失效

就是这么简单,希望对你有所帮助,欢迎互动。

标签: #aspnetsession扩展