1.安装redis单机
2.引入pom依赖
java
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
3.application.yml文件
server:
port: 9999
spring:
redis:
host: 192.168.18.132
port: 6379
password:
database: 0
timeout: 2000ms
4.redisconfig配置
java
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
// 设置 key 和 value 的序列化方式
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return template;
}
}
5.RedisTemplate使用(5种基本类型,3种特殊类型,管道类型)
java
@SpringBootTest
public class RedisTestService {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void test01(){
//字符串操作
redisTemplate.opsForValue().set("name1","tony");
redisTemplate.opsForValue().set("name2","lucy",10, TimeUnit.MINUTES);
String value = redisTemplate.opsForValue().get("name1");
System.out.println(value);
//集合操作 list是一个双端队列
redisTemplate.opsForList().leftPush("messages", "msg3");
redisTemplate.opsForList().rightPush("messages", "msg-1");
redisTemplate.opsForList().leftPop("messages");
redisTemplate.opsForList().rightPop("messages");
List<Object> range = redisTemplate.opsForList().range("messages", 0, -1);
//集合操作 栈 lpush+lpop=Stack(栈)
redisTemplate.opsForList().leftPush("messages", "msg1");
redisTemplate.opsForList().leftPush("messages", "msg2");
redisTemplate.opsForList().leftPush("messages", "msg3");
redisTemplate.opsForList().leftPush("messages", "msg4");
redisTemplate.opsForList().leftPush("messages", "msg5");
redisTemplate.opsForList().leftPop("messages");
//集合操作 队列 lpush+rpop=Queue(队列)
redisTemplate.opsForList().leftPush("messages", "msg1");
redisTemplate.opsForList().rightpop("messages");
//集合操作 lpush+ltrim=Capped Collection(有限集合)
redisTemplate.opsForList().leftPush("limit-message", "msg1");
redisTemplate.opsForList().leftPush("limit-message", "msg2");
redisTemplate.opsForList().leftPush("limit-message", "msg3");
redisTemplate.opsForList().leftPush("limit-message", "msg4");
redisTemplate.opsForList().leftPush("limit-message", "msg5");
redisTemplate.opsForList().leftPush("limit-message", "msg6");
redisTemplate.opsForList().leftPush("limit-message", "msg7");
redisTemplate.opsForList().leftPush("limit-message", "msg8");
redisTemplate.opsForList().trim("limit-message",0,3);
//hash操作 优势 比整体序列化更节省空间
redisTemplate.opsForHash().put("user:1001", "name", "Alice");
redisTemplate.opsForHash().put("user:1001", "age", "18");
redisTemplate.opsForHash().put("user:1001", "name", "Alice2");
//set操作
redisTemplate.opsForSet().add("message-set", "message-set-01");
redisTemplate.opsForSet().add("message-set", "message-set-02");
redisTemplate.opsForSet().add("message-set", "message-set-03");
redisTemplate.opsForSet().add("message-set", "message-set-04");
redisTemplate.opsForSet().isMember("message-set", "message-set");
redisTemplate.opsForSet().size("message-set");
redisTemplate.opsForSet().members("message-set");
redisTemplate.opsForSet().randomMember("message-set");
redisTemplate.opsForSet().randomMembers("message-set", 6);
redisTemplate.opsForSet().pop("message-set");
redisTemplate.opsForSet().remove("message-set", "message-set");
//zset操作
//管道操作
}
}