如何隔离Spring Boot应用程序Redis和Spring Boot会话全局Redis

2024-03-27

据我所知,spring boot和spring session为我们提供了一站式自动配置,但是当我的应用程序使用会话redis和应用程序缓存redis时,不是同一个redis服务器; 我该如何配置呢,非常感谢您的回复!


事实上,默认情况下,spring-session 和 spring-cache 实际上都是由 spring-boot 配置的RedisConnectionFactory豆命名为connectionFactory。 有两种方法可以做到这一点。

  1. make spring-session使用不同的connectionFactorybean 实例,并保留 spring-cache 使用默认值connectionFactory。下面是一个示例解决方案:

    @Configuration
    public class RedisHttpSessionConfig {
    
        @Bean
        StringRedisSerializer stringRedisSerializer() {
            return new StringRedisSerializer();
        }
    
        @Bean
        RedisConnectionFactory redisHttpSessionConnectionFactory() {
            RedisConnectionFactory redisHttpSessionConnectionFactory = null;
            // ... add your codes here
            return redisHttpSessionConnectionFactory;
        }
    
        @Bean
        public RedisTemplate<Object, Object> sessionRedisTemplate(
                RedisConnectionFactory redisHttpSessionConnectionFactory) {
            RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>();
            template.setKeySerializer(new StringRedisSerializer());
            template.setHashKeySerializer(new StringRedisSerializer());
            template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
            template.setDefaultSerializer(GenericJackson2JsonRedisSerializer());
            template.setConnectionFactory(redisHttpSessionConnectionFactory);
            return template;
        }
    }
    
  2. make spring-cache使用不同的connectionFactorybean 实例,并保留 spring-session 使用默认值connectionFactory。下面是一个示例解决方案:

    @Configuration
    public class RedisCacheConfig {
    
        @Bean
        StringRedisSerializer stringRedisSerializer() {
            return new StringRedisSerializer();
        }
    
        @Bean
        RedisConnectionFactory redisCacheConnectionFactory() {
             RedisConnectionFactory redisCacheConnectionFactory = null;
             // ... add your codes here
             return redisCacheConnectionFactory;
        }
    
        @Bean
        RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisCacheConnectionFactory) {
            RedisTemplate<Object, Object> redisTemplate = new RedisTemplate();
            redisTemplate.setConnectionFactory(redisCacheConnectionFactory);
            redisTemplate.setKeySerializer(this.stringRedisSerializer());
            redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
            return redisTemplate;
        }
    
        @Bean(name = "stringRedisTemplate")
        public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisCacheConnectionFactory) throws UnknownHostException {
            StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
            stringRedisTemplate.setConnectionFactory(redisCacheConnectionFactory);
            stringRedisTemplate.setKeySerializer(this.stringRedisSerializer());
            stringRedisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
            return stringRedisTemplate;
        }
    
        @Bean
        CacheManager cacheManager(RedisTemplate redisTemplate) {
            RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
            cacheManager.setDefaultExpiration(600l);
            cacheManager.setUsePrefix(true);
            return cacheManager;
        }
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何隔离Spring Boot应用程序Redis和Spring Boot会话全局Redis 的相关文章

