专题一: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 ...
随机推荐
- layui动态添加选项卡
<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head> <meta ...
- 深入了解Redis(6)-持久化原理
Redis是一个内存数据库,数据保存在内存中.但我们都知道存储在内存中的数据会因为外部因素而丢失,所以Redis会把数据持久化到磁盘中,至于是如何持久化呢? 一.RDB 1.手动触发 save:该命令 ...
- django 的初始项目结构
2.创建Django项目 root@dev:shiyanlou_project# workon syl (syl) root@dev:shiyanlou_project# cd /aaa/shiy ...
- Tomcat 8.5中获取客户端真实IP及协议
获取客户端真实IP ServletRequest接口提供了getRemoteAddr方法用于获取客户端IP,但是当客户端通过代理服务器访问后端服务器的时候,服务器调用getRemoteAddr方法会返 ...
- 共享内存Distributed Memory 与分布式内存Distributed Memory
我们经常说到的多核处理器,是指一个处理器(CPU)上有多个处理核心(CORE),共享内存多核系统我们可以将CPU想象为一个密封的包,在这个包内有多个互相连接的CORES,每个CORE共享一个主存,所有 ...
- 关于arduino与SPI
参考: 作者:李俊轩 来源:本站原创 点击数:x 更新时间:2013年07月18日 [字体:大 中 小] SPI的英文全称是:"Serial Peripheral Inte ...
- PHP添加新扩展包的步骤
1.找到PHP解压包,将 php.ini-development 这个文件复制一份,并修改后缀名为 .ini 2.将这个文件打开,将此处注释解开, 3.配置你扩展的该包的位置 4.如果显示不 ...
- Win10下设置GOPATH系统变量,查看go env没有变化
前言 最近在学习go语言,下载了golang安装包安装之后,使用go env查看环境变量,发现GOPATH已经指向默认的目录了 按照安装手册去系统变量设置了一下GOPATH,指向自定义目录 再来运行一 ...
- mycat 全局表
全局表的作用 在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,考虑到字典表具有以下几个特性: 变动不频繁 数据量总体变化不大 数据规模不大,很 ...
- python接口测试之读取配置文件
1.python使用自带的configparser模块用来读取配置文件,配置文件可以为.conf或.ini结尾 在使用前需要先安装该模块,使用pip安装即可 2.新建一个名为a.conf的配置文件 a ...