diff --git a/auto-configurations/models/chat/memory/spring-ai-autoconfigure-model-chat-memory-redis/pom.xml b/auto-configurations/models/chat/memory/spring-ai-autoconfigure-model-chat-memory-redis/pom.xml
new file mode 100644
index 00000000000..96947ae83bd
--- /dev/null
+++ b/auto-configurations/models/chat/memory/spring-ai-autoconfigure-model-chat-memory-redis/pom.xml
@@ -0,0 +1,79 @@
+
+
+ 4.0.0
+
+ org.springframework.ai
+ spring-ai-parent
+ 2.0.0-SNAPSHOT
+ ../../../../../pom.xml
+
+ spring-ai-autoconfigure-model-chat-memory-redis
+ jar
+ Spring AI Redis Chat Memory Auto Configuration
+ Spring AI Redis Chat Memory Auto Configuration
+
+
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+
+
+
+ org.springframework.ai
+ spring-ai-model-chat-memory-repository-redis
+ ${project.version}
+
+
+
+ redis.clients
+ jedis
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+ true
+
+
+
+ org.springframework.boot
+ spring-boot-data-redis
+ true
+
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ org.springframework.boot
+ spring-boot-testcontainers
+ test
+
+
+
+ org.testcontainers
+ testcontainers-junit-jupiter
+ test
+
+
+
+ com.redis
+ testcontainers-redis
+ 2.2.0
+ test
+
+
+
+
\ No newline at end of file
diff --git a/auto-configurations/models/chat/memory/spring-ai-autoconfigure-model-chat-memory-redis/src/main/java/org/springframework/ai/model/chat/memory/redis/autoconfigure/RedisChatMemoryAutoConfiguration.java b/auto-configurations/models/chat/memory/spring-ai-autoconfigure-model-chat-memory-redis/src/main/java/org/springframework/ai/model/chat/memory/redis/autoconfigure/RedisChatMemoryAutoConfiguration.java
new file mode 100644
index 00000000000..873fe83ef3f
--- /dev/null
+++ b/auto-configurations/models/chat/memory/spring-ai-autoconfigure-model-chat-memory-redis/src/main/java/org/springframework/ai/model/chat/memory/redis/autoconfigure/RedisChatMemoryAutoConfiguration.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2023-2025 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.ai.model.chat.memory.redis.autoconfigure;
+
+import org.springframework.ai.chat.memory.ChatMemory;
+import org.springframework.ai.chat.memory.ChatMemoryRepository;
+import org.springframework.ai.chat.memory.repository.redis.RedisChatMemoryRepository;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.data.redis.autoconfigure.DataRedisAutoConfiguration;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.util.StringUtils;
+
+import redis.clients.jedis.JedisPooled;
+
+/**
+ * Auto-configuration for Redis-based chat memory implementation.
+ *
+ * @author Brian Sam-Bodden
+ */
+@AutoConfiguration(after = DataRedisAutoConfiguration.class)
+@ConditionalOnClass({ RedisChatMemoryRepository.class, JedisPooled.class })
+@EnableConfigurationProperties(RedisChatMemoryProperties.class)
+public class RedisChatMemoryAutoConfiguration {
+
+ @Bean
+ @ConditionalOnMissingBean
+ public JedisPooled jedisClient(RedisChatMemoryProperties properties) {
+ return new JedisPooled(properties.getHost(), properties.getPort());
+ }
+
+ @Bean
+ @ConditionalOnMissingBean({ RedisChatMemoryRepository.class, ChatMemory.class, ChatMemoryRepository.class })
+ public RedisChatMemoryRepository redisChatMemory(JedisPooled jedisClient, RedisChatMemoryProperties properties) {
+ RedisChatMemoryRepository.Builder builder = RedisChatMemoryRepository.builder().jedisClient(jedisClient);
+
+ // Apply configuration if provided
+ if (StringUtils.hasText(properties.getIndexName())) {
+ builder.indexName(properties.getIndexName());
+ }
+
+ if (StringUtils.hasText(properties.getKeyPrefix())) {
+ builder.keyPrefix(properties.getKeyPrefix());
+ }
+
+ if (properties.getTimeToLive() != null && properties.getTimeToLive().toSeconds() > 0) {
+ builder.timeToLive(properties.getTimeToLive());
+ }
+
+ if (properties.getInitializeSchema() != null) {
+ builder.initializeSchema(properties.getInitializeSchema());
+ }
+
+ if (properties.getMaxConversationIds() != null) {
+ builder.maxConversationIds(properties.getMaxConversationIds());
+ }
+
+ if (properties.getMaxMessagesPerConversation() != null) {
+ builder.maxMessagesPerConversation(properties.getMaxMessagesPerConversation());
+ }
+
+ if (properties.getMetadataFields() != null && !properties.getMetadataFields().isEmpty()) {
+ builder.metadataFields(properties.getMetadataFields());
+ }
+
+ return builder.build();
+ }
+
+}
\ No newline at end of file
diff --git a/auto-configurations/models/chat/memory/spring-ai-autoconfigure-model-chat-memory-redis/src/main/java/org/springframework/ai/model/chat/memory/redis/autoconfigure/RedisChatMemoryProperties.java b/auto-configurations/models/chat/memory/spring-ai-autoconfigure-model-chat-memory-redis/src/main/java/org/springframework/ai/model/chat/memory/redis/autoconfigure/RedisChatMemoryProperties.java
new file mode 100644
index 00000000000..79af25c5167
--- /dev/null
+++ b/auto-configurations/models/chat/memory/spring-ai-autoconfigure-model-chat-memory-redis/src/main/java/org/springframework/ai/model/chat/memory/redis/autoconfigure/RedisChatMemoryProperties.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright 2023-2025 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.ai.model.chat.memory.redis.autoconfigure;
+
+import java.time.Duration;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.ai.chat.memory.repository.redis.RedisChatMemoryConfig;
+
+/**
+ * Configuration properties for Redis-based chat memory.
+ *
+ * @author Brian Sam-Bodden
+ */
+@ConfigurationProperties(prefix = "spring.ai.chat.memory.redis")
+public class RedisChatMemoryProperties {
+
+ /**
+ * Redis server host.
+ */
+ private String host = "localhost";
+
+ /**
+ * Redis server port.
+ */
+ private int port = 6379;
+
+ /**
+ * Name of the Redis search index.
+ */
+ private String indexName = RedisChatMemoryConfig.DEFAULT_INDEX_NAME;
+
+ /**
+ * Key prefix for Redis chat memory entries.
+ */
+ private String keyPrefix = RedisChatMemoryConfig.DEFAULT_KEY_PREFIX;
+
+ /**
+ * Time to live for chat memory entries. Default is no expiration.
+ */
+ private Duration timeToLive;
+
+ /**
+ * Whether to initialize the Redis schema. Default is true.
+ */
+ private Boolean initializeSchema = true;
+
+ /**
+ * Maximum number of conversation IDs to return (defaults to 1000).
+ */
+ private Integer maxConversationIds = RedisChatMemoryConfig.DEFAULT_MAX_RESULTS;
+
+ /**
+ * Maximum number of messages to return per conversation (defaults to 1000).
+ */
+ private Integer maxMessagesPerConversation = RedisChatMemoryConfig.DEFAULT_MAX_RESULTS;
+
+ /**
+ * Metadata field definitions for proper indexing. Compatible with RedisVL schema
+ * format. Example:
+ * spring.ai.chat.memory.redis.metadata-fields[0].name=priority
+ * spring.ai.chat.memory.redis.metadata-fields[0].type=tag
+ * spring.ai.chat.memory.redis.metadata-fields[1].name=score
+ * spring.ai.chat.memory.redis.metadata-fields[1].type=numeric
+ *
+ */
+ private List