• 非关系型数据库Redis(缓存型数据库)


    关系型数据库和非关系型数据库的区别

    关系型数据库

    是一个结构化的数据库,记录方式是行(记录对象属性)和列(声明对象)

    表与表之间是有关联的,使用sql语句来对指定的表、库进行增删改查

    在创建表的时候,我们是设计好了表的结构。按照表结构来存储数据,数据与表结构不匹配,存储数据会失败

    非关系型数据库(nosql   not only sql)

    不需要定义库,也不需要定义表结构,直接记录即可,而且每条记录都可以有不同的数据类型、字段(字段个数)

    redis key:value 键值对形式存储。每个键之间没有直接关联,库与库之间互相独立

    区别

    1、数据存储方式不同

    2、扩展方式不同。性能上的提升

    关系型数据库靠的是提升本机性能

    非关系型数据库可以横向扩展,加入节点服务器的方式提高性能

    3、对事物支持性不同

    MySQL:原子性、隔离性、一致性、持久性

    非关系型数据库redis也支持事物,但是稳定性和处理能力都不如关系型数据库

    非关系型数据库的主要场景

    1、操作的扩展

    2、海量数据处理

    web2.0核心特点:交互

    纯动态网站的三高问题

    1、对数据库高并发读写的需求

    2、对海量数据高效存储与访问的需求

    3、对数据库的高可扩展性与高可用性的需求

    常见的需求场景

    1、数据库缓存

    2、web页面缓存

    3、CPU和硬盘之间缓存

    关系型数据库

    库 ---- 表 ---- 行、列 ---- 存储数据

    非关系型数据库

    库 ---- 集合 ---- 键值对

    (不需要手动的创建库和集合)

    redis 开源的、使用C语言编写的nosql数据库

    redis 基于内存运行,支持持久化(数据恢复)。采用的就是key-value(键值对)的存储形式。目前在分布式架构中非常重要的一环

    redis服务器是单进程模式,即只有一个主进程工作。也就是说,在一台服务器上可以启动多个redis(端口号不能冲突)

    redis的实际处理速度是完全依靠主进程的执行效率

    服务器只部署了一个redis,多个客户端访问可能会导致redis处理能力下降

    服务器部署多个redis进程,虽然能提高redis并发处理能力,但是会给服务器的CPU带来很大的压力

    一般来说,一台服务器部署三个redis进程(根据情况来看。高并发要部署多个。一般情况单进程足矣)

    redis特点

    1、具有极高的读写速度,数据读取每秒110000次,写入数据每秒可以执行81000次

    2、支持丰富的数据类型

    3、支持持久化。平常的数据都是保存在内存中,持久化可以写入到磁盘中,既可以保存到本地,也可以实现备份。

    4、原子性,所有的操作都是原子性

    5、支持主从模式 master-slave模式

    面试:redis为什么这么快?

    答:①redis是纯内存结构,避免了磁盘I/O的耗时; ②核心模块是一个单进程,减少了线程切换和收回线程的时间; ③I/O的多路复用机制(每个执行线路都可以同时执行读和写,大大提高并发的效率);

    *特殊说明:redis的读写仍然是单进程处理

    redis服务控制命令

    /etc/init.d/redis_6379 +stop start restart status

    redis的命令工具

    redis-server  直接启动redis(只能启动)

    redis-benchmark  检测redis再本机运行的效果

    redis-cli  命令行工具

    redis-check-aof  检测aof持久性是否正常

    redis-check-rdb  检测rdb持久性是否正常

    redis-benchmark -h  指定服务器的主机名、IP地址

    redis-benchmark -p  指定服务器的端口号

    redis-benchmark -c  指定并发连接数

    redis-benchmark -n  指定请求数

    如何进入redis

    redis-cli -h 192.168.233.10 -p 6379  远程登录还是需要指定目标服务器的IP地址

    redis-cli  仅限于本地

    redis cli -h 192.168.233.10 -p 6379

    -h 指定IP地址

    -p 指定端口号

    a 指定登录密码

    redis的五大数据类型

    1、string (字符串) 也是redis最基本类型,最大能存储512MB的数据,可以存储任何数据(包括但不限于:数字、文字、图片等)

    2、list数据类型

    列表当中的元素还是string类型

    3、hash类型

    hash类型用于存储对象,采用hash格式进行操作。hash占用的磁盘空间少,而且一个hash存储4294967295个键值对

    4、set数据类型(无序集合)

    元素类型也是string。列表里的元素是唯一的,不可以重复。多个集合之间可以进行并集、交集、差集的运算

    set当中的元系类型是唯一的,可以跟踪一些唯一性的数据。访问微博的用户名。只要把对应的名称写入redis,set集合可以自动保存,唯一性,方便下次访问

    5、有序集合

    有序集合元素类型也是string,元素也不能重复,唯一。每个元素都会关联一个double(小数点)的分数(score,表示权重),可以通过权重的大小进行排序。元素的权重可以相同

    zset

    在线积分的排行榜,可以实时更新用户的分数。zrange命令获取积分top10的用户。zrank命令通过username获取玩家的排行信息

    redis其他数据类型

    位图(BitMap)

    存储位数据,可以进行位级别的操作。

    常用命令:SETBIT、GETBIT、BITCOUNT。

    HyperLogLog

    用于基数估算的数据结构。

    常用命令:PFADD、PFCOUNT。

    地理位置(GeoSpatial)

    存储地理位置信息。

    常用命令:GEOADD、GEODIST、GEORADIUS

    ZCOUNT myzset 1 3  表示权重1<= scroe <=3

    set和hset 创建普通类型和hash类型,一般情况下,如无特殊需求,普通的创建方式即可;对一个键进行多字段存储,节省内存,使用hash方式

    DBSIZE  查看当前库键的数量

    redis的库(库都是创建好的,16个库)

    按照数字排名:0-15 互相独立

    redis特点

    1、读写速度快

    2、数据类型(①string;②list;③hash对一个键进行多字段操作要用hash节省内存空间;④无序集合set:元素不能重复,可以用来定义唯一值;⑤有序集合zset:元素不能重复,但是权重可以相同,用来排名 )

  • 相关阅读:
    32.JavaScript类数组(Array-like)和可迭代对象(Iterable-object)的实现原理
    Docker极简入门:使用Docker-Compose 运行网站浏览量统计Demo
    万字长文Python面试题,建议先收藏
    Scala技术与架构-1
    聊聊spring事务的REQUIRES_NEW
    基于springboot人事管理系统设计与实现
    DDD.从引进到落地
    【SpringBoot】静态资源的访问
    海康/大华/华为等摄像头或者录像机无法通过GB28181注册到国标平台LiveGBS的问题排查方法...
    【三】ElasticSearch 索引操作
  • 原文地址:https://blog.csdn.net/a91888888/article/details/134508505