- pom.xml
<dependencyManagement>
<dependencies>
<!-- 导入SpringBoot需要使用的依赖信息 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- 引入整合Redis所需的场景启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 引入SpringBoot测试的场景启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
- 创建application.yml配置文件:在main/resources目录下创建application.yml,在这个配置文件中配置Redis连接信息
spring:
redis:
host: 192.168.19.88
port: 6379
- 创建主启动类
@SpringBootApplication
public class SpringBootMainClass {
public static void main(String[] args) {
SpringApplication.run(SpringBootMainClass.class, args);
}
}
- 创建测试类: 在test文件夹下创建一个SpringBootRedisTest测试类
1)带泛型的模板类:虽然使用泛型可以指定各种具体数据类型,但是用着不方便。Redis中最基本的数据类型就是字符串。
2)StringRedisTemplate在继承RedisTemplate时直接指定泛型为String类型,所有操作都按照字符串处理,使用非常方便
package com.atguigu.spring.boot.test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootRedisTest {
// 带泛型的模板类:虽然使用泛型可以指定各种具体数据类型,但是用着不方便。Redis中最基本的数据类型就是字符串。
@Autowired
private RedisTemplate<Object, Object> redisTemplate;
// StringRedisTemplate在继承RedisTemplate时直接指定泛型为String类型,所有操作都按照字符串处理,使用非常方便
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Test
public void RedisTemplateTest(){
// 1. 根据要操作得类型获取Operation对象
ValueOperations<Object, Object> operations = redisTemplate.opsForValue();
// 2. 执行操作
operations.set("cat","miaomiao");
}
@Test
public void StringRedisTemplateTest(){
// 1. 根据要操作得类型获取Operation对象
ValueOperations operations = redisTemplate.opsForValue();
// 2. 执行操作
operations.set("daxiang","fengfeng");
}
}

- 查看结果:一般用StringRedisTemplate较多,RedisTemplate的出来得结果为序列化后得值
> sudo bin/redis-cli -h 192.168.43.102 -p 6379

key相关操作

string类型操作
先获取“操作对象”,然后调用“操作对象”的相关方法即可
ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();
operations.set("hello", "hello-value");
list类型操作
先获取“操作对象”,然后调用“操作对象”的相关方法即可
ListOperations<String, String> operations = stringRedisTemplate.opsForList();
List<String> fruitList = operations.range("fruit", 0, -1);
for (String fruit : fruitList) {
System.out.println(fruit);
}
set类型操作
SetOperations<String, String> operations = stringRedisTemplate.opsForSet();
Set<String> animalSet = operations.members("animal");
for (String animal : animalSet) {
System.out.println("animal="+animal);
}
hash类型操作
HashOperations<String, Object, Object> operations = stringRedisTemplate.opsForHash();
Map<Object, Object> studentMap = operations.entries("student");
Set<Map.Entry<Object, Object>> entries = studentMap.entrySet();
for (Map.Entry<Object, Object> entry : entries) {
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println(key+"="+value);
}
zset类型操作
ZSetOperations<String, String> operations = stringRedisTemplate.opsForZSet();
Set<ZSetOperations.TypedTuple<String>> chengjiSet = operations.rangeWithScores("chengji", 0, -1);
for (ZSetOperations.TypedTuple<String> stringTypedTuple : chengjiSet) {
String value = stringTypedTuple.getValue();
Double score = stringTypedTuple.getScore();
System.out.println(value+"="+score);
}
基本原理
- SpringBoot的自动化配置包:spring-boot-autoconfigure-2.1.6.RELEASE.jar
- 自动化配置包中的重要配置文件:在META-INF目录下有一个spring.factories文件
- 重要配置文件中配置了大量自动化配置类:属性名是:org.springframework.boot.autoconfigure.EnableAutoConfiguration
- Redis的自动化配置类:org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
- 配置项的默认值:RedisProperties类中定义了Redis配置的默认值。
@Configuration
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
@Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })
public class RedisAutoConfiguration {
@Bean
@ConditionalOnMissingBean(name = "redisTemplate")
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean
@ConditionalOnMissingBean
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
版权声明:本文为qq_40180229原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。