![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【NoSql】
天青色的烟雨.
本博客只为加深自身知识体系,不为任何商业用途呦呦呦!
展开
-
为什么使用 NoSQL:NoSQL 与 SQL 的区别
1. 概念SQL (Structured Query Language) 数据库,指关系型数据库。主要代表:SQL Server,Oracle,MySQL,PostgreSQL。NoSQL(Not Only SQL)泛指非关系型数据库。主要代表:MongoDB,Redis,CouchDB。2.诞生的原因随着互联网的不断发展,各种类型的应用层出不穷,在这个云计算的时代,对技术提出...原创 2019-03-17 22:53:22 · 294 阅读 · 0 评论 -
redis缓存穿透、缓存雪崩
1、缓存穿透 缓存处理流程:前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。 缓存穿透:是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。如发起为id为“-1”的数据...原创 2019-05-03 17:17:10 · 191 阅读 · 0 评论 -
ehcache和redis实现二级缓存
二级缓存的作用 简要说明:ehcache是内存缓存,在本地jvm内存中,十分高效,但是如果缓存数据都存在jvm中,内存是不够用的,于是使用到了redis数据库缓存,redis是键值对数据库,也比较高效,如果仅用redis做缓存,则存在频繁的网络IO读写,因为一般的会将redis部署在一个单独的服务器上,或者是集群部署。所以我们结合两者的特性,优先使用ehcache缓存,当ehcac...原创 2019-05-24 11:30:59 · 1169 阅读 · 0 评论 -
RedisTemplate操作Redis
RedisTemplate介绍Spring封装了RedisTemplate对象来进行对Redis的各种操作,它支持所有的Redis原生的api。RedisTemplate位于spring-data-redis包下。RedisTemplate在Spring代码中的结构如下:org.springframework.data.redis.core Class RedisTemplate&...原创 2019-06-21 11:28:22 · 548 阅读 · 0 评论 -
布隆过滤器
布隆过滤器介绍布隆过滤器在wiki上的介绍: 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难为什么要用布隆过滤器? HashMap 的问题: 讲述布隆过滤器的原理之前,我...转载 2019-07-03 15:31:08 · 1227 阅读 · 0 评论 -
一致性哈希
一、分布式算法 在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin)、哈希算法(HASH)、最少连接算法(Least Connection)、响应速度算法(Response Time)、加权法(Weighted )等。其中哈希算法是最为常用的算法. 典型的应用场景是: 有N台服务器提供缓存服务,需要对服务器进行负载均衡...转载 2019-07-03 17:22:24 · 230 阅读 · 0 评论 -
Elasticsearch
Elasticsearch1.1 ES定义 ES=elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTf...原创 2019-06-17 14:52:03 · 371 阅读 · 0 评论 -
Elasticsearch查询
1.基本查询基本语法GET /索引库名/_search{ "query":{ "查询类型":{ "查询条件":"查询条件值" } }}这里的query代表一个查询对象,里面可以有不同的查询属性 查询类型: 例如:match_all,match,term,range 等等 ...原创 2019-06-17 21:50:28 · 180 阅读 · 0 评论 -
搜索引擎-倒排索引
单词——文档矩阵 单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图3-1展示了其含义。图3-1的每列代表一个文档,每行代表一个单词,打对勾的位置代表包含关系。 从纵向即文档这个维度来看,每列代表文档包含了哪些单词,比如文档1包含了词汇1和词汇4,而不包含其它单词。从横向即单词这个维度来看,每行代表了哪些文档包含了某个单词。比如对于词汇1来说,文档1...转载 2019-07-05 21:07:26 · 367 阅读 · 0 评论 -
限流算法
三种常见的限流算法 在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。那么何为限流呢?顾名思义,限流就是限制流量,就像你宽带包了1个G的流量,用完了就没了。通过限流,我们可以很好地控制系统的qps,从而达到保护系统的目的。本篇文章将会介绍一下常用的限流算法以及他们各自的特点。1、计数器算法 计数器算法是限流算法里最简单也是最容易实现的一种算法。比如我们规...转载 2019-07-16 19:58:25 · 204 阅读 · 0 评论 -
SkipList跳表原理
为什么选择跳表 目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树,出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要参考网上的代码,相当麻烦。用跳表吧,跳表是一种随机化的数据结构,目前开源软件 Redis 和 LevelDB...转载 2019-04-08 09:23:56 · 248 阅读 · 0 评论 -
Redis为什么这么快
Redis为什么这么快1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;3、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加...原创 2019-07-16 20:50:58 · 164 阅读 · 0 评论 -
Jedis
一、键操作:二、字符串操作:三、整数和浮点数操作:四、列表(List)操作:五、集合(Set)操作:六、哈希(Hash)操作:七、有序集合(Zsort)操作:八、排序操作:Java 连接 MySql 我们有 mysql-connector ,连接 Redis 我们有 jedis。九、实例引入依赖<dependen...转载 2019-03-22 17:06:53 · 183 阅读 · 0 评论 -
Redis入门介绍、渐进式hash
Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。1、是什么Redis 与其他 key - value 缓存产品有以下三个特点R...原创 2019-03-21 15:37:53 · 423 阅读 · 0 评论 -
Redis常用命令(Key、String)
Redis 中返回1就是成功,0、-1、nul则为失败常用命令select 0~15 用于在 0 ~ 15 号库之间进行切换 dbsize 查看当前数据库的 key 的数量 flushdb 用于清空当前库...原创 2019-03-21 16:32:33 · 631 阅读 · 0 评论 -
Redis常用命令(List、Set)
List常用命令list 类似一个双端队列,即可以从左边 push 和 pop,也可以从右边 push 和 pop,底层其实是一个双端链表。可以实现分布式消息队列 -- lpush/rpush/rpop/lpop。 lpush list01 1 2 3 4 5 key 为 list01,value 为 1,2,3,4,5,从左向右push(从左边加入) rpus...原创 2019-03-21 18:07:15 · 626 阅读 · 0 评论 -
Redis常用命令(Hash、Zset)
Hash常用命令对于 hash 类型,key-value 的模式不变,只不过 key 对应的 value 是一个 map。key-value不可以重复,如果重复则覆盖。用于对象赋值。相当于Java中的HashMap。hset user id 1 向 user(map) 中添加 key-value 对(id,1) hget user id...原创 2019-03-21 19:56:12 · 701 阅读 · 0 评论 -
Redis位图、配置文件
一、位图 在我们平时开发中,会有一些布尔型数据需要存取。比如你在很多睡眠软件里会看到早起打卡的活动,那么它就需要记录用户的签到记录,签了就是1,没签是0。如果使用普通的key/value,每个用户要记录365个,当用户千万、上亿的时候,无疑需要的存储空间时非常惊人的。 为了解决类似的这种需要存取大数据量的布尔类型问题,redis提供了位图数据结构,这样每天的...原创 2019-03-21 21:38:09 · 396 阅读 · 0 评论 -
Redis持久化RDB(重点)
1. 什么是redis的持久化? Redis 是一款内存数据库,也就是说它把数据都存储在内存中,持久化就是把内存中的数据存储到电脑的磁盘上。Redis 提供了不同级别的持久化方式: RDB 持久化方式能够在指定的时间间隔能对你的数据进行快照存储。 AOF 持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据。本篇介绍第一种:R...转载 2019-03-21 22:25:35 · 178 阅读 · 0 评论 -
Redis的内存淘汰机制、过期策略
一、内存淘汰机制 Redis作为当前最常用的开源内存数据库,性能十分高,据官方数据表示Redis读的速度是110000次/s,写的速度是81000次/s 。而且Redis支持数据持久化,众多数据结构存储,master-slave模式数据备份等多种功能。 但是长期将Redis作为缓存使用,难免会遇到内存空间存储瓶颈,当Redis内存超出物理内存限制时,内存数据就会...转载 2019-03-21 22:42:50 · 289 阅读 · 0 评论 -
Redis持久化AOF
什么是 AOF?AOF 是 Append Only File 的意思,它是指 Redis 在持久化数据到硬盘的时候是以日志的形式来记录每个写操作,并保存到磁盘的一个文件中,这个文件的名字默认叫 appendonly.aof。AOF 持久化的原理理论上说,只要我们保存了所有可能修改 Redis 内存数据的命令(也就是写命令),那么根据这些保存的写命令,我们可以重新恢复 Redis 的内存...转载 2019-03-22 10:19:17 · 271 阅读 · 0 评论 -
Redis事务、分布式锁
概述 在关系型数据库中,事务是指一组命令的集合,这组命令构成了一个原子操作,这个操作要么全部执行成功,要么全部执行失败。而在非关系型数据库 Redis 中并非这样…Redis事务机制 严格意义来讲,Redis的事务和我们理解的传统数据库(如mysql)的事务是不一样的;Redis的事务实质上是命令的集合,在一个事务中要么所有命令都被执行,要么所有事物都不执行。...原创 2019-03-22 12:08:36 · 243 阅读 · 0 评论 -
Redis主从复制、集群
什么是主从复制(Master/Slave)? 我们的数据一般是存储在数据库中,为了保证数据的高可用,我们一般使用多台数据库服务器做集群。选则其中的一台作为主服务器(Master),其余的作为从服务器(Slave)。Master 上的数据更新后根据配置文件配置的策略,自动同步到 Slave 上,这就是主从复制。主从复制有什么作用?保证了数据的高可用。因为数据在多台服务器上...原创 2019-03-22 16:11:12 · 162 阅读 · 0 评论 -
如何控制缓存更新
背景 计算机为了在性能上有一个倍数式的增长,引入了缓存设计,同时也间接引入了并发问题。抛开让人闻风丧胆的并发问题,缓存的引入,本质的问题是磁盘虽然硬件成本低,但是性能低效,而缓存则相反,成本高,但是性能极好,所以在二者权衡之下,选择折中的方案,两者相结合得最大性价比。系统架构同样也面临着性能问题,响应问题。 缓存带来的作用:由于redis的容量一般都只有...原创 2019-08-11 11:52:21 · 801 阅读 · 0 评论