{"id":1121,"date":"2019-01-31T14:17:33","date_gmt":"2019-01-31T06:17:33","guid":{"rendered":"http:\/\/van-yzt.com\/?p=1121"},"modified":"2019-01-31T14:17:33","modified_gmt":"2019-01-31T06:17:33","slug":"spring-sessionredis","status":"publish","type":"post","link":"https:\/\/huzi-baozi.com\/?p=1121","title":{"rendered":"Spring Session(Redis)"},"content":{"rendered":"<h2>pom.xml<\/h2>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\u2028    &lt;groupId&gt;org.springframework.session&lt;\/groupId&gt;\u2028    &lt;artifactId&gt;spring-session-data-redis&lt;\/artifactId&gt;\u2028    &lt;version&gt;1.3.1.RELEASE&lt;\/version&gt;\u2028    &lt;type&gt;pom&lt;\/type&gt;\u2028    &lt;exclusions&gt;\u2028        &lt;exclusion&gt;\u2028            &lt;groupId&gt;org.springframework.data&lt;\/groupId&gt;\u2028            &lt;artifactId&gt;spring-data-redis&lt;\/artifactId&gt;\u2028        &lt;\/exclusion&gt;\u2028    &lt;\/exclusions&gt;\u2028&lt;\/dependency&gt;\n\n...\n\n&lt;dependency&gt;\u2028    &lt;groupId&gt;org.springframework.data&lt;\/groupId&gt;\u2028    &lt;artifactId&gt;spring-data-redis&lt;\/artifactId&gt;\u2028    &lt;version&gt;1.8.6.RELEASE&lt;\/version&gt;\u2028&lt;\/dependency&gt;\n<\/code><\/pre>\n<h2>\nWebConfig.java<\/h2>\n<pre><code class=\"language-Java\">package com.alibaba.force.web.config;\u2028\u2028import com.alibaba.force.api.shared.aop.ForceHandlerInterceptor;\u2028import com.alibaba.force.common.enums.VisibilityLevelEnum;\u2028import com.alibaba.force.common.util.PropertyUtils;\u2028import com.alibaba.force.dal.model.AccessLevelEnum;\u2028\u2028import com.lambdaworks.redis.resource.ClientResources;\u2028import com.lambdaworks.redis.resource.DefaultClientResources;\u2028import org.springframework.beans.factory.annotation.Autowired;\u2028import org.springframework.context.annotation.Bean;\u2028import org.springframework.context.annotation.Configuration;\u2028import org.springframework.core.convert.converter.Converter;\u2028import org.springframework.data.redis.connection.RedisSentinelConfiguration;\u2028import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;\u2028import org.springframework.format.FormatterRegistry;\u2028import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;\u2028import org.springframework.web.servlet.config.annotation.EnableWebMvc;\u2028import org.springframework.web.servlet.config.annotation.InterceptorRegistry;\u2028import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;\u2028\u2028\/** \n  * @author van.yzt\u2028  * @date 2017\/08\/29\u2028  *\/\u2028  @Configuration\u2028  @EnableWebMvc\u2028  @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 108000)\u2028  public class WebConfig extends WebMvcConfigurerAdapter {\u2028  ...\u2028   @Bean\u2028   public LettuceConnectionFactory connectionFactory() {\u2028       RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration(\u2028           PropertyUtils.getRedisSentinelMasterName(),\u2028           PropertyUtils.getRedisSentinelNodes());\u2028       LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisSentinelConfiguration);\u2028       ClientResources clientResources = new LettuceRedisClientResourceConfig(DefaultClientResources.builder());\u2028       lettuceConnectionFactory.setClientResources(clientResources);\u2028       lettuceConnectionFactory.setTimeout(5000);\u2028       lettuceConnectionFactory.setPassword(PropertyUtils.getRedisConfigPassword());\u2028       lettuceConnectionFactory.setShareNativeConnection(true);\u2028       return lettuceConnectionFactory;\u2028   }\u2028  ...\u2028  }\n<\/code><\/pre>\n<p>This configuration uses <code>Redis Sentinel<\/code>.<\/p>\n<h2>\nConfiguration<\/h2>\n<pre><code>redis.sentinel.master.name=force-master\nredis.sentinel.nodes=10.101.104.13:26379,10.101.104.13:26380,10.101.104.13:26381\nredis.config.password=YPr2Ymj^8$8a2*aD0F7z^L\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>pom.xml &lt;dependency&gt;\u2028 &lt;groupId&gt;org.springframework.session&lt;\/groupId&gt;\u2028 &lt;artifactId&gt;spring-session-data-redis&lt;\/artifactId&gt;\u2028 &lt;version&gt;1.3.1.RELEASE&lt;\/version&gt;\u2028 &lt;type&gt;pom&lt;\/type&gt;\u2028 &lt;exclusions&gt;\u2028 &lt;exclusion&gt;\u2028 &lt;groupId&gt;org.springframework.data&lt;\/groupId&gt;\u2028 &lt;artifactId&gt;spring-data-redis&lt;\/artifactId&gt;\u2028 &lt;\/exclusion&gt;\u2028 &lt;\/exclusions&gt;\u2028&lt;\/dependency&gt; &#8230; &lt;dependency&gt;\u2028 &lt;groupId&gt;org.springframework.data&lt;\/groupId&gt;\u2028 &lt;artifactId&gt;spring-data-redis&lt;\/artifactId&gt;\u2028 &lt;version&gt;1.8.6.RELEASE&lt;\/version&gt;\u2028&lt;\/dependency&gt; WebConfig.java package com.alibaba.force.web.config;\u2028\u2028import com.alibaba.force.api.shared.aop.ForceHandlerInterceptor;\u2028import com.alibaba.force.common.enums.VisibilityLevelEnum;\u2028import com.alibaba.force.common.util.PropertyUtils;\u2028import com.alibaba.force.dal.model.AccessLevelEnum;\u2028\u2028import com.lambdaworks.redis.resource.ClientResources;\u2028import com.lambdaworks.redis.resource.DefaultClientResources;\u2028import org.springframework.beans.factory.annotation.Autowired;\u2028import org.springframework.context.annotation.Bean;\u2028import org.springframework.context.annotation.Configuration;\u2028import org.springframework.core.convert.converter.Converter;\u2028import org.springframework.data.redis.connection.RedisSentinelConfiguration;\u2028import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;\u2028import org.springframework.format.FormatterRegistry;\u2028import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;\u2028import org.springframework.web.servlet.config.annotation.EnableWebMvc;\u2028import org.springframework.web.servlet.config.annotation.InterceptorRegistry;\u2028import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;\u2028\u2028\/** * @author van.yzt\u2028 * @date 2017\/08\/29\u2028 *\/\u2028 @Configuration\u2028 @EnableWebMvc\u2028 @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 108000)\u2028 public class WebConfig extends WebMvcConfigurerAdapter {\u2028 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/huzi-baozi.com\/?p=1121\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Spring Session(Redis)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1121","post","type-post","status-publish","format-standard","hentry","category-snippet"],"_links":{"self":[{"href":"https:\/\/huzi-baozi.com\/index.php?rest_route=\/wp\/v2\/posts\/1121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/huzi-baozi.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/huzi-baozi.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/huzi-baozi.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/huzi-baozi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1121"}],"version-history":[{"count":1,"href":"https:\/\/huzi-baozi.com\/index.php?rest_route=\/wp\/v2\/posts\/1121\/revisions"}],"predecessor-version":[{"id":1122,"href":"https:\/\/huzi-baozi.com\/index.php?rest_route=\/wp\/v2\/posts\/1121\/revisions\/1122"}],"wp:attachment":[{"href":"https:\/\/huzi-baozi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/huzi-baozi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/huzi-baozi.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}