前言
简介
SpringBoot2 中,使用 Redis,官方提供了两个 starter:
- spring-boot-starter-data-redis
- spring-boot-starter-data-redis-reactive
其实 spring-boot-starter-data-redis-reactive
中也仅依赖了 spring-boot-starter-data-redis
第一个例子
由于 SpringBoot 的特点,所以上手是最容易的。
依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
Controller
package com.example.testredis;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
private static final Logger logger = LoggerFactory.getLogger(TestController.class);
@Autowired
RedisTemplate redisTemplate;
@Autowired
StringRedisTemplate stringRedisTemplate;
@RequestMapping("/set")
public void set(String key, String value) {
stringRedisTemplate.opsForValue().set(key, value);
}
@RequestMapping("/get")
public String show(String key) {
return stringRedisTemplate.opsForValue().get(key);
}
@RequestMapping("/set2")
public void set2(String key, String value) {
// 可选,自定义序列化方法
stringRedisTemplate.execute(new RedisCallback<Boolean>() {
@Override
public Boolean doInRedis(RedisConnection redisConnection) throws DataAccessException {
RedisSerializer<String> redisSerializer = redisTemplate.getStringSerializer();
byte[] serializeKey = redisSerializer.serialize(key);
byte[] serializeValue = redisSerializer.serialize(value);
return redisConnection.setNX(serializeKey, serializeValue);
}
});
}
}
执行
$ curl -s "localhost:8080/get?key=host"
note.abeffect.com
$ curl -s "localhost:8080/set?key=key&value=abeffect"
$ curl -s "localhost:8080/get?key=key"
abeffect
$ curl -s "localhost:8080/set2?key=key&value=abeffect"
$ curl -s "localhost:8080/get?key=key"
abeffect
参考
- Spring Boot 使用 Spring Data Redis 操作 Redis(单机/集群)
- 一起来学 SpringBoot | 第九篇:整合 Lettuce Redis: 有属性配置,序列化实体类,自定义 Template,多线程测试
- Spring Boot 2.0 新特性和发展方向: 2.0 的新东西,包括但不限于 mongodb-reactive, cassandra-reactive, spring-boot-starter-json, JdbcTemplate, JSON-B 等
- SpringBoot 整合 Redis 及 Redis 工具类撰写: RedisTemplate 的自动配置原理, 写自己的 RedisTemmplate, 写一个 Redis 工具类
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于