Redis-Cluster&ElasticSearch

1 redis

1.1 集群

什么是集群
集群就是 很多服务器组成的一个网络。指的是将多台服务器集中在一起,实现同一业务。
为什么要集群
一台服务器不能满足开发需要的时候,需要多台服务器来支持。这个时候就需要做集群,但是集群往往伴随着分布式

1.2 分布式

分布式是指将不同的业务分布在不同的地方. web应用和数据库服务分开

2 redis集群方案

  • 主从复制
    • 优点:
      • 处理高并发 完成 主从同步 读写分离 主备切换
    • 缺点:
      • 服务宕机之后,需要手动启动,会造成一些数据的丢失
  • 哨兵模式
    • 优点:
      • 处理高并发 完成 主从同步 读写分离 主备切换 自动切换
    • 缺点:
      • 服务里面存储的数据都是一样,占用内存比较大 … 扩容比较麻烦
  • redis-cluster(推荐)
    • 优点:
      • 处理高并发 完成 主从同步 读写分离 主备切换 自动切换, 分布式存储
    • 缺点:麻烦一点 扩容还是比较麻烦

3 集群面试题

  1. 简单说一下你对分布式理解?
  2. 简单说一下你对集群理解?
  3. 说一下分布式和集群联系和区别
  4. redis集群方式有哪些?
  5. 简单说一下redis-cluster里面槽?
    • 槽是存放数据,存放是要通过key计算槽位,选择对应的服务器来存储,获取也是同样的算法.
    • 默认16384个槽位要均匀分布到主节点上面
    • 为了槽里面数据安全要对主节点进行1-N从节点备份
  6. 简单说一下redis-cluster里面选举投票机制
    • 所有主节点都参与投票,默认半数以上挂点,启动容错机制,提升从节点为主节点.
  7. 怎么通过命令连接redis集群 redis-cli -c -h -p
  8. 怎么通过jedis连接集群
Set<HostAndPort> nodes = new HashSet();
nodes.add(new HostAndPort("127.0.0.1", 6379));
nodes.add(new HostAndPort("127.0.0.1", 6380));
nodes.add(new HostAndPort("127.0.0.1", 6381));
nodes.add(new HostAndPort("127.0.0.1", 6382));
nodes.add(new HostAndPort("127.0.0.1", 6383));
nodes.add(new HostAndPort("127.0.0.1", 6384));
JedisCluster cluster = new JedisCluster(nodes);

4 ES

4.1 之前学了一款叫Luence,为什么不直接使用luence?为什么要使用ES?

  1. Luence 的API操作特别繁琐,用起来不方便,所以我们要学习ElastisSearch,
  2. 而且ES它支持分布式集群
  3. 通过发送restfull 风格就可以完成的数据操作

4.2 ES特点

  1. 分布式的实时文件存储,每个字段都被索引并可被搜索
  2. 分布式的实时分析搜索引擎KB-MB-GB-TB-PB
  3. 可以扩展到上百台服务器,处理PB级结构化或非结构化数据
  4. 高度集成化的服务,你的应用可以通过简单的 RESTful API、各种语言的客户端甚至命令行与之交互。
  5. 上手Elasticsearch非常容易

4.3 其他的全文搜索框架

ES和Solr的比较–面试题

  1. ES 在实时搜索效率要高于solr
  2. solr它是重量级 用起来做很多配置,但是功能很强大
  3. 它们都是支持分布式

4.4 ES的操作

GET _search
{
  "query": {
    "match_all": {}
  }
}

## 新增 没有指定id 会自动产生
POST crm/employee
{
  "name":"zhangsan123",
  "height":"190cm"
}

## 修改
POST crm/employee/1
{
  "name":"zhangsan5687",
  "height":"190cm"
}


## 新增 必须指定id
PUT crm/employee/1
{
  "name":"zhangsan",
  "height":"180cm"
}
## 删除
DELETE crm/employee/AW0fdShXJaanHBjeslX6

## 查询 根据id
GET crm/employee/1
GET crm/employee/AW0fdShXJaanHBjeslX6
GET crm/employee/1?pretty

## 控制需要查询字段
GET crm/employee/1?_source=height,name
## 只返回需要的需要 只返回字段信息
GET crm/employee/1/_source

## 修改整个文档
POST crm/employee/1
{
  "age":18
}

## 修改局部文档
POST crm/employee/1/_update
{
  "doc":{
    "name":"zhangsan",
    "sex":true,
    "email":"xxxx@qq.com"
  }
}

## 脚本执行
POST crm/employee/1/_update
{
  "script": "ctx._source.age += 5"
}
DELETE crm/employee/1
GET itsource/blog/_search

## 批量操作
POST _bulk
{ "delete": { "_index": "itsource", "_type": "employee", "_id": "123" }}
{ "create": { "_index": "itsource", "_type": "blog", "_id": "123" }}
{ "title": "我发布的博客" }
{ "index": { "_index": "itsource", "_type": "blog" }}
{ "title": "我的第二博客" }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值