非关系型数据库Redis

文章目录

  • 一,关系型数据库和非关系型数据可区别
    • 1.关系型数据库
    • 2.非关系型数据库
    • 3.区别
      • 3.1存储方式
      • 3.2扩展方式
      • 3.2事务性的支持
  • 二,非关系型数据为什么产生
  • 三,Redis
    • 1.Redis是什么
    • 2.Redis优点
    • 3.Redis适用范围
    • 4. Redis 快的原因
      • 4.1 基于内存运行
      • 4.2 单线程模型
      • 4.3 I/O 多路复用机制
  • 四,Redis安装操作
    • 1.安装步骤(单线程单机安装)
      • 1.1关闭防火墙和增强功能
      • 1.2下载编译包
      • 1.3解压
      • 1.4make
      • 1.5Redis 服务配置文件
      • 1.6/etc/redis/6379.conf配置
    • 2.Redis命令操作
      • 2.1Redis 服务控制
      • 2.2Redis命令工具
      • 2.3 连接 Redis 数据库的命令行工具
      • 2.4redis-benchmark 测试工具
      • 2.5 Redis常用命令
        • (1)set,get
        • (2)keys
        • (3)exists
        • (4)del
        • (5)type
        • (6)rename
        • (7)renamex
        • (8)dbsize
        • (9)查看及设置密码
        • (10)多数据库间切换
        • (11)多数据库间移动数据
        • (12)清除数据库内数据
        • (13)卸载Redis

一,关系型数据库和非关系型数据可区别

1.关系型数据库

是一个结构化的数据库,创建在关系模型(二维表)基础上,一般面向于记录。标准数据查询语言(SQL语句)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。数据库使用时要先建立数据库,表结构,存储的数据,数据和表结构不一样就存不起来。

常见的数据库有:

Oracle、MySQL、SQL Server、Microsoft Access、DB2

2.非关系型数据库

不是使用数标准数据查询语言(SQL语句)的数据库都是非关系型。不用先建立库表和表结构可以存不同类型的数据,比如文字、图片、视频、音乐等,字段也可以数量不同

常见的数据库有:

Redis、MongDB(大数据用)、Hbase(大数据用)、CouhDB(云上的)

3.区别

3.1存储方式

  • 关系型数据库是表格形式的,数据存储在数据表的行和列中。数据表彼此关联协作存储,容易提取数据。
  • 非关系型数库据不适合使用传统的表结构(行和列),因为这些数据往往是不规则的、半结构化或非结构化的。它们的存储方式可以灵活处理复杂的数据模式,而不是强制要求数据按照固定的格式存储。数据及其特性是选择数据的存储和提取的方式 。

3.2扩展方式

  • 关系型数据库是纵向扩展,提高处理能力,使用速度更快速的电脑处理相同的数据集就更快。因为数据存储在关系表中, 克服这些瓶颈需要采取各种优化手段。关系型数据库有很大扩展空间,但肯定会达到纵向扩展的上限点,这需要通过高性能电脑来处理。
  • 非关系数据库是横向扩展的。因为非关系型数据存储是分布式的,非关系型数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。

3.2事务性的支持

  • 如果数据操作需要非常精确的控制,比如确保一系列操作要么全部成功、要么全部失败(称为事务处理,原子性),或者需要对复杂的数据查询进行优化控制,传统的 关系型(SQL )数据库是性能和稳定性方面的最佳选择。关系(SQL) 数据库在处理事务时,可以精细地控制每个操作,并且如果出现问题,可以轻松回滚到之前的状态,确保数据的完整性和安全性。
  • 非关系型数据库也能支持事务操作,但非关系型数据库在稳定性方面比不上 关系型(SQL) 数据库,非关系型(NoSQL) 数据库的优点体现在扩展性和处理大规模数据上,在快速处理大量数据、支持高并发访问时表现得非常出色。

二,非关系型数据为什么产生

Web2.0 纯动态网站类型遇到的三个问题是非关系型数据库产生的原因

三个问题是:

High performance——对数据库高并发读写需求

Huge Storage——对海量数据高效存储与访问需求

High Scalability && High Availability——对数据库高可扩展性与高可用性需求


关系型数据库(如 MySQL) 更适合处理涉及表格数据、复杂查询和事务的操作。非关系型数据库(如 Redis) 更适合处理需要高效存储和快速读取的数据,特别是频繁访问的数据。将两个结合起来形成读写分离,将经常被访问的热点数据存储在非关系型数据库中(如 Redis),而关系型数据库则负责长期存储和复杂查询。这样可以提高系统的整体性能。当用户访问网页时,系统首先会去 Redis(缓存) 中查找数据,因为 Redis 存在内存中,读取速度非常快。如果数据不在 Redis 中,才会去 MySQL(关系型数据库) 中读取,并将数据保存到 Redis 中,以便下次快速访问。

三,Redis

1.Redis是什么

Redis 是一个开源的、使用 C 语言编写的 NoSQL 数据库,广泛应用于高性能的分布式系统中。它主要基于内存运行,支持持久化存储,并采用键值对(Key-Value)的存储形式。在分布式架构中,Redis 是不可缺少的重要组成部分,常用于缓存、消息队列和会话管理。

Redis 采用单进程模型,在同一台服务器上仅使用一个主进程来处理所有的客户端请求,因此处理速度依赖于主进程的执行效率。当多个客户端同时访问时,单进程 Redis 的并发处理能力会受到一定限制。如果对高并发有更高要求,可以在同一台服务器上开启多个 Redis 进程,提升处理能力。开启多个 Redis 进程会增加服务器的 CPU 负载,需要根据实际需求来平衡性能与资源消耗。

Redis 在分布式系统中,能够通过主从复制、集群模式等方式,提升数据处理能力和系统的可扩展性。在高并发和海量数据处理场景下,Redis 是非常重要的基础组件之一。

2.Redis优点

  • 具有极高的数据读写速度(数据读取速度高达十一万次/秒,数据写入速度高达八万一千次/秒。)
  • 支持丰富的数据类型(支持key-value、Strings、Lists、Hashes、Sets Sorted Sets 等数据类型操作)
  • 支持数据的持久化(把内存中的数据保存在磁盘中,重启的时候可以再一次加载使用。)
  • 原子性(一系列操作要么执行成功要么失败)
  • 支持数据备份

3.Redis适用范围

Redis 是一个基于内存运行的数据库,具有极高的读写速度,因此缓存是 Redis 最常见的应用场景之一。 Redis 的发布/订阅(Publish/Subscribe,简称 Pub/Sub)是一种消息通信模式,它允许消息发送者(发布者)将消息发送到多个接收者(订阅者),从而实现一对多的消息传递机制。Redis 通过这种方式,可以让不同的应用或服务之间进行高效的实时消息传递。 Redis还适用于获取最新N个数据的操作 ,** 排行榜类应用**,计数器应用存储关系实时分析系统日志记录

4. Redis 快的原因

4.1 基于内存运行

Redis 是一个内存数据库,所有数据都存储在内存中,而不是硬盘上。内存的读取速度比硬盘要快得多,这使得 Redis 的数据访问几乎是瞬时的。

4.2 单线程模型

Redis 采用单线程模型,这意味着它不用去处理多线程之间的复杂性,比如竞争条件或锁问题。单线程使得每个操作都能够直接、快速执行,没有阻塞或冲突的可能。(在 Redis 6.0 中新增加的多线程也只是针对处理网络请求过程采用了多线性,而数据的读写命令,仍然是单线程处理的。)

4.3 I/O 多路复用机制

Redis 使用了 I/O 多路复用技术,通过 selectpollepoll 等系统调用,让 Redis 能够同时处理多个客户端请求,大幅提升了并发性能。这使得 Redis 在高并发场景下能够保持快速响应。

四,Redis安装操作

Redis 中文网站https://www.tkcnn.com/redis/Getting-started.html
官网https://redis.io/docs/latest/get-started/
Redis下载网址http://download.redis.io/releases/

1.安装步骤(单线程单机安装)

1.1关闭防火墙和增强功能

systemctl stop firewalld
setenforce 0

1.2下载编译包

yum install -y gcc gcc-c++ make 

1.3解压

tar zxvf redis-5.0.7.tar.gz -C /opt

1.4make

Redis源码包中直接提供了 Makefile 文件,所以在解压完软件包后,不用执行 ./configure 命令进行配置,可以直接执行 make 与 make install 命令进行安装。

