一、NoSQL  

现在互联网应用其中有两个特点:(1)海量用户(2)不可避免地高并发。常常因为这样,我们网站或者服务器将面临崩溃的风险。而多用户、高并发只是现象,究其根源,罪魁祸首就是关系型数据库,数据访问这一块出现了问题。在数据访问中,有哪些因素影响呢?

(1)性能瓶颈:磁盘IO性能低下;因为我们CPU的数据交换和缓存(Cache)做,Cache的数据交换和内存做,内存的数据交换和磁盘做,提供的基本数据基本都在硬盘上,一层一层传递,磁盘性能远达不到我们想要的要求;

(2)扩展瓶颈:数据库不仅是存数据,还要存数据之间的关系,常常数据间的关系比较错综复杂,也不便于大规模集群。

怎么解决?(1)降低磁盘IO,用内存存储解决(2)数据关系越简单越好,甚至不存储关系,只存储数据。这其中就包含一种理念:NoSQL。

什么是NoSQL呢?即Not-only SQL,泛指非关系型数据库,注意,它并不能替代关系型数据库,而是关系型数据库的补充。我们使用NoSQL的场景,常常也是为了应用于开篇提及的海量用户高并发的场景。

常见的NoSQL数据库有哪些呢?Redis,memcache,HBase,MongoDB。我们举一个电商的商品例子,来简单说明一下。比方说商品的基本信息,如名称、价格等,这种信息全局一份,也比较固定,首选肯定是MySQL;商品的附加信息,如商品详情,描述评论等,大段大段地文字,这种就推荐擅长文档处理地MongoDB;商品的图片,一般都会有专用的存储未知,我们放在分布式文件系统中;商品的检索,搜索关键字,推荐ES等;还有一种热点信息,这类信息可能随着时间会变,但是高频访问,这种推荐Redis、MongoDB、Tair等。

也就是说,我们对外访问的时候,可能就变成了这样:MySQL集群  -->  NoSQL集群 -->对外访问

二、Redis

2.1 什么是Redis?

Remote Dictionary Server,一个C语言编写的键值对(key-value)数据库。

2.2 主要特征

(1)数据间没有必然的关系;(2)单线程机制进行工作;(3)高性能;

(4)多数据类型支持,如string、hash,list,set,sorted_set等(后面专题会详细描述);

(5)持久化支持,主要进行数据灾难恢复(比方说机器断电了);

2.3 主要应用

(1)为热点数据做加速查询;(2)任务队列,比方说秒杀、抢购等;(3)即时信息查询,比方说排行榜、在线人数统计等;

(4)时效信息控制,如优惠券,验证码等;(5)分布式数据共享,如session分离;(6)分布式锁;(7)消息队列

2.4 以windows版本客户端学习启动为例

启动server:redis-server.exe redis.windows.conf

启动客户端:redis-cli.exe -p 6379

专题一:why redis ?的更多相关文章

  1. [你必须知道的NOSQL系列]专题二:Redis快速入门

    一.前言 在前一篇博文介绍了MongoDB基本操作,本来打算这篇博文继续介绍MongoDB的相关内容的,例如索引,主从备份等内容的,但是发现这些内容都可以通过官方文档都可以看到,并且都非常详细,所以这 ...

  2. Redis专题(2):Redis数据结构底层探秘

    前言 上篇文章Redis闲谈(1):构建知识图谱介绍了redis的基本概念.优缺点以及它的内存淘汰机制,相信大家对redis有了初步的认识.互联网的很多应用场景都有着Redis的身影,它能做的事情远远 ...

  3. 专题五:redis的数据类型之set

    一.基本简介 现在出现了新的查询需求:存储大量数据的同时,还需要在查询方面提供更高的效率.虽然list满足存储大量的数据,也可以通过索引来进行访问,但是list底层是双向链表的结构,在查询上的效率并没 ...

  4. 专题四:redis的数据类型之list

    一.基本介绍 对于list,它的存储需求是什么呢?对于string,讲究单个,hash也不讲究大量:当我们需要存储多个数据的时候,前面的数据类型就不大合适了. 数据存储需求:存储多个数据,并对数据进入 ...

  5. 专题三:redis的数据类型之hash

    一.基本介绍 前面一个专题我们讲到string去存储明星微博粉丝数,微博数等,大概介绍了两种方式: set user:id:012345:fans  12210862            set u ...

  6. 专题二:redis的数据类型之string

    一.redis的数据存储格式 redis本身是一个Map,其中所有的数据都是采用 "key:value"的方式进行存储的. 我们说的数据类型是数据存储的类型,也就是对应下图的val ...

  7. Redis专题(3):锁的基本概念到Redis分布式锁实现

    拓展阅读:Redis闲谈(1):构建知识图谱 Redis专题(2):Redis数据结构底层探秘 近来,分布式的问题被广泛提及,比如分布式事务.分布式框架.ZooKeeper.SpringCloud等等 ...

  8. 面试中程序员常见的Redis"刁难"问题,值得一读!

    导读 在程序员面试过程中Redis相关的知识是常被问到的话题.作为一名在互联网技术行业打击过成百上千名的资深技术面试官,总结了面试过程中经常问到的问题.十分值得一读. Redis有哪些数据结构? 字符 ...

  9. 面试阿里被分布式“搞懵”,Redis、MongoDB、memcached没答上来

    都说大厂面试难,一点也没有错,一线大厂的面试究竟怎么样还得自己亲身经历了才知道.小白面试阿里,就被面试官吊打,一问分布式就被“搞懵”了,Redis.MongoDB.Memcached都没答好,很多没有 ...

  10. 图灵学院JAVA互联网架构师专题学习笔记

    图灵学院JAVA互联网架构师专题学习笔记 下载链接:链接: https://pan.baidu.com/s/1xbxDzmnQudnYtMt5Ce1ONQ 密码: fbdj如果失效联系v:itit11 ...

随机推荐

  1. ORA-00060: Deadlock detected 模拟死锁产生与解决方案

    死锁:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程 ...

  2. 解决 SecureCRT 和 SecureFX 中文乱码

    引言 最近老是有小伙伴给我发消息说,下载的 SecureCRT 和 SecureFX 安装打开后连接了自己的服务器或虚拟机后会出现中文乱码,每次都要给一一回复,我倒没事,主要是有时候因为工作的原因,所 ...

  3. 使用AOP和Validator技术对项目接口中的参数进行非空等校验

    javax.validation.Validator基础知识补充: validator用来校验注解的生效,如: @NotBlank(message = "地址名不能为空") pri ...

  4. C++ 关键字 enum

    转自:https://blog.csdn.net/cppwork/article/details/18814315 C++ 关键字 enum. 枚举 1.  概念 我们经常需要为某些属性定义一组可选择 ...

  5. @FeignClient注解详解

    Spring Cloud 是目前最火的微服务框架,Feign 作为基础组件之一,在 Spring Cloud 体系中发挥了重要的作用. 一.FeignClient注解 FeignClient注解被@T ...

  6. 【Redis之疑难解析】(error) READONLY You can't write against a read only slave

    一.问题描述 已部署好 Redis 主从服务器,实现了数据的同步. Redis 主服务器(master server)具有读写的权限,而 从服务器(slave master)默认 只具有 读 的权限. ...

  7. [转载]volitale关键字详解

    来看这个代码: int fun(int& a) { int b = a; int c = a; return a+b+c; } int main() { int a=1; //........ ...

  8. elasticsearch练习

    elasticsearch练习 最近在学习elasticsearch,做了一些练习,分享下练习成果,es基于6.7.2,用kibana处理DSL,有兴趣的伙伴可以自己试试 1.简单查询练习 sourc ...

  9. go 虎牙爬取

    package main import ( "fmt" "github.com/antchfx/htmlquery" "io/ioutil" ...

  10. flutter——android报错建议Suggestion: add 'tools:replace="android:label"'

    问题: 安装了一个新包,android出现了报错,建议add 'tools:replace="android:label"'. 原因: 项目application的label属性冲 ...