Redis

1. NoSQL 概述

0)架构的演化

  • 单机存储, 数据量比较小的时候。

架构师基础--Redis

  • 单机存储不够(Memcached + MySQL + 垂直拆分)
    架构师基础--Redis
  • MySQL主从读写分离
    架构师基础--Redis
  • 分库分表 + 水平拆分 + MySQL集群
    架构师基础--Redis

1) NoSQL是什么?

Not Only SQL

2) NoSQL 能干什么?

  • 容易扩展,去掉关系数据库的关系型特性。数据之间没有关系, 在架构层面带来了可扩展的能力。
  • 大数据量,高性能
  • 多样灵活的数据模型: NoSQL无需实习那为要存储的数据建立字段,随时可以存储自定义的数据格式。而在数据关系数据库里,增删字段是一件非常麻烦的事情,特别是非常大数据量的表。
  • 传统数据库和非关系型数据库的区别
    • RDBMS
      • 高度组织化结构化数据
      • 结构化查询语言
      • 数据和关系都存储在单独的表中
      • 数据操纵语言,数据定义语言
      • 严格的一致性
      • 基础事务
    • NoSQL
      • 代表者不仅仅是SQL
      • 没有声明性查询语言
      • 没有预定义的模式
      • 键-值对存储,列存储,文档存储,图形数据库
      • 最终一致性,而非ACID属性
      • 非结构化和不可预知数据
      • CAP
      • 高性能,高可用和课伸缩性

3) 现在数据特性和需要的应对技术

数据: 海量, 多样, 实时
技术: 高并发,高可扩, 高性能

4)数据模型

  • KV
  • BSON
  • 列族
  • 图形

5)NoSQL数据库大的四大分类

  • KV键值(常用)
    • 新浪: BerkeleyDB + redis
    • 美团: redis + tair
    • 阿里,百度: memcache + redis
  • 文档型数据库(BSON格式比较多)
    • CouchDB
    • MongoDB: 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产片,是非关系数据库中功能最丰富,最像关系数据库的。
  • 列存储数据库
    • Cassandra, HBase
    • 分布式文件系统
  • 图关系数据库
    • 关系图: 社交网络,广告推荐系统
    • 社交网络,推荐系统。专注与构建关系图谱
    • Neo4J,InfoGrid
  • 四者的对比
    架构师基础--Redis
    架构师基础--Redis

6) 分布式数据库中CAP原理和BASE

  • 传统数据库 A(Atomicity)C(Consistency)I(Isolation)D(Durability)原则
  • C(Consistency)A(Availability)P(Partition Tolerance)
  • CAP 只能实现2个,需要牺牲一个方面, CAP3进2, 需要有权衡和取舍

架构师基础--Redis
架构师基础--Redis

架构师基础--Redis

  • 经典CAP图

架构师基础--Redis

架构师基础--Redis

  • BASE
    架构师基础--Redis
  • 分布式 + 集群

2. Redis介绍

1) Redis 是什么

Redis : Remote Dictionary Server(远程字典服务器)。 是完全开源免费,用C语言编写的,遵守BSD协议,是一个高性能的(k-v)分布式内存数据库,基于内存运行并支持持久化的数据库,是当前最热门的NoSQL数据库之一,也被人们称为数据结构服务器。
Redis有一下三个特点:

  • 支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
  • 不仅仅支持简单的k-v类型的数据,同时还提供 list, set, zset, hash等数据结构的存储
  • 支持数据的备份, master-slave模式的数据备份。

2) Redis能干什么

  • 内存存储和持久化: redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
  • 去最新N个数据的曹祖,如:可以将最新的10条评论的ID放在Redis的List集合里面
  • 模拟类似于HttpSession这种需要设定过期时间的功能
  • 发布, 订阅系统消息
  • 定时器,计数器

3) Redis基本知识

  • 默认有16个库, select + num 选择对应的库
  • DBSIZE 显示有多少个key
  • keys * 显示所有的key
  • flushdb: 清空当前库
  • flushall:清空所有库
  • 统一密码管理,16个库都是同样密码,要么都OK,要么一个也连接不上。
  • Redis所有从0 开始
  • 默认端口是6379

4) Redis数据类型

Redis五大数据类型:

相关文章:

  • 2021-10-05
  • 2021-07-04
  • 2021-10-17
  • 2022-01-07
  • 2021-11-10
  • 2021-11-07
  • 2021-05-02
  • 2022-12-23
猜你喜欢
  • 2021-12-18
  • 2021-12-05
  • 2022-02-09
  • 2022-01-08
  • 2022-02-09
  • 2021-12-21
  • 2021-08-23
相关资源
相似解决方案