cd /opt/redis-5.0.7/
make -j 4 && make PREFIX=/usr/local/redis install

虚拟机给的核数多加上-j 4可以快点

1.5Redis 服务配置文件

使用软件包提供的 install_server.sh 脚本文件设置 Redis 服务所需要的相关配置文件

cd /opt/redis-5.0.7/utils/
./install_server.sh

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			      #客户端命令工具

1.6/etc/redis/6379.conf配置

vim /etc/redis/6379.conf
bind 127.0.0.1 192.168.88.60    #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行,指定日志文件

用netstat -antulp|grep redis 可以查看 与 Redis 相关的网络连接信息 ,确定是否安装完成

2.Redis命令操作

2.1Redis 服务控制

/etc/init.d/redis_6379 stop				#停止
/etc/init.d/redis_6379 start			#启动
/etc/init.d/redis_6379 restart		#重启
/etc/init.d/redis_6379 status			#状态

2.2Redis命令工具

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

2.3 连接 Redis 数据库的命令行工具

redis-cli -h host -p port -a password

选项

-h :指定远程主机

-p :指定 Redis 服务的端口号

-a :指定密码,未设置数据库密码可以省略-a 选项

redis-cli -h 192.168.xxx.xxx -p 6379
若不添加任何选项表示,则使用 127.0.0.1:6379 连接本机上的 Redis 数据库

2.4redis-benchmark 测试工具

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

格式

redis-benchmark [选项] [选项值]

选项

-h :指定服务器主机名。

-p :指定服务器端口。

-s :指定服务器 socket

-c :指定并发连接数。 

-n :指定请求数。

-d :以字节的形式指定 SET/GET 值的数据大小。

-k :1=keep alive 0=reconnect 。

-r :SET/GET/INCR 使用随机 key, SADD 使用随机值。

-P :通过管道传输请求。

-q :强制退出 redis。仅显示 query/sec 值。

–csv :以 CSV 格式输出。

-l :生成循环,永久执行测试。

-t :仅运行以逗号分隔的测试命令列表。

-I :Idle 模式。仅打开 N 个 idle 连接并等待。

(1)向ip地址为192.168.端口6379的Redis服务器发一千个并发连接请求和十万个测试性能请求

redis-benchmark -h 192.168.88.60 -p 6379 -c 1000 -n 100000

(2)测试存取一千个字节的数据包

redis-benchmark -h 192.168.88.60 -p 6379 -q -d 1000

(3)测试本机的Redis服务set和lpush的性能

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

2.5 Redis常用命令

(1)set,get

set:存放数据,命令格式为 set key value

get:获取数据,命令格式为 get key格式

set kk xixi
get kk 

(2)keys

取符合规则的键值列表,通常情况可以结合*、?等选项来使用

127.0.0.1:6379> KEYS *		#查看当前数据库中所有键127.0.0.1:6379> KEYS v*	  #查看当前数据库中以 v 开头的数据127.0.0.1:6379> KEYS v?		#查看当前数据库中以 v 开头后面包含任意一位的数据127.0.0.1:6379> KEYS v??  #查看当前数据库中以 v 开头 v 开头后面包含任意两位的数据

(3)exists

判断键值是否存在

exists y44

存在提示1,不存在提示0

(4)del

删除需要删除的key

del y44

(5)type

查看key对应的value值的类型

type x1

(6)rename

对key重命名

使用rename命令进行重命名时,无论目标key是否存在都进行重命名,且源key的值会覆盖目标key的值。

格式

rename 源key 目标key
rename x1 x2

(7)renamex

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

renamenx y3 y33

(8)dbsize

查看当前数据库中 key 的数量

(9)查看及设置密码

1.使用config set requirepass yourpassword命令设置密码

config set requirepass 123456
auth 123456

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

config get requirepass

如果密码忘了只能删除 rm -rf /var/run/redis-6379.pid然后重启redis

(10)多数据库间切换

Redis 支持多数据库,Redis 默认情况下包含 16 个数据库,数据库名称是用数字 0-15 来依次命名的。

多数据库相互独立,互不干扰。

select 1

(11)多数据库间移动数据

move命令

set k1 100: #在 Redis 数据库 0 中,创建了一个键 k1,其值为 100。
get k1:     #从数据库 0 获取键 k1 的值,返回 "100"。
select 1     #切换到 Redis 数据库 1。Redis 默认有 16 个数据库(从 0 到 15)
get k1:     #在数据库 1 中获取键 k1 的值,返回 nil,因为 k1 仅存在于数据库 0 中,数据库 1 没有该键。
select 0:   #切换回数据库 0
get k1:     #查看数据库 0 中的键 k1,看是否存在,值为 "100"。
move k1 1:  #将数据库 0 中的键 k1 移动到数据库 1 中。移动操作会将 k1 从数据库 0 中删除,并在数据库 1 中创建 k1,保持其值为 100
select 1:   #切换回数据库 1。
get k1:     #获取数据库 1 中键 k1 的值,现在可以看到 k1 的值为 "100",因为它被从数据库 0 移动到了数据库 1。
select 0:   #切换回数据库 0。
get k1:     #获取数据库 0 中的键 k1,此时返回 nil,k1 已经被移动到了数据库 1,数据库 0 中不再有这个键

(12)清除数据库内数据

FLUSHDB :清空当前数据库数据

FLUSHALL :清空所有数据库的数据,需要谨慎使用

(13)卸载Redis
redis-cli shutdown
或有密码的情况
redis-cli -a 密码 shutdown
rm -f /usr/local/bin/redis-server
rm -f /usr/local/bin/redis-cli
rm -rf /etc/redis
rm -f /usr/local/etc/redis.conf
rm -rf /var/lib/redis
rm -rf /var/log/redis
rm -f /etc/init.d/redis_6379
rm -f /etc/systemd/system/redis.service
cd /path/to/redis/source   #如果不存在目录就不用操作
make distclean
which redis-server         #确认有没有卸载
which redis-cli

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

某讯/企鹅滑块验证码逆向(一)

文章目录 免责声明前言请求分析collect参数 总结 免责声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由…

面试爱考 | 设计模式

一、概述二、创建型 1. 单例(Singleton) IntentClass DiagramImplementationExamplesJDK 2. 简单工厂(Simple Factory) IntentClass DiagramImplementation 3. 工厂方法(Factory Method) IntentClass Diagr…

C/C++教程学习视频网盘资源分享

正如大家所了解的,C语言和C是两种编程语言,它们有一些相似之处,也有一些明显的区别。今天与大家一起来探讨、学习和回顾一下,希望对正在学习或准备学习编程语言的小伙伴,能有帮助哦! C/C区别之处&#xff…

Linux环境使用Git同步教程

📖 前言:由于CentOS 7已于2024年06月30日停止维护,为了避免操作系统停止维护带来的影响,我们将把系统更换为Ubuntu并迁移数据,在此之前简要的学习Git的上传下载操作。 目录 🕒 1. 连接🕘 1.1 配…

路由策略原理与配置

🐣个人主页 可惜已不在 🐤这篇在这个专栏 华为_可惜已不在的博客-CSDN博客 🐥有用的话就留下一个三连吧😼 目录 一. 原理概述 二. 实验目的 实验内容 实验拓扑 实验配置 三. 实验结果 一. 原理概述 路由策略Route-P…

【docker】docker 关键技术 —— 镜像制作

docker 镜像制作 镜像制作及原因Docker 镜像制作方式快照方式制作镜像制作命令 Dockerfile 制作镜像Dockerfile 是什么Dockerfile 格式为什么需要 Dockerfilegitee 详细使用 Dockerfile 教程 镜像制作及原因 镜像制作是因为某种需求,官方的镜像无法满足需求&#x…

Docker基本使用(持续更新中)

1 常用命令 1.1保存镜像到本地 命令如下: docker save -o nginx.tar nginx:latest 举例 结果:在当前目录下多了一个nginx.tar的包 1.2加载本地镜像 命令如下: docker load -i nginx.tar 举例: 查看当前镜像是没有nginx的 加载本地镜…

C++入门基础知识67(高级)——【关于C++ 文件和流】

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于C 文件和流的相关内容! 关于…

数据库索引底层数据结构之B+树MySQL中的页索引分类【纯理论干货,面试必备】

目录 1、索引简介 1.1 什么是索引 1.2 使用索引的原因 2、索引中数据结构的设计 —— B树 2.1 哈希 2.2 二叉搜索树 2.3 B树 2.4 最终选择之——B树 2.4.1 B树与B树的对比(面向索引)【面试题】 3、MySQL中的页 3.1 页的使用原因 3.2 页的结构 3.2.1 页文件头和页文件…

【批量图片发票识别表格】批量识别发票明细导出Excel表格,批量识别扫描发票,批量识别拍照发票,发票识别改名

我们在生活中有很多发票要处理,有的是扫描的图片,有的是拍照的图片,需要将这些发票的信息导出整理成Excel表格,手打一两张还可以,数量大是不太现实的,那么今天教下大家如何快速的将这些发票整理下Excel表格…

基于Java、SpringBoot、Vue的加油站管理系统设计

摘要 本系统是一个基于Java、SpringBoot和Vue的加油站管理系统。它旨在提高加油站的运营效率,优化客户服务体验,并通过数据分析支持更精准的业务决策。该系统包括用户管理、汽油管理、站点管理等功能模块。通过这些功能,管理员可以方便地管理…

Chrome扩展程序上架全流程

1. 开发一个扩展 首先开发好一个扩展, 在构建之后压缩打包为 zip 格式的文件 2. 注册开发者账号 首次需要创建谷歌开发者账号,需要一次性收取5美元的注册费 注册步骤 打开注册链接,如下图所示,同意协议点击支付注册费 需要…

GDPU Vue前端框架开发 计数器

计数器算不到你双向绑定的进度。 重要的更新公告 !!!GDPU的小伙伴,感谢大家的支持,希望到此一游的帅哥美女能有所帮助。本学期的前端框架及移动应用,采用专栏订阅量达到50才开始周更了哦( •̀ .̫ •́ )✧…

一步到位:通过 Docker Compose 部署 EFK 进行 Docker 日志采集

一、EFK简介 Elasticsearch:一个开源的分布式搜索和分析引擎,用于存储和查询日志数据。它是 EFK 的核心组件,负责高效地存储和检索日志信息。 Filebeat:一个轻量级的日志采集器,主要用于将日志文件数据发送到 Logsta…

Python之NumPy超详细学习指南:从入门到精通(上篇)

文章目录 Python NumPy学习指南:从入门到精通第一部分:NumPy简介与安装1. 什么是NumPy?2. 安装NumPy使用pip安装:使用Anaconda安装: 第二部分:NumPy数组基础1. NumPy数组的创建从列表创建一维数组&#xff…

第四天旅游线路预览——从贾登峪到喀纳斯景区入口(贾登峪游客服务中心)

第四天:从贾登峪到喀纳斯风景区入口,晚上住宿贾登峪; 从贾登峪到喀纳斯景区入口(贾登峪游客服务中心): 搭乘贾登峪①路车,路过三湾到达景区换乘中心,路程时长约40分钟; …

在服务器上开Juypter Lab教程(远程访问)

在服务器上开Juypter Lab教程(远程访问) 文章目录 在服务器上开Juypter Lab教程(远程访问)一、安装anaconda1、安装anaconda2、提权限3、运行4、同意协议5、安装6、是否要自动初始化 conda7、结束8、检查 二、Anaconda安装Pytorch…

jsp+sevlet+mysql图书管理系统

jspsevletmysql图书管理系统 一、系统介绍二、功能展示1.图书查询(学生)2.借阅信息(学生)3.借阅历史(学生)4.借阅历史(管理员)5.读者管理(管理员)6.图书分类(管理员)7.图书借阅信息(管理员)8.图书归还信息(管理员) 四、其它1.其他系统实现 一、系统介绍 系统主要功能&#xff…

iOS_模拟系统音量/亮度视图

自己实现音量和亮度视图,然后显示在所需区域。 当需要展示自己实现的音量视图时,需要屏蔽掉系统的音量视图: // 显示持有系统的音量视图 self.sysVolumView [[MPVolumeView alloc] init];// 当需要屏蔽时 if (self.sysVolumView.superview…

【Java面试】第八天

🌟个人主页:时间会证明一切. 目录 BeanFactory和FactroyBean的关系?BeanFactoryFactoryBean Spring 中的 Bean 是线程安全的吗?有状态的Bean如何解决线程安全问题 Spring 中的 Bean 作用域有哪些?作用域与循环依赖自定…