当前位置: 首页 > news >正文

redis 非关系型数据库

redis 非关系型数据库

redis 非关系型数据库,缓存型数据库

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

关系型数据库是一个结构化的数据库,行和列

列:声明对象

行:记录对象的属性

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

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

非关系型数据库:nosql:not only sql

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

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

区别:

1、数据的存储方式不同

2、扩展方式,性能上的提示,关系型数据库靠的是提升本机性能。非关系型数据库,可以横向扩展,加入节点服务器的方式提高性能

3、对事务的支持性,mysql支持事务

原子性

隔离性

一致性

执行性

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

非关系型数据的主要场景:1、操作的扩展

2、海量数据处理

web2.0:交互

纯动态网站的三高问题:

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

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

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

数据库缓存:

web页面缓存

cpu和硬盘之间缓存

常见的缓存需求场景

关系型数据库:

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

非关系型数据库:

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

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

redis:开源的,使用c语言编写的一个nql数据库

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

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

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

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

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

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

redis的特点:

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

2、支持丰富的数据类型

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

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

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

面试题:

redis为什么这么快?

1、redis是纯内存结构,避免磁盘I/O的耗时

2、核心模块是一个单进程,减少了线程切换和回收线程的时间

3、I/O的多路复用机制,每一个执行线路,都可以同时执行读和写,高并发的效率大大提高

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

编译安装redis实验:

setenforce 0

systemctl stop firewalld

将安装包redis-5.0.7.tar.gz拖到opt目录下

安装环境:yum install -y gcc gcc-c++ make

解压tar -xf redis-5.0.7.tar.gz

cd redis-5.0.7/

make -j 4

make PREFIX=/usr/local/redis install

cd utils/

./install_server.sh

四个回车,第五个输入/usr/local/redis/bin/redis-server,然后回车,再回车

