自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无绪听雨眠

用十分热情追求一分进步。

  • 博客(28)
  • 收藏
  • 关注

原创 第2章 Windows操作系统及其应用

2.0 Windows考试内容与要求(1)Windows基本知识(2)Windows基本操作(3)Windows资源管理器(4)Windows系统环境设置(5)Windows附件常用工具2.1 Windows基本知识(1)Windows运行环境(2)Windows桌面的组成(3)Windows的文件、文件夹(目录)、逻辑盘、路径的概念(4)Windows窗口的组成(5)Windows的菜单(6)Windows的剪切板2.2 Windows基本知识(1)

2021-04-12 22:35:21 6420 2

原创 第1章 计算机基础知识

1.0 考试内容与要求(1)计算机的基本概念考试内容计算机的发展过程、分类、应用范围及特点;信息的基本概念。考试要求了解计算机的发展过程; 了解计算机的分类; 了解计算机的主要用途; 了解信息的基本概念。(2)计算机系统的组成考试内容计算机系统的借本组成及各部件的主要功能,数据存储的概念。考试要求理解计算机系统的基本组成; 了解硬件系统的基本组成; 理解计算机数据存储的基本概念; 了解指令、程序、软件的概念以及软件的分类。(3)信息编码考试内容数.

2021-03-16 10:47:14 7593

原创 Redis的消息队列解决方案

消息队列的消息存取需求是什么? Redis如何实现消息队列的需求?消息队列的消息存取需求在分布式系统中,当两个组件要基于消息队列通信时,一个组件会把要处理的数据以消息的形式传递给消息队列,然后这个组件就可以继续执行其他操作了;远端的另一个组件从消息队列中把消息读取出来,再在本地进行处理。假设组件1需要对采集到的数据进行求和计算,并写入数据库,但是,消息到达的速度很快,组件1没有办法及时地做采集,又做计算,并且写入数据库。所以,可以使用基于消息队列的通信,这样它就可以继续接受新的数据了。组件2则异

2021-03-16 10:43:48 303 1

原创 Redis保存时间序列

需要周期性的统计近万台设备的实时状态,包括设备ID、压力、温度、湿度以及对应的时间戳,这些与发生时间相关的数据,就成为时间序列数据。这些数据的特点是没有严格的关系模型,记录的信息可以表示成键和值的关系,所以并不需要关系型数据库来保存。Redis基于自身数据结构和扩展模块,提供了两种解决方案。在实际应用中,时间序列数据通常是持续高并发写入的,时间序列数据的写入通常是插入新数据,而不是更新已存在的数据。这种数据的写入特点很简单,就是插入数据快,这要求我们选择的数据类型,在进行数据插入时,时间复杂度要低,尽量

2021-03-12 17:25:24 869

原创 Redis的扩展数据类型

Redis的5大基本数据类型:String、List、Hash、Set和Sorted Set,它们可以满足大多数的数据存储需求,但是在面对海量数据统计时,它们的内存开销很大,而且对于一些特殊的场景,它们是无法支持的。所以Redis还提供了3种扩展数据类型,分别是Bitmap、HyperLogLog和GEO。GEO的实现原理和使用方法GEO是面向LBS(Location BasedServer)应用的GEO数据类型。在日常生活中,附近的餐馆、打车软件上叫车都离不开基于位置信息服务的应用。LBS应用访.

2021-03-05 17:11:10 515 3

原创 Redis数据类型的选择

在Web和移动应用的业务场景中,我们经常需要保存这样一种信息:一个key对应了一个数据集合。手机App中的每天的用户登录信息:一天对应一系列用户ID或移动设备ID; 电商网站上商品的用户评论列表:一个商品对应了一系列的评论; 用户在手机App上的签到打卡信息:一天对应一系列用户的签到记录; 应用网站上的网页访问信息:一个网页对应一系列的访问点击。Redis集合类型的特点就是一个键对应一系列的数据,所以非常适合用来存取这些数据。在这些场景中,除了记录信息,还需要对集合中的数据进行统计。在移动应

