自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (4)
  • 收藏
  • 关注

原创 企业级Redis开发运维从入门到实践 (17)— AOF

RDB存在的问题耗时、耗性能Redis将数据dump到硬盘当中,形成一个RDB文件。首先是计较耗时的,它会将所有数据进行一个dump,是一个耗时为 O(n) 的过程,它的写会消耗很多CPU。其次是内存的消耗,bgsave要做一个 fork() 的过程,fork() 会生成一个Redis的子进程,虽然不会进行一个完整的内存拷贝,而是类似于copy-on-write 的策略,假如写的量非常...

2018-09-30 17:18:51 350

原创 企业级Redis开发运维从入门到实践 (16)— RDB

什么是RDBRedis通过一条命令将内存中的数据完整的保存一个创建的二进制的RDB文件(快照)。当需要对Redis进行恢复,将加载RDB文件,恢复某时某刻的数据。RDB文件还是一个复制媒介,可以使用RDB实现主从复制。触发机制 — 主要三种方式save(同步)客户端发送save命令;redis将创建一个RDB文件。redis> saveOK由于save是一个...

2018-09-26 20:27:33 270

原创 企业级Redis开发运维从入门到实践 (15)— 持久化的作用

持久化的作用什么是持久化Redis所有数据保存在内存中,对数据的更新将异步地保存到磁盘上。防止在服务器或服务宕机而引起的数据丢失。持久化的实现方式快照:某时某点数据的一个备份。写日志:数据库做了任何数据的更新,就记录在日志当中。...

2018-09-26 18:27:53 169

原创 企业级Redis开发运维从入门到实践 (14)— GEO

GEO是什么GEO(地理信息定位):存储经纬度,计算两地距离,范围计算等。应用场景类似微信中摇一摇,找出范围内的用户。类似美团中酒店查询,找出范围内的酒店。5个城市经纬度城市纬度经度简称北京116.2839.55beijing天津117.1239.08tianjin石家庄114.2938.02shijiazhuang唐山...

2018-09-26 18:18:54 200

原创 企业级Redis开发运维从入门到实践 (13)— HyperLogLog

HyperLogLog是做什么的基于HyperLogLog算法:极小空间完成独立数量统计,1亿条数据的存储只需要不到1K内存就能做到;redis中实现的HyperLogLog,只需要12K内存,在标准误差0.81%的前提下,能够统计2^{64}个数据。本质还是字符串。...

2018-09-26 16:39:28 267

原创 企业级Redis开发运维从入门到实践 (12)— Bitmap(位图)

位图结构以位图的形式写入,取出数据进行查看redis> set hello bigOKredis> getbit hello 0(integer) 0reids> getbit hello 1(integer) 1所以得出下图的结构,其实Redis是可以直接操作位的,这就是Redis的位图功能。位图相关命令setbitsetbit key offset...

2018-09-26 11:46:32 182

原创 企业级Redis开发运维从入门到实践 (12)— 发布订阅

发布订阅角色发布者(publisher)订阅者(subscriber)频道(channel)通讯模型对于发布者(publisher)来说其实是一个客户端,对于订阅者(subscriber)来说也是一个客户端,在Redis server里面是有一个频道;发布者发布一条hello的消息,订阅者订阅了频道,每个订阅了该频道的订阅者都能收到这条消息。其实类似于下面这种生产\消费模型,生...

2018-09-25 20:24:46 222

原创 企业级Redis开发运维从入门到实践 (11)— pipeline(流水线)

1次网络命令通讯模型批量网络命令通讯模型什么是流水线将单条命令进行打包,将多条命令进行打包,一次pipeline将以一次网络执行,执行n次命令执行以减少多次网络开销。流水线的作用命令N个命令操作一次pipeline(n个命令)时间n次网络 + n次命令1次网络 + n次命令数据量1条命令n条命令两点注意Redis的命令时间是微秒级别,网...

2018-09-25 19:36:51 484

原创 企业级Redis开发运维从入门到实践 (10)— 慢查询

客户端请求Redis的生命周期慢查询发生在第3阶段。客户端超时不一定是慢查询,但是慢查询是客户端超时的一个可能的原因。慢查询的两个配置slowlog-max-len它决定 slow log 最多能保存多少条日志, slow log 本身是一个 FIFO 队列,当队列大小超过 slowlog-max-len 时,最旧的一条日志将被删除,而最新的一条日志加入到 slow log。先...

