专题一:why redis ?
一、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 ?的更多相关文章
- [你必须知道的NOSQL系列]专题二:Redis快速入门
一.前言 在前一篇博文介绍了MongoDB基本操作,本来打算这篇博文继续介绍MongoDB的相关内容的,例如索引,主从备份等内容的,但是发现这些内容都可以通过官方文档都可以看到,并且都非常详细,所以这 ...
- Redis专题(2):Redis数据结构底层探秘
前言 上篇文章Redis闲谈(1):构建知识图谱介绍了redis的基本概念.优缺点以及它的内存淘汰机制,相信大家对redis有了初步的认识.互联网的很多应用场景都有着Redis的身影,它能做的事情远远 ...
- 专题五:redis的数据类型之set
一.基本简介 现在出现了新的查询需求:存储大量数据的同时,还需要在查询方面提供更高的效率.虽然list满足存储大量的数据,也可以通过索引来进行访问,但是list底层是双向链表的结构,在查询上的效率并没 ...
- 专题四:redis的数据类型之list
一.基本介绍 对于list,它的存储需求是什么呢?对于string,讲究单个,hash也不讲究大量:当我们需要存储多个数据的时候,前面的数据类型就不大合适了. 数据存储需求:存储多个数据,并对数据进入 ...
- 专题三:redis的数据类型之hash
一.基本介绍 前面一个专题我们讲到string去存储明星微博粉丝数,微博数等,大概介绍了两种方式: set user:id:012345:fans 12210862 set u ...
- 专题二:redis的数据类型之string
一.redis的数据存储格式 redis本身是一个Map,其中所有的数据都是采用 "key:value"的方式进行存储的. 我们说的数据类型是数据存储的类型,也就是对应下图的val ...
- Redis专题(3):锁的基本概念到Redis分布式锁实现
拓展阅读:Redis闲谈(1):构建知识图谱 Redis专题(2):Redis数据结构底层探秘 近来,分布式的问题被广泛提及,比如分布式事务.分布式框架.ZooKeeper.SpringCloud等等 ...
- 面试中程序员常见的Redis"刁难"问题,值得一读!
导读 在程序员面试过程中Redis相关的知识是常被问到的话题.作为一名在互联网技术行业打击过成百上千名的资深技术面试官,总结了面试过程中经常问到的问题.十分值得一读. Redis有哪些数据结构? 字符 ...
- 面试阿里被分布式“搞懵”,Redis、MongoDB、memcached没答上来
都说大厂面试难,一点也没有错,一线大厂的面试究竟怎么样还得自己亲身经历了才知道.小白面试阿里,就被面试官吊打,一问分布式就被“搞懵”了,Redis.MongoDB.Memcached都没答好,很多没有 ...
- 图灵学院JAVA互联网架构师专题学习笔记
图灵学院JAVA互联网架构师专题学习笔记 下载链接:链接: https://pan.baidu.com/s/1xbxDzmnQudnYtMt5Ce1ONQ 密码: fbdj如果失效联系v:itit11 ...
随机推荐
- Java基础——HashMap
1.HashMap底层的实现 JDK 1.7 中 HashMap 是以数组+链表的形式组成的 JDK 1.8 之后数组+链表/红黑树的组成的,当链表大于 8 并且容量大于 64 时,链表结构会转换成红 ...
- log4net 纯代码配置
当需要输出的日志很多的时候,每次修改config都很麻烦,于是想可不可以动态生成. 网上找的案例都是获取单个appender/logger的,此处例子是任意logger,appender相同 log4 ...
- Spring Boot第四弹,一文教你如何无感知切换日志框架?
持续原创输出,点击上方蓝字关注我吧 目录 前言 Spring Boot 版本 什么是日志门面? 如何做到无感知切换? 如何切换? 引入依赖 指定配置文件 日志如何配置? 总结 前言 首先要感谢一下读者 ...
- c#数据处理总结(分组、交并差与递归)
前言:最近项目比较忙,完全没有时间写下总结笔记,今天抽出时间来写下笔记,供写后台的你来做数据处理后台代码编写的参考. 一.分组 var GroupForList = numberList.GroupB ...
- python数据结构树和二叉树简介
一.树的定义 树形结构是一类重要的非线性结构.树形结构是结点之间有分支,并具有层次关系的结构.它非常类似于自然界中的树.树的递归定义:树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树,否 ...
- Arduino读取写入电压值
读取写入方式分为数字和模拟 读取方式:(注意接地) 数字:digitalRead(pin); 模拟:analogRead(A1);float val=value*(5.0/1023.0); ...
- Centos7 Docker配置TLS认证的远程端口的证书生成教程(shell脚本一键生成)
通过 TLS来进行远程访问 百度百科 - TLS.我们需要在远程 docker 服务器(运行 docker 守护进程的服务器)生成 CA 证书,服务器证书,服务器密钥,然后自签名,再颁发给需要连接远程 ...
- Windows10系统下wsappx占用CPU资源过高?wsappx是什么?如何关闭wsappx进程?
在Windows10系统开机的时候,wsappx进程占用的CPU资源非常高,导致电脑运行速度缓慢,那么我们如何关闭wsappx进程,让电脑加快运行速度呢?下面就一起来看一下操作的方法吧. [现象] 1 ...
- git 查看本地分支和切换本地分支的命令
查看本地分支,和当前所在的分支 git branch -vv git checkout developer 切换到developer分支
- vue 组件的封装
封装的原因 首先封装组件的需求肯定是多个地方要用到同一个东西,他们都有公共的地方,vue的封装 简单来说就是将公共参数封装起来 然后在需要的地方引入 //子组件封装 <template> ...