2021-03-04 15:26:40 567 1

原创 Redis中String类型的内存空间开销问题

案例:现需要开发一个图片存储系统,要求这个系统能快速记录图片ID和图片在存储系统中保存的ID,同时,还要能够更具图片ID快速查找到图片存储对象ID。因图片数量巨大,所以选用10位数来表示图片ID和土拍你存储对象ID。例如:photo_id: 1101000051photo_obj_id: 3301000051图片ID和图片存储对象ID正好一一对应,是典型的“键 - 单值”模式。所谓单值,就是指键值对中的值就是一个值,而不是一个集合,这和String类型提供的“一个键对应一个值的数据”的保存形式刚

2021-03-03 16:36:10 1003

原创 Redis的切片集群

要用Redis保存5000万个键值对,每个键值对大约512B,这些键值对所占的内存空间大约是25GB(5000万 * 512B)。需要选择一台32GB内存的云主机来部署Redis,因为32GB的内存可以保存所有数据,而且还留有7GB来保证系统运行。同时还需要采用RDB对数据做持久化,但是在使用过程中,Redis的响应有时会非常慢。使用INFO命令查看Redis的latest_fork_usec指标值(最近一次fork的耗时),结果显示这个指标值特别高,快到秒级别了。在使用RDB进行持久化时,Redi

2021-02-24 09:15:47 365

原创 Redis的哨兵集群

Redis的哨兵机制可以实现主从库的自动切换,通过部署多个哨兵实例,就形成了一个哨兵集群。哨兵集群中的多个实例共同判断,可以降低对主库下线的误判。一旦实例组成了哨兵集群,即使有哨兵实例出现故障挂掉了,其他哨兵还能继续完成主从库切换工作。在配置哨兵信息时,只需以下配置,设置主库IP和端口,并没有配置其他哨兵的连接信息。sentinel monitor <master-name> <ip> <redis-port> <quorum>这些哨...

2021-02-23 09:27:14 612

原创 Redis的哨兵机制

在主从集群模式下,如果从库发生故障,客户端可以继续向主库或其他从库发送请求,进行相关操作,但是如果主库发生故障,就会直接影响从库同步,如果客户端发送的是读操作,还可以由其他从库继续服务,但是一旦有写操作,就没有实例来服务客户端的写请求操作了。如果主库挂了,就需要运行一个新主库,比如把一个从库切换为主库。这就涉及到三个问题:主库真的挂了吗? 该选择哪个从库作为主库? 怎么把新主库的相关信息通知给从库和客户端?在Redis主从集群中,哨兵机制是实现主从库自动切换的关键机制。哨兵就是一个运行在特殊模

2021-02-20 11:57:03 167 1

原创 Redis主从库数据同步

Redis具有高可靠性,主要体现在两方面,一是数据尽量少丢失,而是服务尽量少中断。AOF和RDB保证了第一点,而第二点的实现,Redis采用增加副本冗余量的方式。Redis提供主从库模式来保证数据副本一致,主从库采用读写分离。读操作可以通过主库或从库,而写操作首先到主库执行,再由主库将写操作同步给从库。为什么要采用读写分离的方式呢?如果客户端对同一个数据进行多次修改,每次写操作都发送到不同的实例上,会导致实例副本数据不一致。这种情况下如果要做到数据一致,就会涉及到加锁、实例之间协商是否完成修改等

2021-02-19 22:22:19 419

原创 Redis数据持久化之RDB

Redis提供两种数据持久化方式,一种是AOF,一种是RDB。AOF是记录操作命令,不是实际数据,所以在进行故障恢复的时候,需要把操作日志执行一遍,如果日志非常多,Redis数据恢复就会变慢,影响正常使用。而RDB记录的是某一时刻的数据,并不是操作,内存快照既可以保证数据的可靠性,也能在Redis宕机时实现快速恢复数据。使用RDB需要考虑以下几个问题:对哪些数据进行快照?(执行效率) 做快照时,Redis还能提供正常服务吗?(是否阻塞主线程) 多久做一次快照?(性能开销)Redis的数据都存储

