readis和es

readis集群

面试题 :集群和分布式区别?(理解)
(1)相同点
解决高并发 和 大数据的问题
(2)不同点
集群 是 多个服务去实现同一个功能
分布式 不同的服务器实现不同的功能

1 什么是集群(理解)
多个服务器集中再一起 ,去处理同一个业务
集群和分布式概念(理解)

2 为什么需要集群 ,集群有什么好处?(理解)
解决 高并发 大数据的问题

3 集群的特点(理解)
(1) 扩展性 --可以动态的去扩展的服务器
(2) 高可用 --> 具备容错的功能 (错误恢复)
(3) 负载均衡 -->把请求 分配到不同的服务器里面
4 面试题 :集群和分布式区别?(理解)
(1)相同点
解决高并发 和 大数据的问题
(2)不同点
集群 是 多个服务去实现同一个功能
分布式 不同的服务器实现不同的功能
5 如果要做集群 应该怎么做?
方案一 主从复制

好不好?
优点: 完成主从复制 ,
缺点:不能完成容错或者恢复的功能(keepalive) 获取 手动重启
扩展服务器比较麻烦
方案二: 哨兵模式
Redis 2.8中提供了哨兵工具来实现自动化的系统监控和故障恢复功能

好处:完成自动的主从切换
缺点:Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂
方案三: Redis-Cluster (搭建)
好处:可以完成分布式存储问题,解决容量问题
Redis-Cluster 采用无中心结构

6 redis集群搭建步骤(了解)
(1) 拷贝6份 redis文件
修改 端口 为 6379 , 6380,6381,6382,6383,6384
修改配置
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes
(2) 编写一个启动脚本
在对应的文件夹里面新创建文件 startup.bat
title redis-6379
redis-server.exe redis.windows.conf
(3) 安装ruby环境
傻瓜式安装
(4) 安装ruby驱动环境
\rubygems-2.7.7 目录里面执行文件 ruby setup.rb
(5)通过驱动安装redis
切换到6379文件夹里面 安装 redis
gem install redis
(6)启动服务 创建集群
启动6379-6384服务
创建集群
redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

es集群

1es的认识(理解)
1.1 什么是es
es 全称elasticsearch
es : 做全文检索的 ,底层基于lucene的开发
lucene 相等于jdbc
es 相当于 mybatis/jpa
1.2 es和lucene的比较
为什么需要使用es.为什么不用lucene?
(1)api操作很麻烦 不方便
搜索 : 创建索引 搜索索引 一堆api
es: get /product/1 – {}
(2)lucene不支持集群
es集群 处理很大的数据量
KB – > MB -->GB – >TB – >PB
1024KB – 1MB
1024MB – 1GB
1024GB – 1TB
1024TB – 1PB
1.3 ES和solr的区别
es 和 solr 都可以做全文检索,solr的重量级的框架,它除了全文检索以外,还可以做其他的事情(比如
命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)),solr可以nosql结合起来使用
solr 在传统的搜索效率要比es好,但是实时搜索领域比es低
2 使用ES(掌握)
(1)安装ES服务端
解压–>bin/elasticsearch.bat–>浏览器访问 http://localhost:9200/
9200web里面展示的效果 9300java程序可以访问的端口
(2)es的客户端的交互方式
a) 基于restful风格API的去操作
get post put delete patch
(1)curl的命令方式 --不用
(2)kibana也可以操作
(3)head工具
安装的时候,如果出现错误:

(4)postman(测试后台的java代码)
b) 通过java代码去操作
java通过9300操作es服务器
(3)restful风格 +JSON方式 操作数据
http特点 就是无状态的
get /shopping/1
put /shopping/2 {“name”:“xx产品”}
post /shopping/2 {“name”:“xx产品”}
delete /shopping/1
3 使用客户端
(1)kibanna客户端
index : 索引库
type: 看成一个表
json:看成一行数据

4 ES(服务) 集群的状态
red: 红色 不健康的状态 服务的有问题
green:绿色 所有的正常 主从都分配好,集群可以使用
yellow:黄色 主从分配 至少有一个从缺失
2主 1从
5 文档的crud
5.1 基本的crud(掌握)

完成crud

新增
PUT crm/employee/1
{
“name”:“xiaorong”,
“age”:18
}

修改 --整个文档
POST crm/employee/1
{
“name”:“xiaohuahua”
}
修改局部文档
POST crm/employee/1/_update
{
“doc”:{“name”:“xiaohuahua”}
}


查询
GET crm/employee/1

删除

DELETE crm/employee/1
5.2 特殊的用法(掌握)
展示没有什么效果(了解)
GET crm/employee/AW-tOSHILqo6XVH8f6cg?pretty

展示部分的字段

GET crm/employee/AW-tOSHILqo6XVH8f6cg?_source=age,name

返回元数据
GET crm/employee/AW-tOSHILqo6XVH8f6cg/_source

修改数据 (脚本修改 --了解)
POST crm/employee/AW-tOSHILqo6XVH8f6cg/_update
{
“script” : “ctx._source.age += 5”
}

批量新增 --了解
POST _bulk
{ “delete”: { “_index”: “itsource”, “_type”: “employee”, “_id”: “123” }}
{ “create”: { “_index”: “itsource”, “_type”: “blog”, “_id”: “123” }}
{ “title”: “我发布的博客111” }
{ “index”: { “_index”: “itsource”, “_type”: “blog” }}
{ “title”: “我的第二博客2222” }


GET itsource/blog/_search
5.3 文档的查询
1 通过id查询
GET crm/employee/AW-tOSHILqo6XVH8f6cg/_source
2 批量查询
不同库 不同表数据 (了解)
GET _mget
{
“docs” : [
{
“_index” : “itsource”,
“_type” : “blog”,
“_id” : “123”
},
{
“_index” : “crm”,
“_type” : “employee”,
“_id” : “AW-tOSHILqo6XVH8f6cg”,
“_source”: [“name”,“age”]
}
]
}

同一个库 同一个表数据
GET itsource/blog/_mget
{
“ids”:[“123”,“AW-tQP_4Lqo6XVH8f6ci”]
}
3 其他的查询(掌握)

分页查询
GET crm/employee/_search?size=3&from=6

带条件查询
GET crm/employee/_search?q=age:38
GET crm/employee/_search?q=age[18 TO 48]

发布了3 篇原创文章 · 获赞 0 · 访问量 12

猜你喜欢

转载自blog.csdn.net/weixin_44895283/article/details/104008955