添加软连接ln -s /usr/local/redis/bin/* /usr/local/bin/

vim /etc/redis/6379.conf

在70行后面加上主机ip地址

重启服务:/etc/init.d/redis_6379 restart

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地址

-p 指定服务器的端口号

-c 指定并发连接数

-n 指定请求数

vim /etc/redis/

70行后面添加本机ip地址

如何进入redis

redis-cli -h 192.168.233.30 -p 6379

redis-cli:直接使用,仅限于本地,远程登陆还是需要指定目标服务器的ip地址

redis-cli -h 192.168.233.30 -p 6379

-h 指定ip地址

-p 指定端口号

-a 指定登录密码

redis数据类型:五大数据类型

1、string(字符串):也是redis最近本地类型,最大能存储512MB的数据,可以存储任何数据,数字,文字,图片等等

2、list数据类型

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

3、hash类型

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

4、set数据类型(无序集合)元素类型也是string,元素是唯一的,不允许重复,多个集合类型可以进行并集,交集和差集运算。set当中的元素类型是唯一的,可以跟踪一些唯一性的数据,访问微博的用户名,只要把对应名称redis,set集合可以自动保存唯一性方便下一次的访问

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

zset

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

存键:set test guoqi

查键:get test

在生产中查看键值,一般不用keys *,一般用keys t*或者keys t?

APPEND test1 hello:键值对不存在,会将test1写入到键值对,然后报5的长度

APPEND test1 world:键值对已存在,会将world也一并和前面的字符进行拼接,返回当前和之前的长度

STRLEN test1:直接返回键的长度

STRLEN test1:set可以直接覆盖

INCR test1:自增1

decr test1:自减1

INCRBY test1 20:指定增加数值20

ttl test:显示出来的如果是(integer) -2表示已过期

显示出来的如果是(integer) -1表示永不过期

EXPIRE test 30:对已有键值对设置生命周期。30是秒数

setex test2 15 lo:新建键值的生命周期

MSET key1 hello key2 world:同时创建多个键值对key1 key2

mget key1 key2:同时打印多个键值对的内容

RPUSH guoqi1 5:从右往左插入数据

LPUSH guoqi1 10:从左往右插入数据

LRANGE guoqi1 0 -1:查询数据

lrange guoqi1 1 2:查找数据1和2

LPOP guoqi1:从左删除

RPOP guoqi1:从右删除

LINSERT guoqi before 3 10:指定位置前面进行插入

sadd myset a a c:创建aac,但是只会有a和c,set具有唯一性

SMEMBERS myset:查看

srem myset e f c:指定移除e f c

ZCOUNT myzset 1 3:表示权重的范围:1<=scroe<=3

ZCARD myzset:获取成员数量

set和hset:创建普通类型和hash类型,一般情况下如无特殊需求,普通的创建方式即可

对一个键值进行多字段存储,节省内存,使用hash方式

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

数字排名:0-15 每个数据库之间互相独立,互不干扰

redis的特点:读写速度块

数据类型:

1、string

2、list

3、hash对一个键进行多字段操作要使用hash节省内存空间

4、无序集合 set元素不能重复,可以用来定义唯一值

5、有序集合 zset,元素不能重复,但是权重可以相同,用来排名

KEYS v* #查看当前数据库中以 v 开头的数据

KEYS v? #查看当前数据库中以 v 开头后面包含任意一位的数据

KEYS v?? #查看当前数据库中以 v 开头 v 开头后面包含任意两位的数据

EXISTS test:查看键值test是否存在,返回1表示存在,返回0表示不存在

del t1:表示删除数据库的指定t1

HSET:创建单个键值

HMSET:连续创建多个键值

select 0:切换至目标数据库 0

config set requirepass 123456:设置密码

在数据库里面登录密码:auth 123456

在数据库外面登录:redis-cli -h 192.168.233.11 -p 6379 -a 123456

默写:

1、redis的特点

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

支持丰富的数据类型

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

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

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

2、redis执行速度快的原因

redis是纯内存结构,避免磁盘I/O的耗时

核心模块是一个单进程,减少了线程切换和回收线程的时间

I/O的多路复用机制,每一个执行线路,都可以同时执行读和写,高并发的效率大大提高

3、redis的数据类型

string类型

list类型

hash类型

set类型

zset类型

面试题:

Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

Squid、Varinsh和Nginx都是代理服务器什么是代理服务器: 能当替用户去访问公网,并且能把访问到的数据缓存到服务器本地,等用户下次再访问相同的资源的时候,代理服务器直接从本地回应给用户,当本地没有的时候,我代替你去访问公网,我接收你的请求,我先在我自日的本地缓存找,如果我本地缓存有,我直接从我本地的缓存里回复你如果我在我本地没有找到你要访问的缓存的数据,那么代理服务器就会代替你去访问公网。

区别: 1)Nginx本来是反向代理/web服务器,用了插件可以做做这个副业但是本身不支持特性挺多,只能缓存静态文件:

2)从这些功能上。varnish和squid是专业的cache服务,而nginx这些是第三方模块完成

3)varnish本身的技术上优势要高于squid,它采用了可视化页面缓存技术,在内存的利用上,Varnish比Squid具有优势,性能要比Squid高。还有强大的通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存它是内存缓存,速度一流,但是内存缓存也限制了其容量,缓存页面和图片一般是挺好的;

4)squid的优势在于完整的庞大的cache技术资料,和很多的应用生产环境

工作中选择: 要做cache服务的话,我们肯定是要选择专业的cache服务,优先选择squid或者varnish。

相关文章:

redis 非关系型数据库

redis 非关系型数据库 redis 非关系型数据库&#xff0c;缓存型数据库 关系型数据库和非关系型数据库的区别&#xff1a; 关系型数据库是一个结构化的数据库&#xff0c;行和列 列&#xff1a;声明对象 行&#xff1a;记录对象的属性 表与表之间是有关联的&#xff0c;使用…...

Python配置与测试利器:Hydra + pytest的完美结合

简介&#xff1a;Hydra 和 pytest 可以一起使用&#xff0c;基于 Hydra Pytest 的应用可以轻松地管理复杂配置&#xff0c;并编写参数化的单元测试&#xff0c;使得Python开发和测试将变得更为高效。 安装&#xff1a; pip install hydra-core pytest案例源码&#xff1a;my…...

5.基于飞蛾扑火算法(MFO)优化的VMD参数(MFO-VMD)

代码的使用说明 基于飞蛾扑火算法优化的VMD参数 优化算法代码原理 飞蛾扑火优化算法&#xff08;Moth-Flame Optimization&#xff0c;MFO&#xff09;是一种新型元启发式优化算法&#xff0c;该算法是受飞蛾围绕火焰飞行启发而提出的&#xff0c;具有搜索速度快、寻优能力强的…...

爱创科技总裁谢朝晖荣获“推动医药健康产业高质量发展人物”

中国医药市场规模已经成为全球第二大医药市场&#xff0c;仅次于美国。近年来&#xff0c;随着中国经济的持续增长和人民生活水平的提高&#xff0c;医药市场需求不断扩大。政府对医疗卫生事业的投入也在不断加大&#xff0c;为医药行业的发展创造了良好的政策环境。为推动医药…...

055-第三代软件开发-控制台输出彩虹日志

第三代软件开发-控制台输出彩虹日志 文章目录 第三代软件开发-控制台输出彩虹日志项目介绍控制台输出彩虹日志实现原理真实代码 总结 关键字&#xff1a; Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QM…...

Os-hackNos-3

Os-hackNos-3 一、主机发现和端口扫描 主机发现&#xff0c;靶机地址192.168.80.145 arp-scan -l端口扫描&#xff0c;开放了22和80端口 nmap -P -sV 192.168.80.145二、信息收集 访问80端口 find the Bug You need extra WebSec翻译 找到Bug 你需要额外的网络安全路径扫描 d…...

时序预测 | Matlab实现HPO-ELM猎食者算法优化极限学习机的时间序列预测

时序预测 | Matlab实现HPO-ELM猎食者算法优化极限学习机的时间序列预测 目录 时序预测 | Matlab实现HPO-ELM猎食者算法优化极限学习机的时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现HPO-ELM猎食者算法优化极限学习机时间序列预测 1.data为数据集…...

LeetCode:307. 区域和检索 - 数组可修改(树状数组 C++)

目录 307. 区域和检索 - 数组可修改 题目描述&#xff1a; 实现代码与解析&#xff1a; 树状数组&#xff1a; 原理思路&#xff1a; 307. 区域和检索 - 数组可修改 题目描述&#xff1a; 给你一个数组 nums &#xff0c;请你完成两类查询。 其中一类查询要求 更新 数组…...

909-2015-T3

文章目录 1.原题2.算法思想2.1.求树的高度2.2.求路径 3.关键代码4.完整代码5.输出结果 1.原题 试编写算法&#xff0c;求给定二叉树上从根节点到叶子节点的一条路径长度等于树的深度减一的路径&#xff08;即列出从根节点到该叶子节点的节点序列&#xff09;&#xff0c;若这样…...

【云原生】初识 Service Mesh

目录 一、什么是Service Mesh 二、微服务发展历程 2.1 微服务架构演进历史 2.1.1 单体架构 2.1.2 SOA阶段 2.1.3 微服务阶段 2.2 微服务治理中的问题 2.2.1 技术栈庞杂 2.2.2 版本升级碎片化 2.2.3 侵入性强 2.2.4 中间件多&#xff0c;学习成本高 2.2.5 服务治理功…...

常见的8个JMeter压测问题

为什么在JMeter中执行压力测试时&#xff0c;出现连接异常或连接重置错误&#xff1f; 答案&#xff1a;连接异常或连接重置错误通常是由于服务器在处理请求时出现问题引起的。这可能是由于服务器过载、网络故障或配置错误等原因导致的。 解决方法&#xff1a; 确定服务器的…...

深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序 计算机竞赛

文章目录 0 简介1 背景意义2 数据集3 数据探索4 数据增广(数据集补充)5 垃圾图像分类5.1 迁移学习5.1.1 什么是迁移学习&#xff1f;5.1.2 为什么要迁移学习&#xff1f; 5.2 模型选择5.3 训练环境5.3.1 硬件配置5.3.2 软件配置 5.4 训练过程5.5 模型分类效果(PC端) 6 构建垃圾…...

羊大师教你如何有效解决工作中的挑战与压力?

在现代社会&#xff0c;工作问题一直是许多人头疼的难题。无论是从工作压力到职业发展&#xff0c;工作问题不仅会影响个人的心理健康&#xff0c;还可能对整个工作团队的效率和和谐产生负面影响。因此&#xff0c;如何有效解决工作问题成为了每个职场人士都需要面对的挑战。 …...

【性能测试】稳定性/并发压力测试的TPS计算+5W并发场景设计...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、稳定性测试TPS…...

人工智能的时代---AI的影响

人工智能&#xff08;AI&#xff09;是当前科技领域的一个热门话题&#xff0c;它正在以前所未有的速度改变着我们的生活方式和工作方式。从智能家居到自动驾驶&#xff0c;从智能医疗到智能金融&#xff0c;人工智能正在渗透到我们生活的方方面面。在这篇文章中&#xff0c;我…...

LeetCode 每日一题 2023/11/13-2023/11/19

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 11/13 307. 区域和检索 - 数组可修改11/14 1334. 阈值距离内邻居最少的城市11/15 2656. K 个元素的最大和11/16 2760. 最长奇偶子数组11/17 2736. 最大和查询11/18 2342. 数…...

Leetcode——169 多数元素

我的答案 class Solution {public int majorityElement(int[] nums) {int len nums.length;Arrays.sort(nums);int count 1;int res 0;if(len 1){return nums[0];}for(int i0; i<len-1; i){if(nums[i]nums[i1]){count;}else{count 1;}if(count>len/2){res nums[i]…...

vue中原生H5拖拽排序_拖拽图片也是同样的道理

原文地址【vue中原生H5拖拽排序_拖拽图片也是同样的道理】 H5有基于拖拽的事件机制&#xff0c;如果你还不熟悉&#xff0c;请看我之前的文章【拖拽上传】中有介绍。 原生拖拽API实现 由于比较简单直接上代码了&#xff1a; <!DOCTYPE html> <html lang"en&qu…...

【C语言】计算实时太阳角度(高度角、方位角),以及使用stm32单片机实时获取时间戳

整体计算方法 在编写该代码的过程中寻找了多篇博文和论文&#xff0c;综合所有文章且按网上的以0时的方位角的0&#xff0c;且随时间累加累加至360度。我修改了博文和论文的一些角度的计算方法。得到一下代码与网站计算的方位角相互验证过&#xff0c;误差不超过1 验证网站 太…...

创建git仓库

①git init&#xff1a;用于在一个现有的目录中初始化一个新的 Git 仓库。 # 进入你的项目目录&#xff0c;如果你想要在当前目录下初始化 Git 仓库。 git init 这会在当前目录下创建一个名为 .git 的子目录&#xff0c;其中包含 Git 仓库的所有必要文件和目录。&#xff08;…...

3分钟永久备份QQ空间:GetQzonehistory完整数据导出指南

3分钟永久备份QQ空间&#xff1a;GetQzonehistory完整数据导出指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还记得那些年在QQ空间留下的青春印记吗&#xff1f;从青涩的学生时代…...

Tailwind CSS如何自定义响应式断点_修改tailwind.config配置文件

修改 theme.breakpoints 是唯一有效方式&#xff0c;Tailwind 响应式类依赖构建时生成 CSS&#xff0c;运行时动态切换无效&#xff1b;必须在 tailwind.config.js 中正确配置 breakpoints 对象并重启构建服务。修改 theme.breakpoints 是唯一有效方式Tailwind 不支持运行时动态…...

DeepPCB:面向工业级PCB缺陷检测的数据集技术架构深度解析

DeepPCB&#xff1a;面向工业级PCB缺陷检测的数据集技术架构深度解析 【免费下载链接】DeepPCB A PCB defect dataset. 项目地址: https://gitcode.com/gh_mirrors/de/DeepPCB 数据集技术架构设计原理 DeepPCB数据集采用分层架构设计&#xff0c;为印刷电路板缺陷检测提…...

日志分析与数据提取技巧:从新手到专家的完整指南

日志分析与数据提取技巧&#xff1a;从新手到专家的完整指南 【免费下载链接】h4cker This repository is maintained by Omar Santos (santosomar) and includes thousands of resources related to ethical hacking, bug bounties, digital forensics and incident response …...

5分钟掌握批量照片水印添加:摄影师的智能EXIF信息处理利器

5分钟掌握批量照片水印添加&#xff1a;摄影师的智能EXIF信息处理利器 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具&#xff0c;后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 摄影爱好者和专业摄影师经常…...

深度探索DIY Layout Creator:开源电路设计工具的设计哲学与创作实践

深度探索DIY Layout Creator&#xff1a;开源电路设计工具的设计哲学与创作实践 【免费下载链接】diy-layout-creator multi platform circuit layout and schematic drawing tool 项目地址: https://gitcode.com/gh_mirrors/di/diy-layout-creator 在电子设计领域&…...

总行vs分行vs软开vs金科子:银行科技4大去处怎么选?

总行vs分行vs软开vs金科子&#xff1a;银行科技4大去处怎么选&#xff1f;去年校招&#xff0c;我室友拿了4个offer&#xff1a;一个总行科技&#xff0c;年包28w一个省分科技&#xff0c;年包18w一个软开中心&#xff0c;年包35w一个金科子公司&#xff0c;年包40w他纠结了整整…...

别再傻傻分不清!5分钟搞懂ROM、PROM、EPROM、EEPROM在嵌入式开发中的选型指南

嵌入式开发中的存储器选型实战&#xff1a;从原理到避坑指南 在物联网设备和嵌入式系统开发中&#xff0c;存储器的选择往往决定着产品的可靠性、成本和后期维护难度。面对市面上琳琅满目的ROM、PROM、EPROM和EEPROM&#xff0c;不少工程师在项目初期都会陷入选择困难——究竟哪…...

我用 n8n + SerpBase 搭了一套自动 SEO 监控系统,每月成本不到 40 块

之前我每个月花 800 多块订阅一个 SEO 排名监控工具。功能确实全&#xff0c;每天早上发邮件告诉我 30 个关键词排第几。但说实话&#xff0c;我根本用不了那么多功能——我要的其实就是一个定时任务 一个数据库 一个告警&#xff0c;结果被包装成了 SaaS 按月收我钱。 上个…...

3步完全掌控Alienware灯光与风扇:告别AWCC臃肿软件的高效方案

3步完全掌控Alienware灯光与风扇&#xff1a;告别AWCC臃肿软件的高效方案 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 厌倦了Alienware Command Cen…...