2021-02-18 10:53:01 242

原创 Redis数据持久化之AOF

把Redis当作缓存使用是Redis比较普遍的应用场景,因为Redis将数据存储在内存中,操作数据时响应速度非常快。但是如果Redis服务器一旦宕机,内存中的数据将全部丢失。如果我们通过从后端数据库恢复数据,则需要频繁访问数据库,给数据库带来巨大压力,并且直接从后端数据库读取数据,性能远远比不上Redis,从而导致使用这些数据的应用程序响应变慢。因此,Redis的数据持久化是非常重要的,目前Redis实现持久化的方式有两种,即AOF和RDB。传统数据库通常情况下使用写前日志,也就是在数据写入数据

2021-02-09 15:05:59 114

原创 Redis的高性能IO模型

Redis是单线程,主要是指Redis网络IO和键值对读写是由一个线程来完成的,这也是Redis对外提供键值对存储服务的主要流程。但Redis的其他功能,比如持久化、异步删除、集群数据同步等都是由额外的线程执行的。Redis为什么用单线程?多线程虽然可以增加系统吞吐率,但是多线程编程模式面临的共享资源的并发控制问题,系统吞吐率并没有随着线程的增加而增加; 多线程开发引入同步原语来保护共享资源的并发访问,会降低系统代码的易调试性和可维护性。单线程Redis为什么那么快?Redis的大部分操作在

2021-02-08 15:23:49 213

原创 Redis的数据结构与数据操作

Redis完成数据操作的速度能达到微妙级别,Redis能有这么突出的表现,主要原因有两个:Redis是内存数据库,所有操作都在内存上完成,内存的访问速度本身就很快; Redis拥有高效的数据类型和数据结构。为了实现key到value的快速访问,Redis使用哈希表来存储键值对,哈希桶中entry保存了指向实际key和value的指针,即使值是一个集合,也可以通过value指针查找到。当哈希表中数据越来越多后,会出现哈希冲突,也就是两个key的哈希值对应到同一个哈希桶中。Redis使用链式哈希来解

2021-02-07 15:27:31 2234 4

原创 键值数据库的基本架构

Redis是典型的键值数据库。设计一个键值数据库,需要考虑里面存什么样的数据,对数据可以做什么样的操作,也就是数据模型和操作接口,还得考虑键值对保存在内存还是外存,采用什么访问模式。键值数据库的数据模型是key-value模型,需要重点考虑的是value支持的类型。Redis得以广泛应用,因为Redis支持String、哈希表、列表、集合等多样化类型的value。数据库的操作接口无非就是CRUD:PUT / SET:增加或更新key-value; GET:使用key查询对应的value; S

2021-02-07 10:21:42 1792 2

原创 Redis概述

Redis是一个非常优秀的中间件系统,它在CPU使用、内存组织,存储持久化和网络通信这四大方面设计得非常经典。Redis是一种键值数据库,应用非常广泛。学习Redis,我们首先需要了解Redis的“两大维度,三大主线”。应用维度 缓存应用 集群应用 数据结构应用 系统维度 处理层 线程模型 主从复制 数据分片 内存层 数据结构 哨兵机制 存储层 AOF RDB 负载均衡 网络层 epoll网络框架 .

2021-02-06 22:58:13 150

原创 全文搜索

全文搜索# 示例POST /my_index/my_type/_bulk{ "index": { "_id": 1 }}{ "title": "The quick brown fox" }{ "index": { "_id": 2 }}{ "title": "The quick brown fox jumps over the lazy dog" }{ "index": { "_id": 3 }}{ "title": "The quick brown fox jumps over th

2021-02-06 09:31:13 105

原创 结构化搜索