2018-09-25 17:41:14 236

原创 企业级Redis开发运维从入门到实践 (9)— Java客户端Jedis

Jedis是什么Jedis就是一个基于Java的redis-cli,遵循Redis提供的协议请求Redis实现对其操作。Maven依赖Jedis的Maven依赖:<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <v...

2018-09-25 16:51:53 258

原创 企业级Redis开发运维从入门到实践 (8)— zset数据结构的内部编码及相关命令详解

有序集合的内部编码有序集合类型的内部编码有两种ziplist(压缩列表):当有序集合的元素个数小于zset-max-ziplist-entries配置(默认128个),同时每个元素的值小于zset-max-ziplist-value配置(默认64个字节)时,Redis会用ziplist来作为有序集合的内部实现,ziplist可以有效减少内存使用。skiplist(跳跃表):当ziplist...

2018-09-25 11:32:16 320

原创 JVM的内存区域划分详解

Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。 Java程序执行流程Java源代码文件(.java)会被Java编译器(Java Compiler)编译成Java字节码文件(.class)。然后由JVM(Java虚拟机)中的类加载器(Class Loader)加载各个类的Java字节码文件(.class);加载完后,交由JV...

2018-09-17 20:16:24 229

原创 企业级Redis开发运维从入门到实践 (7)— set数据结构的内部编码及相关命令详解

集合的内部编码集合类型的内部编码有两种:intset(整数集合):当集合中的元素都是整数且元素个数小于set-max-intset-entries配置(默认512个)时,Redis会选用intset来作为集合内部实现,从而减少内存的使用。hashtable(哈希表):当集合类型无法满足intset的条件时,Redis会使用hashtable作为集合的内部实现。下面用示例来说明:...

2018-09-17 16:14:41 239

原创 企业级Redis开发运维从入门到实践 (6)— list数据结构的内部编码及相关命令详解

列表的内部编码列表类型的内部编码有两种:ziplist(压缩列表):当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个)   同时所有值都小于hash-max-ziplist-value配置(默认64个字节)时,Redis会使用ziplist作为哈希的内部实现。linkedlist(链表):当列表类型无法满足ziplist的条件时,Redis会使...

2018-09-17 14:56:29 258

原创 企业级Redis开发运维从入门到实践 (5)— hash数据结构的内部编码及相关命令详解

哈希的内部编码哈希类型的内部编码有两种:ziplist(压缩列表):当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个),   同时所有值都小于hash-max-ziplist-value配置(默认64个字节)时,Redis会使用ziplist作为哈希的内部实现   ziplist使用更加紧凑的结构实现多个元素的连续存储,所以在节省内存方面比ha...

2018-09-17 11:16:44 228

原创 企业级Redis开发运维从入门到实践 (4)— String数据结构的内部编码及相关命令详解

字符串的内部编码字符串类型的内部编码有3种:int:8个字节的长整型embstr:小于等于39个字节的字符串raw:大于39个字节的字符串Redis会根据当前值的类型和长度决定使用内部编码实现。整数类型示例如下:127.0.0.1:6379> set str 1234567 OK127.0.0.1:6379> object

2018-09-14 15:55:19 259

原创 企业级Redis开发运维从入门到实践 (3)—Redis API的使用和理解

Redis API的使用和理解通用命令这里只简单介绍六个常用针对key(键值)的通用命令keys:KEYS [pattern] 查找所有符合给定模式 pattern 的 key ,keys命令一般不再生产环境使用,数据量大时处理速度慢,会照成阻塞。可以做热备从节点,scan。//KEYS * 匹配数据库中所有 key 。127.0.0.1:6379> set hel...

2018-09-14 14:23:09 374

原创 企业级Redis开发运维从入门到实践 (2)—Redis 安装

Redis安装(Linux)1、下载并解压cd /home/john/rediswget http://download.redis.io/releases/redis-3.2.11.tar.gztar -zxvf redis-3.2.11.tar.gz 2、建立软连接方便版本后续的版本升级ln -s redis-3.2.11 redis3、编译安装cd redis...

2018-09-14 11:24:59 249

原创 企业级Redis开发运维从入门到实践 (1)—Redis 初识

Redis是什么Redis是一个开源、基于键值的存储服务系统,具有多种数据结构,同时具有高性能、功能丰富(即高性能Key-Value、多种数据结构、丰富的功能、高可用分布式支持的数据存储服务)的特性。Redis使用公司下面等公司都在使用Redis Redis的特性八大特性:速度快、持久化、 多种数据结构、支持多种变成语言、功能丰富、简单、主从复制、高可用、分布式。...

2018-09-13 20:32:12 450

原创 DOS 常用命令

什么是DOS命令DOS命令,计算机术语,是指DOS操作系统的命令,是一种面向磁盘的操作命令,主要包括目录操作类命令、磁盘操作类命令、文件操作类命令和其它命令。目前大家常用的操作系统有windows10,windows 7等,都是图形化的界面。在有这些系统之前的人们使用的操作系统是DOS系统。在开始找到命令提示符,或者在运行中输入cmd命令打开命令提示符。dir命令dir命令用于...

2018-09-11 22:49:32 388 1

原创 Redis 缓存穿透、缓存雪崩原理及解决方案

Redis缓存的场景客户端请求在缓存层命中就直接返回,如果miss就去读取存储层,存储层读取到就写入缓存层,然后再返回到客户端 Redis的优缺点优点:加速读写,降低后端负载、减少DB压力缺点:数据不能保证一致性,代码维护成本和运维成本缓存穿透引发原因在查询一个一定不存在的数据,由于缓存是不命中时被动写入,并且处于容错考虑,如果从存储层查不到数据则不写入缓存...

2018-09-06 22:58:55 5071

原创 Elasticsearch Java API 的使用(23)—实现集群管理