随机推荐

  • C++ Visual Studio“非标准语法;使用‘&’创建指向成员的指针”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我多次遇到此错误 错误 C3867 非标准语法 使用 创建指向成员的指针 我知道这个问题已被问过很多次 但我不明白为什么会出现问题
  • 如何卸载隐藏/不活动的 jquery ui 选项卡?

    我在我的 asp net mvc Web 应用程序中使用 Jquery UI 选项卡 我总共有 6 个选项卡 每个选项卡都包含一个用户控件 我使用 ajax 将内容动态加载到每个选项卡中 如下所示 div align center ul l
  • 什么是“一流”对象?

    在给定的编程语言中 什么时候对象或其他东西被称为 一流 为什么 它们与非它们的语言有何不同 当人们说 一切都是对象 就像在 Python 中 时 他们真的意味着 一切都是一流的 吗 简而言之 这意味着该对象的使用没有任何限制 它是一样的 任
  • zsh 更改提示输入颜色

    我想更改 zsh 中输入文本的颜色 我为每个命令键入的文本 示例 在user host gt ls 我想要ls 为黄色以从标准输出中脱颖而出 我知道我可以完成这个bash using export PS1 BIGreen u h w IYe
  • 以编程方式删除 AppWidget

    我最难弄清楚如何以编程方式删除主屏幕 AppWidget 即无需用户实际将其拖入垃圾箱 举个例子 考虑一个可以有多个帐户的应用程序 每个帐户有任意数量的小部件 一旦删除帐户 小部件也应该被删除 我尝试过遵循一个不起眼的例子http www
  • 自动对焦仅适用于页面刷新

    我有一个弹出窗口中的表单 我设置了自动对焦属性autofocus autofocus 但当表单加载时它不会聚焦 但是如果刷新页面它会聚焦 该表格被插入到div 表格样本 First Name
  • 从 AsyncTaskLoader 更新进度条?

    使用 AsyncTaskLoader 时 如何更新显示更新状态的进度条 通常 您会等待回调完成后删除 但是如何进行运行更新呢 您会让主线程 ui 在设置数据时轮询数据吗 编辑 我正在谈论异步任务加载器 看loader部分 这是课程链接 ht
  • 如何使用 vagrant 定义网络设置

    我在 vagrant 中运行 Ubuntu 这是 Vagrantfile Vagrantfile API syntax version Don t touch unless you know what you re doing VAGRAN
  • 如何将带有值的命令行参数传递给 Inno Setup 编译器,以便我可以在代码中使用它们?

    我有两种可能的构建选项 由于我不希望我的客户使用某些参数启动安装程序 因此我最好将它们传递给编译器并在我的代码中完成所有工作 假设我有变量UNION它可能有两个值 0 and 1 我必须在代码中分析该变量的值 并根据结果包含或不包含某些文件
  • Hibernate与oracle dblink的实现

    刚接触hibernate 有没有办法在hibernate上实现oracle dblink 例如select from tablename dblink在hql中使用 在 Oracle 中为 tablename dblink 创建 SYNON
  • phantomjs 支持 Bayeux 或 WebSockets 吗?

    只是简单的问题 因为我在文档中没有找到任何参考资料 只是一个简单的答案 PhantomJS 1 x 不支持 但 PhantomJS 2 确实支持 websockets PhantomJS 2 0 0 的 Modernizr 输出
  • 如果行数超过 15,则向表中插入与打开行数相等的行数

    My table id sum type 1 3 1 1 6 1 1 6 2 1 3 1 1 3 1 1 6 1 These 1 3 1 是空行 类型始终为 1 总和可以不同 These 1 6 2 是封闭的行 输入 1 sum 空行的总和
  • option.style.display =“none”在 safari 中不起作用[重复]

    这个问题在这里已经有答案了 这是我正在研究的示例 http jsfiddle net 4suwY 5 http jsfiddle net 4suwY 5 HTML
  • 如何从文本文件中只读取一项内容?

    我可以从文件中读入 并且可以通过更改 for 循环中的数字来更改给出的行数 但我不希望文件中的所有数字像这样并排显示 我需要它们全部随机地一一下降 public class Assignment2 public static void ma
  • Python Sklearn.Model_Selection 给出错误,无法导入梳

    我将 train test split 导入为 from sklearn model selection import train test split 并给出错误无法导入名称 comb 我使用的版本是 scipy 0 18 1 和 skl
  • Botconnector 不适用于自签名的 Nodejs 机器人

    我创建了一个简单的机器人 自签名 ssl 证书 显然这不适用于机器人连接器 几秒钟后 我从机器人收到以下错误 error code BadCertificate message An error occurred while sending
  • 获取用户 keycloak Not Found 异常

    我无法像示例中那样获得用户组 样品来自 看看我们的测试套件 例如 UserTest https github com keycloak keycloak blob 2 5 0 Final testsuite integration arqu
  • Winforms 中是否可以从 ListView 拖放到 TreeView?

    如果不可能的话 我还可以使用 2 个 TreeView 控件 我只是不会在第二个 TreeView 控件中具有层次结构 它就像某种存储库 任何代码示例或教程都会非常有帮助 ListView自然不支持拖放 但您可以使用少量代码启用它 http
  • 如何在cordova应用程序中创建两个离子模式?

    您好 在我的应用程序中 我已经有一个用于登录的离子模式 ionicModal fromTemplateUrl templates login html scope scope then function modal scope modal
  • 如何隔离Spring Boot应用程序Redis和Spring Boot会话全局Redis

    据我所知 spring boot和spring session为我们提供了一站式自动配置 但是当我的应用程序使用会话redis和应用程序缓存redis时 不是同一个redis服务器 我该如何配置呢 非常感谢您的回复 事实上 默认情况下 sp