陪你一起学redis(一)——redis初识

184 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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应用场景

  • 内存数据库(登录信息、购物车信息、用户浏览记录等)
  • 缓存服务器(商品数据、广告数据等等)(最多使用)
  • 解决分布式集群架构中的 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】,互相学习,一起进步。