一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情
背景
互联网时代,现在已经是大数据时代了,一方面是数据量成几何倍数的增长,另一方面系统的少则几十万,多则百万、千万级别的访问流量,使用传统的关系关系型数据库已经满足不了业务需要。一些秒杀,购票等业务场景,瞬间的访问量直接请求数据库服务器,估计分分钟就挂掉了。这时就需要在用户和数据之间增加一层缓冲层,让请求先访问到redis,由于redis基于内存的数据库,响应速度快,网络层使用epoll解决高并发问题,单线程模型避免了不必要的上下文切换及竞争条件。然后再定时把redis中的数据更新到数据库中,保证数据的最终一致性。
什么是redis
- Redis 是用C语言开发的一个开源的高性能键值对( key-value )内存数据库,它是一种 NoSQL 数据库。
- 它是单进程单线程的内存数据库,所以说不存在线程安全问题。
- 它可以支持并发 10W QPS,所以说性能非常优秀。之所以单进程单线程性能还这么好,是因为底层采用了IO多路复用(NIO思想)
- 相比Memcache这种专业缓存技术,它有更优秀的读写性能,及丰富的数据类型。
- 它提供了五种数据类型来存储值:字符串类型(string)、散列类型(hash)、列表类型(list)、集合 类型(set)、有序集合类型(sortedset、zset)
redis的官网
- 官网地址:redis.io/
- 中文官网地址:www.redis.cn/
- 下载地址:download.redis.io/releases/
Redis应用场景
- 内存数据库(登录信息、购物车信息、用户浏览记录等)
- 缓存服务器(商品数据、广告数据等等)(最多使用)
- 解决分布式集群架构中的 session 分离问题( session 共享)
- 任务队列(秒杀、抢购、12306等等)
- 分布式锁的实现
- 支持发布订阅的消息模式
- 应用排行榜(有序集合)
- 网站访问统计
- 数据过期处理(可以精确到毫秒)
知识扩展
什么是NoSQL
- NoSQL ,即 Not-Only SQL (不仅仅是 SQL ),泛指非关系型的数据库。
- 什么是关系型数据库?数据结构是一种有行有列的数据库
- NoSQL 数据库是为了解决高并发、高可用、高可扩展、大数据存储问题而产生的数据库解决方案。
- NoSQL 可以作为关系型数据库的良好补充,但是不能替代关系型数据库。
NoSQL数据库分类
键值(Key-Value)存储数据库
- 相关产品: Tokyo Cabinet/Tyrant 、 Redis 、 Voldemort 、 Berkeley DB
- 典型应用: 内容缓存,主要用于处理大量数据的高访问负载。
- 数据模型: 一系列键值对
- 优势: 快速查询
- 劣势: 存储的数据缺少结构化
列存储数据库
- 相关产品: Cassandra , HBase , Riak
- 典型应用:分布式的文件系统
- 数据模型:以列簇式存储,将同一列数据存在一起
- 优势:查找速度快,可扩展性强,更容易进行分布式扩展
- 劣势:功能相对局限
文档型数据库
- 相关产品: CouchDB 、 MongoDB
- 典型应用: Web 应用(与 Key-Value 类似, Value 是结构化的)
- 数据模型: 一系列键值对
- 优势:数据结构要求不严格
图形( Graph )数据库
- 相关数据库: Neo4J 、 InfoGrid 、 Infinite Graph
- 典型应用:社交网络 数据模型:图结构
- 优势:利用图结构相关算法。
- 劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。
结束
需要交流学习可以关注公众号【温故知新之java】,互相学习,一起进步。