集群管理 使用ClusterHealthResponce实现集群信息监测和管理public class EsCommonTerms throws UnknownHostException{ public void queryString(TransportClient client){ ClusterHealthResponce healths = client.adm...

2018-09-06 20:22:03 896

原创 Elasticsearch Java API 的使用(22)—实现桶聚合

分组聚合 使用terms时间分组集合public class EsTermsAgg throws UnknownHostException{ public void TermsAgg(TransportClient client){ AggregationBuilder agg = AggregationBuilders.terms("terms").field("ag...

2018-09-06 19:58:22 2367

原创 Elasticsearch Java API 的使用(21)—实现组合查询

组合查询 使用boolQuery实现组合查询public class EsCommonTerms throws UnknownHostException{ public void queryString(TransportClient client){ //bool实现组合查询,must表示必须满足,mustNot表示必须不满足,should表示可以满足,filter表...

2018-09-06 18:44:15 2393

原创 Elasticsearch Java API 的使用(20)—实现query_string

常用词查询 常用词查询使用commonTermsQuerypublic class EsQueryString throws UnknownHostException{ public void queryString(TransportClient client){ //commonTermsQuery查询 Querybuilder build = Que...

2018-09-06 18:01:25 3609

原创 Elasticsearch Java API 的使用(19)—实现常用聚合查询(max聚合、min聚合、avg聚合、sum聚合、cardinality聚合)

max聚合查询 最大值聚合查询使用public class EsAgg throws UnknownHostException{ public void maxAgg(TransportClient client){ //最大值聚合查询(max) AggregationBuilder agg = AggregationBuilders.max("aggM...

2018-09-06 16:03:44 2561 6

原创 Elasticsearch Java API 的使用(18)—实现range(范围)、prefix(前缀)、wildcard(通配符)、fuzzy(模糊)、type(_type)、ids(_id)查询

range查询 范围查询使用rangeQuerypublic class EsMatchAll{ public void updateIndex(TransportClient client){ //范围查询(range) QueryBuilder qb = QueryBuilders.rangeQuery("birthdaty") ...

2018-09-06 14:56:14 3851

原创 Elasticsearch Java API 的使用(17)—实现term查询、terms查询

term查询 trem查询只可指定查询一个字段对应单个词条public class EsMatchAll{ public void updateIndex(TransportClient client){ //查询所有(match_all) QueryBuilder qb = QueryBuilders.termQuery("interests", "c

2018-09-06 14:36:32 7742

原创 Elasticsearch Java API 的使用(16)—实现match_all查询、match查询 和 multimath查询

match_all 查询所有public class EsMatchAll{ public void updateIndex(TransportClient client){ //查询所有(match_all) QueryBuilder qb = QueryBuilders.matchAllQuery(); SearchResponse s...

2018-09-06 12:06:13 11425

原创 Elasticsearch Java API 的使用(15)—实现批量操作(mget&bulk)

Java实现批量操作(mget&bulk)mget批量获取使用MultiGetResponsepublic class EsMget{ public void updateIndex(TransportClient client){ MultiGetResponse response = client.prepareMultiGet() ...

2018-09-06 11:08:17 2546

原创 Elasticsearch 基于不可修改field的重建索引

重建索引一个 field 的设置是不能修改的,如果要修改一个 field,那么应该重新按照新的mapping,建立一个index,然后将数据批量查询出来,重新用 bulk api 写入到新的index中。批量查询的时候,建议采用scroll api,并且采用多线程并发的方式来reindex数据,每次scroll就查询指定日期扽一段数据,交给一个线程即可。//创建一个索引并写入一条数据,...

2018-09-05 21:52:05 1048

原创 Elasticsearch dynamic mapping(动态映射) 策略

当 Elasticsearch 遇到文档中以前 未遇到的字段,它用 dynamic mapping(动态映射) 来确定字段的数据类型并自动把新的字段添加到类型映射。有时这是想要的行为有时又不希望这样。通常没有人知道以后会有什么新字段加到文档,但是又希望这些字段被自动的索引。也许你只想忽略它们。如果Elasticsearch是作为重要的数据存储,可能就会期望遇到新字段就会抛出异常,这样能及时发现...

2018-09-05 17:40:27 5837 2

原创 Elasticsearch 使用scroll滚动技术实现大数据量搜索、深度分页问题 和 search_after 实现深度分页

如果一次性要查出来比如10万条数据,那么性能会很差,此时一般会采取用scroll滚动查询,一批一批的查,直到所有数据都查询完为止。scroll搜索会在第一次搜索的时候,保存一个当时的视图快照,之后只会基于该旧的视图快照提供数据搜索,如果这个期间数据变更,是不会让用户看到的采用基于_doc(不使用_score)进行排序的方式,性能较高每次发送scroll请求,我们还需要指定一个scroll...

2018-09-05 16:38:35 7020 1

原创 Elasticsearch Doc_Values解析

DocValue其实是Lucene在构建倒排索引时,会额外建立一个有序的正排索引(基于document => field value的映射列表)。{“birthday”:“1985-11-11”,age:23}{“birthday”:“1989-11-11”,age:29}document age birthdaydoc1 23 1985-11-11doc1 29 198...

2018-09-04 22:29:56 8673

原创 Elasticsearch 如何计算相关度分数

相关度分数的计算使用的是TF/IDF算法(Term Frequency&Inverse Document Frequency)。Term Frequency:我们查询的文本中的词条在document中出现了多少次,出现次数越多,相关度越高。搜索内容:hello world Hello, I love china. Hello world,how are you!Inve...

2018-09-04 22:11:27 2694

原创 Elasticsearch 字符串排序问题

对一个字符串类型的字段进行排序通常不准确,因为已经被分词成多个词条了 解决方式:对字段索引两次,一次索引分词(用于搜索),一次索引不分词(用于排序)//不同查询GET /lib3/_search//默认的text是进行了分词,进行排序将报错GET /lib3/user/_search{ "query": { "match_all": {} },...

2018-09-04 21:41:13 6332 1

原创 Elasticsearch query_string查询及copy_to解析

Elastic search的常规查询如下所示GET /lib3/user/_search?q=interests:changgeGET /lib3/user/_search?q=+interest:changgeGET /lib3/user/_search?q=-interests:changge//查询含有changge或则含有hejiu的文档,但是没有指定具体的字段//此时...

2018-09-04 21:11:27 2309

原创 Elasticsearch 分页查询中的deep paging问题

分页查询的deep paging问题首先回顾下分页查询GET /lib3/user/_search{ "from": 0, "size": 2, "query": { "terms": { "interests": ["hejiu", "changge"] }

2018-09-03 21:23:24 1149 2

docker-raspberrypi-4B.zip

docker-arm_20.10.6 资源

2021-10-27

delete_docker_registry_image

从github上拿到的第三方插件用于删除docker registry上的镜像

2021-04-20

The Do's And Don'ts Of Elasticsearch Scalability And Performance

Elasticsearch的可伸缩性和性能注意事项

2017-08-22

Haroopad (Markdown编辑器)

一款非常好用的MarkDown编辑器

2017-08-11

空空如也

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

TA关注的人

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