技术分享
4️⃣Redis
00 分钟
2024-4-11
2024-4-22
type
status
date
Apr 22, 2024 01:03 PM
slug
summary
category
tags
password
icon

初识Redis

Redis是一种键值型的NoSQL数据库,这里有两个关键字
  • 键值型
  • NoSQL
其中键值型是指Redis中存储的数据都是以Key-Value键值对的形式存储,而Value的形式多种多样,可以是字符串、数值甚至Json
而NoSQL则是相对于传统关系型数据库而言,有很大差异的一种数据库

认识NoSQL

NoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库

结构化与非结构化

  • 传统关系型数据库是结构化数据,每张表在创建的时候都有严格的约束信息,如字段名、字段数据类型、字段约束等,插入的数据必须遵循这些约束
  • 而NoSQL则对数据库格式没有约束,可以是键值型,也可以是文档型,甚至是图格式

关联与非关联

  • 传统数据库的表与表之间往往存在关联,例如外键约束
  • 而非关系型数据库不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合
JSON
例如此处要维护张三与两个手机订单的关系,不得不冗余的将这两个商品保存在张三的订单文档中,不够优雅,所以建议使用业务逻辑来维护关联关系

查询方式

  • 传统关系型数据库会基于Sql语句做查询,语法有统一的标准
    • 而不同的非关系型数据库查询语法差异极大

      事务

      • 传统关系型数据库能满足事务的ACID原则(原子性、一致性、独立性及持久性)
      • 而非关系型数据库往往不支持事务,不保证关系数据的ACID特性

      存储方式

      • 关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响
      • 非关系型数据库,他们的操作更多的是依赖于内存来操作,内存的读写速度会非常快,性能自然会好一些

      扩展性

      • 关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展
      • 非关系型数据库可以将数据拆分,存储在不同机器上,可以保存海量数据,解决内存大小有限的问题。称为水平扩展
      • 关系型数据库因为表之间存在关联关系,如果做水平扩展会给数据查询带来很多麻烦

      总结

      SQL
      NoSQL
      数据结构
      结构化(Structured)
      非结构化
      数据关联
      关联的(Relational)
      无关联的
      查询方式
      SQL查询
      非SQL
      事务特性
      ACID
      BASE
      存储方式
      磁盘
      内存
      扩展性
      垂直
      水平
      使用场景
      1)数据结构固定 2)对一致性、安全性要求不高
      1)数据结构不固定 2)相关业务对数据安全性、一致性要求较高 3)对性能要求高

      认识Redis

      Redis诞生于2009年,全称是Remote Dictionary Server(远程词典服务器),是一个基于内存的键值型NoSQL数据库。
      💡
      特征:
      • 键值(Key-Value)型,Value支持多种不同的数据结构,功能丰富
      • 单线程,每个命令具有原子性
      • 低延迟,速度快(基于内存、IO多路复用、良好的编码)
      • 支持数据持久化
      • 支持主从集群、分片集群
      • 支持多语言客户端
      Redis官网:https://redis.io/

      安装Redis

      环境配置:
      系统:CentOS7
      Redis:6.2.6

      依赖库

      Redis是基于C语言编写的,因此首先需要安装Redis所需要的gcc依赖:

      上传安装包并解压

      上传Redis安装包上传到虚拟机的/usr/local/src目录:
      如果没有出错,应该就安装成功了。
      如何验证已经安装成功?认的安装路径是在 /usr/local/bin目录下。
      该目录已经默认配置到环境变量,因此可以在任意目录下运行这些命令。cd /usr/local/bin && ll其中:
      • redis-cli:是redis提供的命令行客户端
      • redis-server:是redis的服务端启动脚本
      • redis-sentinel:是redis的哨兵启动脚本,Redis 集群使用
      • redis-benchmark:性能测试工具,可以在自己机器运行,看看自己机器性能如何
      • redis-check-aof:修复有问题的AOF 文件,rdb 和aof 后面讲
      • redis-check-dump:修复有问题的dump.rdb 文件

      启动

      redis的启动方式有很多种,例如:
      默认启动
      • 安装完成后,在任意目录输入redis-server命令即可启动Redis。
      • 这种启动属于前台启动,会阻塞整个会话窗口,窗口关闭或者按下CTRL + C则Redis停止。不推荐使用。
      指定配置启动
      • 如果要让Redis以后台方式启动,则必须修改Redis配置文件,在/usr/local/src/redis-6.2.6/redis.conf
      开机自启

      Redis桌面客户端

      安装完成Redis,我们就可以操作Redis,实现数据的CRUD了。这需要用到Redis客户端,包括:
      • 命令行客户端
      • 图形化桌面客户端
      • 编程客户端

      Redis命令行客户端

      Redis安装完成后就自带了命令行客户端:redis-cli,使用方式如下:
      其中常见的options有:
      • -h 127.0.0.1:指定要连接的redis节点的IP地址,默认是127.0.0.1
      • -p 6379:指定要连接的redis节点的端口,默认是6379
      • -a 123321:指定redis的访问密码
      其中的commonds就是Redis的操作命令,例如:
      • ping:与redis服务端做心跳测试,服务端正常会返回pong

      图形化桌面客户端

      • Redis默认有16个仓库,编号从0至15. 通过配置文件可以设置仓库数量,但是不超过16,并且不能自定义仓库名称。
      • 如果是基于redis-cli连接Redis服务,可以通过select命令来选择数据库
         

        评论
        Loading...