Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Làm cách nào để định cấu hình các phiên Spring hoạt động với Redis trong xml?

Tôi đã giải quyết vấn đề này. Đầu tiên, tôi làm cho các lớp có thể tuần tự hóa. Để thực hiện việc này, hãy làm theo bài đăng này:Cách tạo lớp java Serializable được tạo bởi wsdl

Sau đó, tôi tạo redis-config.xml dưới webapp / WEB-INF:

<?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>

Sau đó, tôi đã thực hiện một số thay đổi đối với web.xml. Để lưu trữ các phiên, phải có springSessionRepositoryFilter với lớp org.springframework.web.filter.DelectingFilterProxy. Nhưng tôi đã có lớp này trong web.xml với tên bộ lọc khác. Để chương trình hoạt động, trước tiên, springSessionRepositoryFilter nên được viết:

<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>

Sau đó, tôi đã thêm giá trị /WEB-INF/redis-config.xml vào context-param, nhưng nó gây ra sự cố cho log4j2. Đó là lý do tại sao tôi đã viết context-param cho log4j2 ở trên cùng.

<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>

Đó là tất cả. Hiện các phiên lưu trữ trong Redis

CHỈNH SỬA :Đoạn mã trên chỉ hoạt động với Redis cục bộ. Khi tôi viết máy chủ Redis từ xa, nó ném ra một ngoại lệ như sau:Không thể định cấu hình Redis cho các thông báo về keyspace. Để giải quyết vấn đề này, tôi đã thay đổi redis-config.xml của mình như sau:

<?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>

Tôi quên đề cập rằng một số phiên bản phụ thuộc mới không hoạt động với nhau. Các phụ thuộc cho redis phải như sau:

<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. Đây có phải là cách sử dụng hợp lệ của ServiceStack Redis không?

  2. Thực thi bất đồng bộ các lệnh redis

  3. làm thế nào để luôn cập nhật bộ nhớ đệm

  4. TTL cho một thành viên đã đặt

  5. Redis được sử dụng như thế nào trong Trello?