摘要:与关系型数据库一样,spring Boot也提供了对NoSQL数据库的集成扩展,如对redis和MongoDB等数据库的操作。通过默认配置即可使用RedisTemplate和MongoTemplate等模板类操作非关系型数据库。
与关系型数据库一样,spring Boot也提供了对NoSQL数据库的集成扩展,如对redis和MongoDB等数据库的操作。通过默认配置即可使用RedisTemplate和MongoTemplate等模板类操作非关系型数据库。
Redis可以作为缓存、消息中间件或多类型的key-value数据库。
作为非关系型数据库,Redis支持多种类型的存储方式,包括String(字符串)、List(列表)、Hash(哈希)、Set(集合)和Sorted Set(有序集合)等。
Spring Boot为Redis提供了基本的自动配置,依赖于springboot-starter-data-redis包。该包提供了自动配置的RedisConnectionFactory、StringRedisTemplate和Redis-Template实例。如果不配置,则默认连接localhost:6379服务器。
StringRedisTemplate继承自RedisTemplate,默认采用String的序列化策略。如果使用RedisTemplate,则可以实现自己的序列化方式。
连接Redis可以使用Lettuce或Jedis客户端。Spring Boot默认使用Lettuce客户端。因为Lettuce的连接是基于Netty的,所以多线程是安全的。
RedisTemplate提供了以下5种数据结构的操作方法:
opsForValue:操作字符串类型;
opsForHash:操作哈希类型;
opsForList:操作列表类型;
opsForSet:操作集合类型;
opsForZSet:操作有序集合类型。
下面给出一个集成了Redis操作的简单示例。
(1)在application.yml配置文件中添加配置,代码如下:
spring:
redis:
host: localhost
port: 6379
password: redistest
timeout: 1000
lettuce:
pool:
max-active: 10 //①
max-wait: 1000 //②
max-idle: 2 //③
min-idle: 0 //④
注释①:连接池的最大连接数。
注释②:连接池的最大阻塞等待时间。
注释③:连接池中的最大空闲连接数。
注释④:连接池中的最小空闲连接数。
(2)在Controller类中注入StringRedisTemplate实例,代码如下:
@RestController
@RequestMapping("/hi")
public class HiController {
//自动注入StringRedisTemplate
@Autowired
private StringRedisTemplate stringRedisTemplate;
@GetMapping("/redis/add")
public String redisAdd(int id) {
//Redis set操作
stringRedisTemplate.opsForValue.set("redis_test_"+id,
"redis
test!");
return "1";
}
@GetMapping("/redis/query")
public String redisQuery(int id) {
//Redis get操作
String val =
stringRedisTemplate.opsForValue.get("redis_
test_"+id);
return val;
}
@GetMapping("/redis/delete")
public String redisDelete(int id) {
//Redis delete操作
stringRedisTemplate.delete("redis_test_"+id);
return "1";
}
}
访问接口http://localhost:8080/hi/redis/add?id=1,可以在Redis中添加一个String类型的数据;访问接口http://localhost:8080/hi/redis/query?id=1,可以查询一个String类型的数据;访问接口http://localhost:8080/hi/redis/delete?id=1,可以删除Redis数据。
mongodb是一个开源的NoSQL文档型数据库,使用类JSON结构代替传统的基于表结构的关系型数据库。spring-boot-starter-datamongodb模块提供了可以操作MongoDB的MongoTemplate模板类。
Spring Boot自动配置org.springframework.data.mongodb.MongoDatabaseFactory类,默认连接mongodb://localhost/test库。同样,也可以自定义一个MongoClient来代替MongoDatabaseFactory类。
下面给出一个集成MongoDB操作的简单示例。
(1)在application.yml配置文件中添加MongoDB配置,具体代码如下:
spring:
data:
mongodb:
host: localhost
port: 27017
database: user
username: root
password: test1111
authentication-database: admin
(2)注入MongoTemplate实例,代码如下:
@RestController
@RequestMapping("/hi")
public class HiController {
@Autowired
private MongoTemplate mongoTemplate; //自动注入
MongoTemplate
@GetMapping("/mongo/add")
public Document mongoAdd(String id) {
BasicDBObject db = new BasicDBObject;
db.put("_id", new ObjectId(id));
//插入操作
mongoTemplate.insert(db, "pages");
MongoCollection collection = mongoTemplate.
getCollection("user");
Document document = collection.find(db).first;
return document;
}
@GetMapping("/mongo/query")
public Document mongoQuery(String id) {
//查询操作
return document;
}
}
来源:大数据架构师