NoSQL之 Redis介绍与配置

目录

一、关系数据库和非关系数据库概述

1、关系型数据库

2、非关系型数据库

二、关系数据库和非关系数据库的区别

1、数据存储格式不同

2、扩展方式不同

3、对事务的支持不同

三、非关系数据库产生背景

1、总结

四、Redis简介

1、 Redis的单线程模式

2、Redis优点

3、Redis为什么那么快

4、Redis的缺点

五、Redis安装部署

六、Redis命令工具 

1、redis-cli命令行工具

2、redis-benchmark 测试工具

3、Redis 数据库常用命令

4、Redis 多数据常用命令

七、总结


一、关系数据库和非关系数据库概述

1、关系型数据库

关系数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向记录。

SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行关系型数据库中数据的检索和操作。

主流的关系型数据库包括:oracle、mysql、sqlserver、Microsoft access、db2等

优点

  • 易于维护: 都是使用表结构,格式一致
  • 使用方便: sql语言通用,可用于复杂查询
  • 支持复杂操作, 支持sql,可用于一个表以及多个表之间非常复杂的查询

缺点

  • 读写性能比较差, 尤其是海量数据的高效读写
  • 固定的表结构, 灵活度差
  • 数据存储在磁盘, 高并发读写容易遇到瓶颈

2、非关系型数据库

NoSQL(NoSQL = Not Only SQL),表示为不仅仅是SQL,是非关系型数据库的总称,除了主流的关系型数据库外的数据库,都认为是非关系型。

  • 主流的NoSQL数据库有Redis、MongoDB、Hbase、CouhDB等

二、关系数据库和非关系数据库的区别

主要区别分为三种:①数据存储的格式不同,②扩展方式不同,③对事物的处理不同

1、数据存储格式不同

关系型和非关系型数据库的主要差异是数据存储的方式,关系型数据就是表格式的因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。

非关系数据不适合在数据表的行和列中,而是大块组合在一起非关系数据通常存储在数据集中,就像文档、键值对或者图结构,你的数据及其特性是选择数据存储和提取方式的首要因数。

2、扩展方式不同

SQL和NoSQL数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。

要支持更多并发量,SQL数据库是纵向扩展。也就是说提高处理能力,使用速度更快的计算机,这样处理相同的数据集就更快了,因为数据存储在关系表中,操作的性能瓶颈可能涉及到很多个表,这都需要通过计算机性能来克服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。

 NoSQL数据库是横向扩展。因为非关系数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。

3、对事务的支持不同

如果数据操作需要高事务性或者数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定方面考虑是你最佳选择, SQL数据库支持对事务原子性细粒度控制。并且易于回滚事务。

虽然NoSQL数据库也可以使用事务操作,但稳定方面没法和关系型数据库比较所以真正的优势还是在于扩展性和大数据量处理方面。
 

三、非关系数据库产生背景

关系型数据库和非关系型数据库都有各自的特点与应用场景,两者的紧密结合将会给Web2.0的数据库发展带来新的思路。让关系数据库关注在关系上,非关系型数据库关注在存储上。例如,在读写分离的MySQL数据库环境中,可以把经常访问的数据存储在非关系型数据库中,提升访问速度。

可用于web2.0纯动态网站类型的问题。 高并发、高效存储、高扩展高、高可用

1、Hight performance ---- 对数据库高并发读写需求。

2、Huge Storage------ -对海量数据高效存储访问需求

3、Hight Scalability && Hight Availabity ----- 对数据高扩展性与高可用性需求。

1、总结

关系型数据库

实例(服务器)-----》数据库----》集合(collection)—》键值对(key-value)

 非关系型数据库

实例(服务器)----》数据库----》表(table)----》记录行(row)、数据字段(coulumn)---》存储数据

四、Redis简介

Redis 是一个开源的,使用C语言编写的NoSQL数据库。

Redis基于内存运行并支持持久化,采用key-balues(键值对)的存储形式,是目前分布架构中不可或缺的一环。

