「Redis」01 NoSQL及Redis概述

笔记整理自【尚硅谷】Redis 6 入门到精通 超详细 教程

Redis——NoSQL及Redis概述

技术的分类

  • 解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN
  • 解决扩展性的问题:Struts、Spring、SpringMVC、Hibernate、Mybatis
  • 解决性能的问题:NoSQL、Java线程、Hadoop、Nginx、MQ、ElasticSearch

NoSQL数据库是为了解决性能问题而产生的一种技术,而 Redis 就是典型的 NoSQL 数据库。

1. NoSQL数据库

Ⅰ. NoSQL数据库概述

NoSQL (NoSQL = Not Only SQL),意即 “不仅仅是SQL”,泛指 非关系型的数据库

NoSQL 不依赖业务逻辑方式存储,而以简单的 key-value 模式存储。因此大大的增加了数据库的扩展能力。

  • 不遵循SQL标准
  • 不支持ACID
  • 远超于SQL的性能

NoSQL适用场景

  • 对数据高并发的读写
  • 海量数据的读写
  • 对数据高可扩展性的

NoSQL不适用场景

  • 需要事务支持
  • 基于sql的结构化查询存储,处理复杂的关系,需要即席查询
  • (用不着sql的和用了sql也不行的情况,请考虑用NoSql)

NoSQL解决问题

  • 解决 CPU 及内存压力

    image-20220919162955142

  • 解决 IO 压力

    image-20220919163017020

Ⅱ. 常见的NoSQL数据库对比

Memcache
img ✔️ 很早出现的NoSql数据库
✔️ 数据都在内存中,一般不持久化
✔️ 支持简单的 key-value 模式,支持类型单一
✔️ 一般是作为缓存数据库辅助持久化的数据库
Redis
img ✔️ 几乎覆盖了 Memcached 的绝大部分功能
✔️ 数据都在内存中,支持持久化,主要用作备份恢复
✔️ 除了支持简单的 key-value 模式,还支持多种数据结构的存储,比如 list、set、hash、zset 等。
✔️ 一般是作为缓存数据库辅助持久化的数据库
MongoDB
img ✔️ 高性能、开源、模式自由 (schema free) 的文档型数据库
✔️ 数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘
✔️ 虽然是 key-value 模式,但是对 value (尤其是 json) 提供了丰富的查询功能
✔️ 支持二进制数据及大型对象
✔️ 可以根据数据的特点替代RDBMS ,成为独立的数据库。或者配合RDBMS,存储特定的数据。

2. Redis概述及安装

Ⅰ. 概述

  • Redis 是一个开源key-value 存储系统。
  • Memcached 类似,它支持存储的 value 类型相对更多,包括 string (字符串)、list (链表)、set (集合)、zset (sorted set – 有序集合)、hash (哈希类型)
  • 这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
  • 在此基础上,Redis 支持各种不同方式的排序
  • memcached一样,为了保证效率,数据都是缓存在内存中。
  • 区别的是 Redis周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
  • 并且在此基础上实现了 master-slave (主从) 同步。
  • 单线程 + I/O 多路复用。

配合关系型数据库做高速缓存

  • 高频次,热门访问的数据,降低数据库 I/O

  • 分布式架构,做 session 共享

image-20220917195536915

多样的数据结构存储持久化数据

image-20220917195938270

Ⅱ. 安装

Redis官方网站Redis中文官方网站
http://redis.iohttp://redis.cn/
  • 6.2.1 for Linuxredis-6.2.1.tar.gz

    ➢ 不用考虑在windows环境下对Redis的支持

  • 安装 C 语言的编译环境

    yum install centos-release-scl scl-utils-build
    yum install -y devtoolset-8-toolchain
    scl enable devtoolset-8 bash
    
  • 测试 gcc 版本

    gcc --version
    

    image-20220917210549021

  • 下载 redis-6.2.1.tar.gz 放置 /opt 目录

    image-20220917210348610

  • 解压至当前目录

    tar -zxvf redis-6.2.1.tar.gz
    
  • 解压完成后进入目录

    cd redis-6.2.1
    
  • 在redis-6.2.1目录下再次执行 make 命令(只是编译好)

    make
    

    image-20220917211049803

    image-20220917211111693

  • 跳过 make test 继续执行:make install

    make install
    

    image-20220917211144963

  • 默认安装在 /usr/local/bin

    image-20220917211303920

    redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何
    redis-check-aof:修复有问题的AOF文件,rdb和aof后面讲
    redis-check-dump:修复有问题的dump.rdb文件
    redis-sentinel:Redis集群使用
    redis-server:Redis服务器启动命令
    redis-cli:客户端,操作入口
    
  • 前台启动(不推荐)

    前台启动,命令行窗口不能关闭,否则服务器停止。

    /usr/local/bin 目录下启动 redis

    redis-server
    
  • 后台启动(推荐)

    ➢ 备份 redis.conf

    安装 redis 的目录 /opt/redis-6.2.6 中将 redis.conf 复制到任意一个文件夹下

    cp redis.conf /etc/redis.conf
    // 将redis.conf复制到/etc/下
    

    ➢ 修改 /etc/redis.conf 配置文件

    修改 redis.conf (我的在128行 ) 文件将里面的 daemonize no 改成 yes,让服务在后台启动。

    vim redis.conf
    

    image-20220917212336191

    /usr/local/bin 目录下启动 redis

    redis-server /etc/redis.conf
    
  • 查询 redis 是否启动

    ps -ef | grep redis
    

    image-20220917212518102

  • 用客户端访问 redis

    redis-cli
    

    image-20220917212710094

  • 测试验证

    ping
    

    image-20220917212723825

  • 关闭 redis

    kill 进程

    ➢ 命令 shutdown

    image-20220917212847070

Ⅲ. Redis相关知识介绍

端口 6379 从何而来
Alessia Merz => 九键
image-20220917213342199默认16个数据库,类似数组下标从 0 0 0 开始,初始默认使用 0 0 0 号库
使用命令 select <dbid> 来切换数据库。如: select 8
统一密码管理,所有库同样密码。

Redis 是单线程 + 多路 IO 复用技术

多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)。

串行 vs 多线程 + 锁 (memcached) vs 单线程 + 多路 IO 复用 (Redis)

  • 与Memcache三点不同:支持多数据类型,支持持久化,单线程 + 多路IO复用(效率更高)

image-20220917215439480

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小成同学_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值