结构化搜索# 示例数据POST /my_store/products/_bulk{ "index": { "_id": 1 }}{ "price" : 10, "productID" : "XHDK-A-1293-#fJ3" }{ "index": { "_id": 2 }}{ "price" : 20, "productID" : "KDKE-B-9947-#kL5" }{ "index": { "_id": 3 }}{ "price" : 30, "productID" : "J

2021-02-05 17:21:41 118

原创 索引管理

索引管理# 创建索引# elasticsearch.yml # action.auto_create_index: false 禁止自动创建索引PUT /my_index{ "settings": {}, "mappings": { "type_one":{ "properties":{ "name":{ "type":"text", "analyzer":"standard" } ...

2021-02-05 17:19:24 123

原创 执行分布式搜索

执行分布式搜索# 查询阶段GET /_search{ "from":0, "size":300, "timeout": "1ms"}# 取回阶段# 深分页查询数据会使用大量CPU、内存、宽带# 确实需要查询大量数据建议使用scroll查询# 搜索选项# 游标查询ScrollGET /_search?scroll=1m{ "query": { "match_all": {} }, "sort": [ { "_doc":...

2021-02-05 17:11:04 102

原创 排序

排序# filter不评分,_score为0GET /_search{ "query": { "bool": { "filter": { "term":{ "title": "贵阳" } } } }, "_source":["title"]}# _score默认全部为1# 加boost后,_score为指定分数GET /_search{ "query": { "co...

2021-02-05 17:08:48 94

原创 请求体查询

请求体查询# 空查询GET /_search{}GET /index_2020*/type1,type2/_search{}# 分页查询GET /_search{ "from":5, "size":5}# 由于GET带请求体不被广泛认同,因此ES支持POSTPOST /_search{ "from":5, "size":5}# 查询表达式# 空查询,匹配所有文档GET /_search{ "query": { "matc...

2021-02-05 17:07:32 273

原创 映射和分析

映射和分析GET /_search?q=2014-09-15GET /_search?q=date:2014-09-15# 查看映射文档结构# 数据类型:text、date、long、boolean、float、double、short、byte、integerGET /gb/_mapping/tweet# 分析器:字符过滤器、分词器、Token过滤器# 内置分析器:标准分析器、简单分析器、空格分析器、语言分析器# 标准分析器:单词边界划分文本,删除绝大多数标点,将词条小写#

2021-02-05 17:05:06 151

原创 搜索-最基本的工具

搜索-最基本的工具# 检索ES中所有的文档(空搜索)# 查询出前10个文档GET /_search# 指定超时时间,从每个分片读取超时的时间GET /_search?timeout=1ms# 多类型、多搜索# 在所有索引中搜索所有类型GET /_search# 在gb索引中搜索所有类型GET /gb/_search# 在gb,us两个索引中搜索所有类型GET /gb,us/_search# 在以g开头和u开头的索引中搜索所有类型GET /g*,

2021-02-05 17:03:05 121

原创 数据输入和输出

##################################### 数据输入输出 ####################################### 文档元数据# 三个必须:_index、_type、_id# 以上三元素可以唯一确定一个文档# _index名必须小写,不能以下划线开头,不能包含逗号# _type名不能以下划线或句号开头,不能包含逗号,长度限制为256个字符# _id可以自己指定,也可以由Elasticsearch自动...

2021-02-05 16:11:24 238

原创 集群内的原理

##################################### 集群内的原理 ####################################### 集群健康# status包含green(主副分片正常)、yellow(副分片异常)、red(主分片异常)GET _clusterhealth# 创建索引PUT blogs{ settings { number_of_shards 3, number_of_r...

2021-02-05 16:06:39 91

原创 You know, for search

################################### You know, for search #################################### 测试ES是否启动成功GET ?pretty# 计算集群中文档的数量GET /_count?pretty{ "query": { "match_all": {} }}# 创建索引 # 有则追加数据,无索引则默认创建# 索引名/类型名称/idPUT /meg...

2021-02-05 16:03:11 1433

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除