Redis服务器程序时单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是完全依靠主进程的执行效率。若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降,若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力。

即:在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程,若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程,若CPU资源比较紧张,采用单进程即可。

1、 Redis的单线程模式

Redis服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程。Redis 实际处理速度则是完全依靠于主进程的执行效率。

若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力会有一定程度的下降。

若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会服务器的CPU造成很大压力。

在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程,若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程,若CPU资源紧张,采用单线程即可。

2、Redis优点

①具有极高的数据读写速度: 数据读取的速度最高可达到110000次/s,数据写入速度最高可达到81000次/s。

②支持丰富的数据类型 持key-values、string字符串、lists列表、hashes散列值、sets集合 及 ordered sets等数据类型操作。

③支持数据的持久化: 可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

④操作方式 原子性: redis所有操作都是原子性的。

⑤支持数据备份: 即master-salve模式的数据备份。

⑥分布式

⑦默认使用epoll + i/o 多路复用来提高并发能力。

Redis作为基于内存运行的数据库,缓存是其最常用的场景之一。除次之外,redis常见应用场景还包括获取最近N个数据的操作、排行榜类应用、计数器、存储关系、实时分析系统、日志记录。

3、Redis为什么那么快

①数据在内存中的结构,避免在磁盘中操作

②redis命令核心模块是单线程

③采用i/o多路复用机制,提高并发效率

4、Redis的缺点

数据容量受到物理内存的限制,不能用于海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

五、Redis安装部署

systemctl stop firewalld
setenforce 0
#关闭防火墙yum install -y gcc gcc-c++ make
#安装依赖环境tar zxvf redis-5.0.7.tar.gz -C /opt/
#将redis包进行解压cd /opt/redis-5.0.7/
make
make PREFIX=/usr/local/redis install
#进行编译安装

cd /opt/redis-5.0.7/utils
./install_server.sh
......					#一直回车
Please select the redis executable path [/usr/local/bin/redis-server] /usr/local/redis/bin/redis-server  	
#需要手动修改为 /usr/local/redis/bin/redis-server ,注意要一次性正确输入
----------------------------------------------------------------------------------------------------------
Selected config:
Port           : 6379								#默认侦听端口为6379
Config file    : /etc/redis/6379.conf				#配置文件路径
Log file       : /var/log/redis_6379.log			#日志文件路径
Data dir       : /var/lib/redis/6379				#数据文件路径
Executable     : /usr/local/redis/bin/redis-server	#可执行文件路径
Cli Executable : /usr/local/bin/redis-cli			#客户端命令工具

路径位置描述
port :6379默认侦听端口6379
config file :/etc/redis/6379.conf配置文件路径
Log file :/var/log/redis_6379.log日志文件路径
Executable :/usr/local/redis/bin/redis-server可执行文件路径
Cli Executable :/usr/local/bin/redis-cli客户端命令工具
#把redis的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/redis/bin/* /usr/local/bin/#当 install_server.sh 脚本运行完毕,Redis 服务就已经启动,默认监听端口为 6379
netstat -natp | grep redis#Redis 服务控制/etc/init.d/redis_6379 stop				#停止
/etc/init.d/redis_6379 start			#启动
/etc/init.d/redis_6379 restart			#重启
/etc/init.d/redis_6379 status			#状态

#修改配置 /etc/redis/6379.conf 参数
vim /etc/redis/6379.conf
bind 127.0.0.1 192.168.10.23				#70行,添加 监听的主机地址
port 6379									#93行,Redis默认的监听端口
daemonize yes								#137行,启用守护进程
pidfile /var/run/redis_6379.pid				#159行,指定 PID 文件
loglevel notice								#167行,日志级别
logfile /var/log/redis_6379.log				#172行,指定日志文件/etc/init.d/redis_6379 restart
#重启服务

六、Redis命令工具 

