nosql

Redis keys function for match with multiple pattern

瘦欲@ 提交于 2020-08-09 13:35:33
问题 How i can find keys with multiple match pattern, for example i've keys with foo:*, event:*, poi:* and article:* patterns. how i find keys with redis keys function for match with foo:* or poi:* pattern, its like find all keys with preffix foo:* or poi:* 回答1: You should not do this. KEYS is mainly a debug command. It is not supposed to be used for anything else. Redis is not a database supporting ad-hoc queries: you are supposed to provide access paths for the data you put into Redis (using

阿里、百度、美团都在用的‘高并发系统设计’;秒杀、抢红包、12306抢票等高并发场景难点

旧街凉风 提交于 2020-08-09 11:02:37
"秒杀活动"、"抢红包"、"微博热搜"、"12306抢票"、"共享单车拉新"等都是高并发的典型业务场景,那么如何解决这些业务场景背后的难点问题呢? 秒杀系统中,QPS达到10万/s时,如何定位并解决业务瓶颈? 明星婚恋话题不断弓|爆微博热搜,如何确保系统不宕机? 共享单车充值活动,如何保证不超卖? ...... 同一时间、海量用户的高频访问对任何平台都是难题,但可喜的是,虽然业务场景不同,设计和优化的思想却是万变不离宗 。如果你掌握了高并发系统设计的核心技术点(缓存、池化、异步化、负载均衡、队列、降级熔断等),深化成自 己的知识体系,解决这些业务问题将不在话下,应对自如。 在小编看来,不少技术能力极强的工程师依旧会被"高并发"所困,这与知识储备不足,无法系统化地掌握核心技术有很大关系。技术人要不断汲取新的营养,更要能将技术知识应用到实际业务中,这样才能提升竞争力,突破职场瓶颈。 高并发系统设计知识框架图 说明 :文章限于篇幅,故只做部分展示,完整的《高并发系统设计》文档小编已经整理好了,正在学习高并发或者想把这份文档当做练习题复习一下的朋友,可以关注微信公众号:慕容千语 基础 一起了解高并发架构的设计理念, 建立对高并发系统的初步认知。比如,如何让你的系统更好地支持高性能、可用与可扩展性,比如带你掌握架构分层的核心技术点。 高并发系统:它的通用设计方法是什么 架构分层

看完这篇Redis缓存三大问题,保你面试能造火箭,工作能拧螺丝。

不问归期 提交于 2020-08-09 10:33:40
前言 日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题。 一旦涉及大数据量的需求,如一些商品抢购的情景,或者主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度问题有严重的性能弊端,详细的磁盘读写原理请参考这一片 在这一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题。 为了克服上述的问题,项目通常会引入NoSQL技术,这是一种基于内存的数据库,并且提供一定的持久化功能。 Redis 技术就是 NoSQL 技术中的一种。 Redis 缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。 但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。 另外的一些典型问题就是,缓存穿透、缓存击穿和缓存雪崩。本篇文章从实际代码操作,来提出解决这三个缓存问题的方案,毕竟Redis的缓存问题是实际面试中高频问点,理论和实操要兼得。 缓存穿透 缓存穿透是指查询一条数据库和缓存都没有的一条数据,就会一直查询数据库,对数据库的访问压力就会增大,缓存穿透的解决方案,有以下两种:

Incorrect count from aggregation query

我只是一个虾纸丫 提交于 2020-08-09 08:49:29
问题 In the following document collection, I am trying to find the total words of unique sentences. The total words must come out as 5 (hello\nworld, how are you?) + 5 (hello world, I am fine) + 3(Is it raining?) + 5(Look at the beautiful tiger!) = 18 [ { "sourceList": [ { "source": "hello\nworld, how are you?", "_id": ObjectId("5f0eb9946db57c0007841153") }, { "source": "hello world, I am fine", "_id": ObjectId("5f0eb9946db57c0007841153") }, { "source": "Is it raining?", "_id": ObjectId(

Incorrect count from aggregation query

烂漫一生 提交于 2020-08-09 08:46:24
问题 In the following document collection, I am trying to find the total words of unique sentences. The total words must come out as 5 (hello\nworld, how are you?) + 5 (hello world, I am fine) + 3(Is it raining?) + 5(Look at the beautiful tiger!) = 18 [ { "sourceList": [ { "source": "hello\nworld, how are you?", "_id": ObjectId("5f0eb9946db57c0007841153") }, { "source": "hello world, I am fine", "_id": ObjectId("5f0eb9946db57c0007841153") }, { "source": "Is it raining?", "_id": ObjectId(

MongoDB介绍与安装(Windows版)

坚强是说给别人听的谎言 提交于 2020-08-09 05:30:27
1. MongoDB介绍 MongoDb是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB指在为web应用提供可扩展的高性能数据存储解决方案。 MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成。 MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组。 2. MongoDB的优势 易扩展: NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。 大数据量、高性能: NoSQL数据库都具有非常高的读写性能,尤其是在大数据量下,同样表现优秀。这得益于它的无关系型,数据库的结构简单。 灵活的数据模型: NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。 而在关系数据库里,增删字段是一件非常麻烦的事情。 如果是非常大数据量的表,增加字段简直就是一个噩梦。 3. MongoDB的安装 两种方式: 一个是通过软件安装(msi),一个是直接解压(zip),我这里采用解压的方式 3.1 下载 mongodb官网: https://www.mongodb.com/ 访问该链接,直接下载3.6.18版本 https://www.mongodb.com/dr/fastdl.mongodb

2020最新全栈必备 Redis,你还不了解么

*爱你&永不变心* 提交于 2020-08-08 20:02:40
什么是Redis Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如字符串, 散列, 列表, 集合, 有序集合与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了复制,LUA脚本, LRU驱动事件,事务和不同级别的磁盘持久化, 并通过 Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性。 以上来自redis.cn 上的介绍,简单的说,Redis是一个支持多种数据结构并且能够持久化的高性能NoSQL 数据库。 Redis 的存储实现 Redis作为一个性能高达10万qps的key/value存储类型的NoSQL数据库,大致的存储实现体系如下: 一个RedisServer包含了N个redisDb,redisDb有dict的指针和失效时间的指针,核心是dictEntry 指针链表的指针,每一个具体的dictEntry链表节点存储了任意类型的key 和 value,不论是key还是value 都可以是redisObject。可以认为,指针链表的特性对redis的性能做出重要的作用。 Redis 中的数据结构与存储实现关系如下: INT压缩存储String,常量数字对象是共享的。SDS 存储string

SQL基础随记 (Tobe Continued)

丶灬走出姿态 提交于 2020-08-08 17:56:15
SQL基础随记 (Tobe Continued) 其实这里的随记,要是好久不接触突然被问的话有时还真的一时答不上,自己写一遍胜过盲扫。当然,也有些常读常新的地方会记录下来。 对SQL语言进行划分 DDL --- Data Definition Language --- 定义 --- 增删改数据库和表的结构 DML --- Data Manipulation Language --- 操作 --- 对记录增删改 DQL --- Data Quary Language --- 查询 --- 对记录进行查询 DCL --- Data Control Language --- 控制 --- 访问权限和安全规则 要是要突然问的话有时还真的一时回答不上,记住单词胜过记缩写 DBMS的分类 关系型 行存储 --- MySQL NosQL 键值型 --- Redis 文档型 --- MongoDB 搜索引擎 --- Elasticsearch 列存储(列族数据库) 图形数据库 列存储数据库说是“可以降低系统的I/O,但功能相对有限”,不过我看到了一段有意思的话觉得很有道理 列存储常见于分布式文件系统,如Hbase 图(这种数据结构)存储了实体(对象)之间的关系。以最典型的人与人社交关系为例,其数据模型主要是以节点和边来实现。特点在于可以有效解决复杂的关系问题。 来源: oschina 链接:

数据库架构优化的12种组合方式与风险解读(有书送)

时光总嘲笑我的痴心妄想 提交于 2020-08-08 15:41:32
本文根据韩锋老师在〖deeplus直播第235期〗线上分享演讲内容整理而成。 (文末有韩锋老师亲笔签名版新书赠送,不容错过!) 大家好,我是韩锋,一个数据库领域资深从业者(好吧,我是个70后)。近些年来,主要从事数据库产品、架构等工作。本文我将以个人感受,谈谈在新时期下数据库架构优化工作的一些问题,供大家参考。 下面的分享,我将从外部环境对数据库架构的影响、当前架构中若干热门的技术问题、之前的架构实践经历,以及个人如何成长等方面谈谈我的感受。 新时期数据库架构优化 - 环境篇 首先谈下外部因素对架构工作的影响。有些同学可能会感到疑惑,架构问题不是技术问题嘛,为什么还要考虑外部因素?这里是有个误区的,架构的本质是为了解决企业的业务问题,针对某一问题可能有很多种解法,选择最为合适的(而非最优的)是考验一个架构师的核心能力。 正如上图中,右下角的描述“脱离企业环境的架构,都是耍流氓”。那么影响架构的外部因素有哪些呢? 单位属性: 包括企业、事业、军工等。不同单位属性,对架构诉求点是有差异的,粗浅的理解企业单位是追求利益最大化的、事业单位更多会从公共视角考虑问题、而军工则会从国防安全角度思考; 行业属性: 包括互联网、金融、制造业、能源、交通等等。不同行业属性,同样存在差异。例如互联网企业往往比较激进,容易考虑一些自研、开源产品;金融企业则相对稳健,多从稳定安全角度考虑等; 用户属性:

图文并茂让你详细了解分布式架构的演进

痴心易碎 提交于 2020-08-08 10:08:00
什么是分布式架构 分布式系统(distributed system) 是建立在网络之上的软件系统。 内聚性: 是指每一个数据库分布节点高度自治,有本地的数据库管理系统。 透明性: 是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。 在分布式数据系统中,用户感觉不数据是分布的,即用户不须知道关系是否分割,有无副本,数据存在于那个站点以及事物在哪个站点上执行。 简单来说:在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。 分布式系统作为一个整体对用户提供服务,而整个系统的内部的协作对用户来说是透明的,用户就像是指使用一个mysql 一样。 分布式架构的演进 (1)初始阶段架构 特征: 应用程序,数据库,文件等所有资源都放在一台服务器上。 (2)应用服务 和 数据服务 以及 文件服务 分离 说明: 好景不长,发现随着系统访问量的再度增加,webserver机器的压力在高峰期会上升到比较高,这个时候开始考虑增加一台webserver。 特征: 应用程序、数据库、文件分别部署在独立的资源上。 (3)使用缓存改善性能 说明: 系统访问特点遵循二八定律,即80%的业务访问集中在20%的数据上。 缓存分为 本地缓存 和 远程分布式缓存,本地缓存访问速度更快但缓存数据量有限,同时存在与应用程序争用内存的情况。 特征: