Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

एक्सएमएल में रेडिस के साथ काम करने के लिए स्प्रिंग सत्र को कैसे कॉन्फ़िगर करें?

मैंने इस मुद्दे को हल किया। सबसे पहले, मैं कक्षाओं को क्रमबद्ध बनाता हूं। ऐसा करने के लिए, इस पोस्ट का पालन करें:कैसे जावा वर्ग को Serializable बनाने के लिए जो wsdl द्वारा उत्पन्न होता है

फिर मैंने webapp/WEB-INF के अंतर्गत redis-config.xml बनाया:

<?xml version='1.0' encoding='UTF-8' ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.1.xsd">

    <context:annotation-config/>
    <bean
            class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>
    <bean id="jedisConnectionFactory"
          class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="127.0.0.1"
          p:port="6379" p:usePool="true" p:database="0"/>

</beans>

फिर मैंने web.xml में कुछ बदलाव किए। सत्र संग्रहीत करने के लिए org.springframework.web.filter.DelegatingFilterProxy वर्ग के साथ स्प्रिंग सत्र रिपोजिटरीफ़िल्टर होना चाहिए। लेकिन मेरे पास यह वर्ग web.xml में एक और फ़िल्टर-नाम के साथ था। कार्यक्रम के काम करने के लिए, स्प्रिंगसेशन रिपोजिटरीफिल्टर को सबसे पहले लिखा जाना चाहिए:

<filter>
        <filter-name>springSessionRepositoryFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
<filter-mapping>
        <filter-name>springSessionRepositoryFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>

फिर मैंने संदर्भ-परम में /WEB-INF/redis-config.xml मान जोड़ा, लेकिन यह log4j2 के लिए समस्या का कारण बना। इसलिए मैंने ऊपर log4j2 के लिए संदर्भ-परम लिखा है।

<context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </context-param>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/spring-security.xml
            /WEB-INF/applicationContext.xml
            /WEB-INF/redis-config.xml
        </param-value>
    </context-param>

बस इतना ही। अब सत्र रेडिस में स्टोर करें

संपादित करें :उपरोक्त कोड केवल स्थानीय रेडिस के साथ काम कर रहा था। जब मैंने रिमोट रेडिस सर्वर लिखा तो यह इस तरह अपवाद फेंकता है:रेडिस को कीस्पेस अधिसूचनाओं में कॉन्फ़िगर करने में असमर्थ। इसे हल करने के लिए, मैंने अपना redis-config.xml इस प्रकार बदल दिया:

<?xml version='1.0' encoding='UTF-8' ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

    <context:annotation-config/>
    <bean
            class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration" p:configureRedisAction-ref="configureRedisAction" />
    <util:constant id="configureRedisAction"
            static-field="org.springframework.session.data.redis.config.ConfigureRedisAction.NO_OP"/>
    <bean id="jedisConnectionFactory"
          class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="xxx.xxx.xx.xxx"
          p:port="6379" p:usePool="true" p:database="0" p:password="xxx"/>
</beans>

मैं यह उल्लेख करना भूल गया कि निर्भरता के कुछ नए संस्करण एक दूसरे के साथ काम नहीं करते हैं। रेडिस की निर्भरता इस प्रकार होनी चाहिए:

<dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>1.8.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session</artifactId>
            <version>1.3.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
            <version>1.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>io.lettuce</groupId>
            <artifactId>lettuce-core</artifactId>
            <version>5.1.1.RELEASE</version>
        </dependency>



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Azure Redis कैश - GET कॉल पर टाइमआउट

  2. MISCONF Redis को RDB स्नैपशॉट को सहेजने के लिए कॉन्फ़िगर किया गया है

  3. क्या कोई रेडिस सेटबिट कमांड की व्याख्या कर सकता है?

  4. Yii2 को रेडिस कॉन्फ़िगरेशन के साथ कैसे सेटअप करें

  5. नोड-रेडिस का उपयोग नोड 8 के साथ करें