redis-server		用于启动 Redis 的工具
redis-benchmark		用于检测 Redis 在本机的运行效率
redis-check-aof		修复 AOF 持久化文件
redis-check-rdb		修复 RDB 持久化文件
redis-cli	 		Redis命令行工具

1、redis-cli命令行工具

若不添加任何选项表示,则使用127.0.0.1:6379连接本机上的Redis数据库

选项描述
-h指定远程主机
-p指定redis服务的端口
-a指定密码,末设置数据库密码可以省略-a选项
语法:
redis-cli -h host -p port -a password例:
redis-cli -h 192.168.247.80 -p 6379
#登录数据库(没有密码,所有不需要加-a)

2、redis-benchmark 测试工具

redis-benchmark 是官方自带的Redis性能测试工具,可以有效的测试Redis服务的性能。

基础的测试语法:
redis-benchmark 【选项】 【选项值】
选项功能
-h指定服务器主机名
-p指定服务器端口
-s指定服务器socket
-c指定并发连接数
-n指定请求数
-d以字节的形式指定SET/GET值的数据大小
-k1=keep alive 0=reconnect
-rSET/GET/INCR 使用随机key,SADD使用随机值
-P通过管道传输
-q强制退出redis,进显示query/sec值
-csv以csv格式输出
-l生成循环,永久执行测试
-t仅运行以逗号分隔的测试命令列表
-lldle模式,仅打开N个idle连接并等待

向IP地址为192.168.247.80、端口为6379的Redis服务器发送100个并发连接和100000个请求测试性能

redis-benchmark -h 192.168.247.80 -p 6379 -c 100 -n 100000

测试存取大小为100字节的数据包的性能 

redis-benchmark -h 192.168.247.80 -p 6379 -q -d 100

测试本机上Redis服务在进行set与lpush操作时的性能 

redis-benchmark -t set,lpush -n 100000 -q

3、Redis 数据库常用命令

set		#存放数据,命令格式为 set key value
get		#获取数据,命令格式为 get key
keys 	#命令可以取符合规则的键值列表,通常情况可以结合*、?等选项来使用。
exists 	#命令可以判断键值是否存在。
del 	#命令可以删除当前数据库的指定 key。
type 	#命令可以获取 key 对应的 value 值类型。
dbsize  #命令的作用是查看当前数据库中 key 的数目。
rename  #命令是对已有 key 进行重命名。(覆盖)
renamenx 
#命令的作用是对已有 key 进行重命名,并检测新名是否存在,如果目标 key 存在则不进行重命名。(不覆盖)
dbsize  #命令的作用是查看当前数据库中 key 的数目。
config set requirepass  
#命令设置密码
config set requirepass  
#查看密码

3.1 set get命令

3.2 keys命令

3.3 exists 命令

3.4 del 命令

3.5 type命令

3.6 rename命令

使用rename命令进行重命名时,无论目标key是否存在都进行重命名,且源key的值会覆盖目标key的值。在实际使用过程中,建议先用 exists 命令查看目标 key 是否存在,然后再决定是否执行 rename 命令,以避免覆盖重要数据。

3.7 renamenx 命令

此命令的作用是对已有 key 进行重命名,并检测新名是否存在,如果目标 key 存在则不进行重命名。(不覆盖)

3.7 dbsize 命令

3.7 设置临时密码

使用config get requirepass命令查看密码(一旦设置密码,必须先验证通过密码,否则所有操作不可用)

4、Redis 多数据常用命令

  • Redis支持多数据库,Redis默认情况下包含16个数据库,数据库名称为:0-15依次技术。

  • 每个数据库相互独立,互不干扰

  • 使用select 命令进行切换数据库,初始进入数据库默认在0号库

#多数据库间切换
命令格式:select 序号

#多数据库间移动数据
格式:move 键值 序号

#清除数据库内数据
flushdb :清空当前数据库数据
flushall :清空所有数据库的数据,慎用!

七、总结

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

关系数据库

  • 安全性高(持久性)
  • 事务处理能力强
  • 任务控制能力强
  • 可基于日志备份、恢复、容灾、能力更强

非关系数据库

  • 将数据保存在内存中,利于读取查询数据
  • 架构中位置非常灵活
  • 分布式、扩展性高。

主要区别

  • 关系数据库存储的格式是以表格式存储,非关系数据库时大块组合一起。比如键值对
  • 关系数据库扩展是纵向扩展,就是添加设备硬件,非关系数据库可以横向扩展,实现分布式,通过节点来分摊压力
  • 关系数据库支持事务,对于性能和查询来说稳定性强,而且还可以回滚操作,非关系数据库相对来说没有关系数据库稳定,

非关系数据库的优势

  • 对数据高并发读写需求,对数据高效存储与访问需求,对数据高扩展性高可用性需求

redis优点

①读写速度快

②支持丰富的数据类型

③支持数据的持久性

④操作方式原子性

⑤支持数据备份mater - slave

为什么那么快

①数据在内存中的结构,避免在磁盘中操作

②redis命令核心模块是单线程

③采用i/o多路复用机制,提高并发效率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/132528.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图的基本知识

图 一、图的定义和基本术语二、图的存储结构(1)数组(邻接矩阵表示法)(2)数组(邻接矩阵)的实现(3)邻接表(链式表示法)(4&am…

释放潜能!RunnerGo:性能测试的全新视角

在数字化时代,性能测试已成为企业持续发展的关键一环。但面对繁杂的工具和流程,很多企业却陷入了无从选择的困境。现在,一款名为RunnerGo的全新性能测试工具正悄然崭露头角。 RunnerGo,一款由国内开发者自主研发的全栈式性能测试…

模拟实现C语言--strlen函数

模拟实现C语言–strlen函数 模拟实现C语言--strlen函数一、strlen函数是什么?二、strlen函数的模拟实现2.1 计数器方式实现strlen函数2.2 不创建临时变量计数器方式实现strlen函数2.3 指针-指针方式实现strlen函数 三、strlen函数的返回类型 一、strlen函数是什么&a…

使用Spring Gateway为对象存储系统MinIo和kkFileView文档预览增加登录验证

文章目录 1、kkfileview下载部署1.1、安装包部署运行1.1.1、物理机或虚拟机上运行1.1.2、Docker容器环境环境运行 1.2、接入说明 2、使用Spring Gateway增加登录认证2.1、网关实现代码2.2、文件服务实现代码2.3、Demo运行效果 官网介绍:kkFileView为文件文档在线预览…

易点易动固定资产管理系统:为企业提供高效资产管理的必备利器

在如今竞争激烈的商业环境中,企业对于固定资产的管理显得尤为重要。然而,传统的手工管理方式已经无法满足企业对于高效、准确、智能化管理的需求。因此,引入一款先进的固定资产管理系统是必不可少的。易点易动固定资产管理系统作为一款领先的…

C#自定义控件组件实现Chart图表(多Y轴,选择图例加粗,选择放大,缩放,点击查看信息等功能)

先看看ECharts的效果 C# 工具箱里的Chart控件就不演示了,很多效果没办法做出来,做出来效果也很不理想。所以,需要自己去手动实现工具箱里的Chart没办法实现的效果; 先看看实现后的效果 绑定数据 点击图表 点击右侧图例加粗 选择放大 右键 点击缩小,恢复

重建大师提交空三后引擎状态是等待,怎么开启?

答:图片中这是在自由网空三阶段,整个AT都是等待中,可以修改任务目录和监控目录看一下,先设置引擎,再提交空三。

建站系列(三)--- 网络协议

目录 相关系列文章前言一、定义二、术语简介三、协议的组成要素四、网络层次划分五、常见网络协议划分六、常用协议介绍(一)TCP/IP(二)HTTP协议(超文本传输协议)(三)SSH协议 相关系列…

DC/DC开关电源学习笔记(五)开关电源的主要技术指标

(五)开关电源的主要技术指标 1.输入参数2.输出参数3.效率4.电压调整率和负载调整率5.动态特性:负载突变时输出电压的变化6.电源启动时间(Set-Up Time)与保持时间(Hold-Up Time)1.输入参数 输入电压大小,交流还是直流,相数,频率等。 2.输出参数 输出功率,输出电压,输出…

算法-26. 删除有序数组中的重复项-⭐

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k ,你需要做…

2023-9-10 集合-Nim游戏

题目链接&#xff1a;集合-Nim游戏 #include <iostream> #include <cstring> #include <algorithm> #include <unordered_set>using namespace std;const int N 110, M 10010;int n, m; int s[N], f[M];int sg(int x) {if(f[x] ! -1) return f[x];//…

NeuroFlash:AI文章写作与生成工具

【产品介绍 ​ 】 名称 NeuroFlash 上线时间 2015 具体描述 Neuroflash是一款基于人工智能的文本和图像生成器&#xff0c;可以帮助用户快速创建高质量的内容。Neuroflash拥有超过100种短文和长文的文本类型&#xff0c;涵盖了各种营销场景和需求。只需要输入简单的指示&#…

云计算与虚拟化

一、概念 什么是云计算&#xff1f; 云计算&#xff08;cloud computing&#xff09;是分布式计算的一种&#xff0c;指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序&#xff0c;然后&#xff0c;通过多部服务器组成的系统进行处理和分析这些小程序得到结果…

【LeetCode】210. 课程表 II——拓扑排序

题目链接&#xff1a;210. 课程表 II 题目描述&#xff1a; 现在你总共有 numCourses 门课需要选&#xff0c;记为 0 到 numCourses - 1。给你一个数组 prerequisites &#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示在选修课程 ai 前 必须 先选修 bi 。 例如…

gmssl v2 用 dgst 命令通过 sm2 签名出的结果,在别的工具上无法验签的问题分析

结论 通过分析发现&#xff0c;导致问题的原因是&#xff1a;gmssl v2 调用的算法不是 sm2 算法。 分析详情 具体情况如下所述 在 gmssl 调用 pkey_ec_init 函数时&#xff0c;默认会把 ec_scheme 设置为 NID_secg_scheme 签名的过程中会调用 pkey_ec_sign 函数&#xff0c…

29.Xaml TreeView控件---->树形控件,节点的形式显示数据

1.运行效果 2.运行源码 a.Xaml源码 <Window x:Class="testView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic…

删除linux(centos7)系统自带的open jdk,安装配置jdk环境

查看jdk版本 安装的linux自带jdk8版本&#xff0c;我们不用自带的。 安装jdk步骤 1、下载 下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads 2、创建目录 创建文件夹&#xff0c;用来部署JDK&#xff0c;将JDK安装部署到&#xff1a;/export/se…

云原生Kubernetes:pod资源管理与配置

目录 一、理论 1.pod 2.pod容器分类 3.镜像拉取策略 4.pod 的重启策略 二、实验 1.Pod容器的分类 2.镜像拉取策略 三、问题 1.apiVersion 报错 2.pod v1版本资源未注册 3.格式错误 4.取行显示指定pod信息 四、总结 一、理论 1.pod (1) 概念 Pod是kubernetes中…

Matlab学习-自定义函数

Matlab学习-自定义函数 常用自定义函数 文章目录 Matlab学习-自定义函数1. 打印时间2. 计算统计参数3. 画图函数 1. 打印时间 function result calculate_time(time)% Function describe : calculate time% Input : time:N*1% Output : result.hour/min/sec hour/min/sec…

中断子系统 --- 硬件相关层

中断控制器驱动 由于linux支持中断控制器的级联&#xff0c;因此多个中断控制器就可能包含相同的硬件中断号。为了可以通过中断号唯一地标识一个中断&#xff0c;linux引入了irq domain机制以实现将硬件中断号映射为全局唯一的逻辑中断号。 Hwirq映射到irq 每个中断控制器都对…