前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >扫描器架构分析之redis+分布式+mongodb

扫描器架构分析之redis+分布式+mongodb

作者头像
字节脉搏实验室
发布2020-04-16 15:52:29
6540
发布2020-04-16 15:52:29
举报
文章被收录于专栏:字节脉搏实验室

扫描器架构分析之redis+分布式+mongodb

名词解释-Redis

“什么是redis和分布式和mongodb,他们的功能是什么?”

Redis是什么

Redis的的是完全开源免费的,遵守BSD协议,是一个高性能的键值数据库。是当前最热门的的的NoSql数据库之一,也被人们称为数据结构服务器,,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

Redis有什么功能

Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

Redis支持数据的备份,即master-slave模式的数据备份。

本质就是非阻塞提交方式,支持多地提交,而传统数据库服务器会阻塞。

案例

批量导入URL和读取URL:

——————————————————————————————————

代码语言:javascript
复制
import java.util.List;
import redis.clients.jedis.Jedis;
public class RedisListJava {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");
        //存储数据到列表中
        jedis.lpush("url", "https://www.test.com");
        jedis.lpush("url", " https://www.test.com ");
        jedis.lpush("url", " https://www.test.com ");
        // 获取存储的数据并输出
        List<String> list = jedis.lrange("url", 0 ,2);
        for(int i=0; i<list.size(); i++) {
            System.out.println("列表项为: "+list.get(i));
        }
    }
}

名词解释-Mongodb

Mongodb是什么

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

Mongodb有什么功能

Config server 的 Primary 节点负责负载均衡

MongoDB 3.2及以前版本里,分片集群的负载均衡由 mongos 负责,多个 mongos 会抢一个分布式锁,抢锁成功的 mongos 会对执行负载均衡任务,在 shard 间迁移 chunk;在3.4版本里,负载均衡将由 Config server 的 Primary 节点负责,预计会在负载均衡并发度及效率上会有大的提升。

案例

读取mongodb数据:

———————————————————————————————————————

代码语言:javascript
复制
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
public class MongoDBJDBC{
   public static void main( String args[] ){
      try{  
         // 连接到 mongodb 服务
         MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
         // 连接到数据库
         MongoDatabase mongoDatabase = mongoClient.getDatabase("zijiemaibo"); 
         System.out.println("Connect to database successfully");
         MongoCollection<Document>collection=                         mongoDatabase.getCollection("yexingzijie");
         System.out.println("集合 test 选择成功");
         //检索所有文档 
         /**
         * 1. 获取迭代器FindIterable<Document>
         * 2. 获取游标MongoCursor<Document>
         * 3. 通过游标遍历检索出的文档集合
         * */ 
         FindIterable<Document> findIterable = collection.find(); 
         MongoCursor<Document> mongoCursor = findIterable.iterator(); 
         while(mongoCursor.hasNext()){ 
            System.out.println(mongoCursor.next()); 
         } 
      }catch(Exception e){
         System.err.println( e.getClass().getName() + ": " + e.getMessage() );
      }
   }
}

———————————————————————————————————————

遍历结果:

Connect to database successfully

集合 yexingzijie选择成功

Document{{_id=sqwegag15a6e65f92, title=MongoDB, description=database, likes=100, by=Fly}}

扫描器设计加入redis+mongodb大体是如下图所示:

具体分布式可以参考celery官方API文档的说明

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 字节脉搏实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 名词解释-Redis
    • Redis是什么
      • Redis有什么功能
        • 案例
          • 批量导入URL和读取URL:
      • 名词解释-Mongodb
        • Mongodb是什么
          • Mongodb有什么功能
            • Config server 的 Primary 节点负责负载均衡
              • 案例
                • 读取mongodb数据:
            • 扫描器设计加入redis+mongodb大体是如下图所示:
            相关产品与服务
            云数据库 Redis
            腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档