您现在的位置是:首页 >技术交流 >springboot整合redis,MongoDB,Elasticsearch(ES)网站首页技术交流

springboot整合redis,MongoDB,Elasticsearch(ES)

竹院逢话 2024-06-17 10:14:22
简介springboot整合redis,MongoDB,Elasticsearch(ES)

目录

 springboot整合redis

连接Redis

字符串操作

哈希表操作

列表操作

集合操作

有序集合操作

lettcus与jedis的区别 

springboot整合MongoDB

新增数据

查询数据

更新数据

删除数据

 springboot整合Elasticsearch(ES)

创建ElasticsearchRepository

创建实体类

增删改查

搜索


 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);
}

 


我记得花香,便不负这时光

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。