您现在的位置是:首页 >技术交流 >springboot整合redis,MongoDB,Elasticsearch(ES)网站首页技术交流
springboot整合redis,MongoDB,Elasticsearch(ES)
目录
springboot整合redis
Spring Boot整合Redis,需要使用Redis的Java客户端库,通常使用Jedis或Lettuce。在使用Jedis或Lettuce时,需要在pom.xml文件中添加对应的依赖。
连接Redis
使用Jedis连接Redis:
Jedis jedis = new Jedis("localhost", 6379);
使用Lettuce连接Redis:
RedisClient redisClient = RedisClient.create("redis://localhost:6379"); StatefulRedisConnection<String, String> connection = redisClient.connect(); RedisCommands<String, String> syncCommands = connection.sync();
字符串操作
设置key-value:
jedis.set("key", "value");
获取value:
String value = jedis.get("key");
设置过期时间:
jedis.setex("key", 60, "value");
哈希表操作
设置哈希表:
Map<String, String> map = new HashMap<>(); map.put("field1", "value1"); map.put("field2", "value2"); jedis.hmset("hash", map);
获取指定哈希表中的field值:
String value = jedis.hget("hash", "field1");
获取哈希表中所有的field值:
Map<String, String> map = jedis.hgetAll("hash");
列表操作
在列表的左侧或右侧添加元素:
jedis.lpush("list", "value1", "value2"); jedis.rpush("list", "value3", "value4");
获取列表中的元素:
List<String> list = jedis.lrange("list", 0, -1);
集合操作
添加元素到集合:
jedis.sadd("set", "value1", "value2", "value3");
获取集合中的所有元素:
Set<String> set = jedis.smembers("set");
有序集合操作
添加元素到有序集合:
jedis.zadd("zset", 1, "value1"); jedis.zadd("zset", 2, "value2");
获取有序集合中指定分数范围内的元素:
Set<String> set = jedis.zrangeByScore("zset", 1, 2);
lettcus与jedis的区别
springboot整合MongoDB
Spring Boot 是一个非常流行的 Java 开发框架,而 MongoDB 是一种流行的 NoSQL 数据库。在 Spring Boot 中整合 MongoDB,可以使用 Spring Data MongoDB 来方便地进行开发。
新增数据
使用 MongoTemplate 的 insert 方法插入一条数据,或使用 save 方法插入或更新一条数据。
@Autowired
private MongoTemplate mongoTemplate;
public void addData(User user) {
mongoTemplate.insert(user);
}
public void saveData(User user) {
mongoTemplate.save(user);
}
查询数据
使用 MongoTemplate 的 find 方法查询数据,或使用 Query 和 Criteria 对象进行查询条件的设置。
public List<User> findAll() {
return mongoTemplate.findAll(User.class);
}
public User findById(String id) {
Query query = new Query(Criteria.where("id").is(id));
return mongoTemplate.findOne(query, User.class);
}
更新数据
使用 MongoTemplate 的 updateFirst 和 updateMulti 方法更新数据。
public void updateData(User user) {
Query query = new Query(Criteria.where("id").is(user.getId()));
Update update = new Update().set("name", user.getName()).set("age", user.getAge());
mongoTemplate.updateFirst(query, update, User.class);
}
删除数据
使用 MongoTemplate 的 remove 方法删除数据。
public void deleteById(String id) {
Query query = new Query(Criteria.where("id").is(id));
mongoTemplate.remove(query, User.class);
}
springboot整合Elasticsearch(ES)
Elasticsearch是一个分布式全文搜索引擎
创建ElasticsearchRepository
在SpringBoot中,可以通过ElasticsearchRepository来访问Elasticsearch,只需要继承该接口即可。
public interface UserRepository extends ElasticsearchRepository<User, Long> {
}
其中,User是实体类,Long是主键类型。
创建实体类
创建实体类,使用注解来映射Elasticsearch中的索引和字段。
@Document(indexName = "user", type = "_doc")
public class User {
@Id
private Long id;
@Field(type = FieldType.Keyword)
private String name;
@Field(type = FieldType.Integer)
private Integer age;
// getter and setter
}
增删改查
通过ElasticsearchRepository提供的方法,可以实现增删改查的操作。如下:
@Autowired
UserRepository userRepository;
// 新增
userRepository.save(user);
// 删除
userRepository.deleteById(id);
// 修改
userRepository.save(user);
// 查询
Optional<User> optional = userRepository.findById(id);
搜索
Elasticsearch提供了丰富的搜索API,可以通过QueryBuilder来构建查询条件,通过SearchRequest来执行搜索操作。如下:
@Autowired
RestHighLevelClient restHighLevelClient;
// 构建查询条件
QueryBuilder queryBuilder = QueryBuilders.matchQuery("name", "张三");
// 构建SearchRequest
SearchRequest searchRequest = new SearchRequest("user");
searchRequest.types("_doc");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(queryBuilder);
searchRequest.source(searchSourceBuilder);
// 执行搜索
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
// 处理搜索结果
SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits) {
String sourceAsString = hit.getSourceAsString();
User user = JSON.parseObject(sourceAsString, User.class);
System.out.println(user);
}
我记得花香,便不负这时光