非关系型数据库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:元素不能重复,但是权重可以相同,用来排名 )

相关推荐
夜泉_ly2 小时前
MySQL -安装与初识
数据库·mysql
qq_529835353 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New5 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6755 小时前
数据库基础1
数据库
我爱松子鱼5 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo6 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser7 小时前
【SQL】多表查询案例
数据库·sql
Galeoto7 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)7 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231117 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql