Redis数据库的简介、部署及常用命令

关系数据库与非关系型数据

关系型数据库

  • 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。
  • sQL语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。
  • 主流的关系型数据库包括oracle、MySQL、SQL Server、Microsoft Access、DB2、PostgresQL等。
  • 以上数据库在使用的时候必须先建库建表设计表结构,然后存储数据的时候按表结构去存,如果数据与表结构不匹配就会存储失败。

非关系型数据库

  • NoSQL(NoSQL=Not only sQL),意思是“不仅仅是sQL",是非关系型数据库的总称。
  • 除了主流的关系型数据库外的数据库,都认为是非关系型。
  • 不需要预先建库建表定义数据存储表结构,每条记录可以有不同的数据类型和字段个数(比如微信群聊里的文字、图片、视频、音乐等)。
  • 主流的NosQL数据库有Redis、MongBD、Hbase、Memcached、Elasticsearch、TSDB等。

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

数据存储方式不同

关系型和非关系型数据库的主要差异是数据存储的方式。关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。
与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构你的数据及其特性是选择数据存储和提取方式的首要影响因素。

扩展方式不同

sQL和NoSOL数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。
要支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来克服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。
而NoSQL数据库是横向扩展的。因为非关系型数据存储天然就是分布式的,NosQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。

对事务性的支持不同

如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的sQL数据库从性能和稳定性方面考虑是你的最佳选择。sQ数据库支持对事务原子性细粒度控制,并且易于回滚事务。
虽然NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。

非关系型数据库产生背景

可用于应对Web2.0纯动态网站类型的三高问题。

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

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

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

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

总结

关系型数据库

实例-->数据库-->表(table)-->记录行(row)、数据字段(column)

非关系型数据

实例-->数据库-->集合(collection)-->键值对(key-value)
非关系型数据库不需要手动建数据库和集合(表)。

Redis简介

  • Redis(远程字典服务器)是一个开源的、使用c语言编写的NoSQL数据库。
  • Redis 基于内存运行并支持持久化,采用key-value(键值对)的存储形式,是目前分布式架构中不可或缺的一环。
  • Redis服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是完全依靠于主进程的执行效率。若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降;若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力。即:在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程。若CPU资源比较紧张,采用单进程即可。

Redis的优点

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

支持丰富的数据类型:支持key-value、Strings(字符串)、Lists(列表)、Hashes(散列)、Sets(无序集合)及Sorted Sets(有序集合) 等数据类型操作。

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

原子性:Redis所有操作都是原子性的。

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

Redis应用场景

  • Redis作为基于内存运行的数据库,是一个高性能的缓存,一般应用在Session缓存、队列、排行榜、计数器、最近最热文章、最近最热评论、发布订阅等。
  • Redis 适用于数据实时性要求高、数据存储有过期和淘汰特征的、不需要持久化或者只需要保证弱一致性、逻辑简单的场景。

Redis为什么这么快?

  • Redis是一款纯内存结构,避免了磁盘I/o等耗时操作。
  • Redis命令处理的核心模块为单线程,减少了锁竞争,以及频繁创建线程和销毁线程的代价,减少了线程上下文切换的消耗。
  • 采用了I/o多路复用机制,大大提升了并发效率

:在Redis6.0中新增加的多线程也只是针对处理网络请求过程采用了多线性,而数据的读写命令,仍然是单线程处理的。

单线程

Redis 6.0版本前一直是单线程方式处理用户的请求

单线程为何如此快?

  • 纯内存
  • 非阻塞
  • 避免线程切换和竞态消耗

memcached与Redis对比

MencachedRedis
类型Key-value数据库Key-value数据库
过期策略支持支持
数据类型单一数据类型五大数据类型
持久性不支持支持
主从不支持支持
虚拟内存不支持支持

Redis安装部署

部署步骤

systemctl stop firewalld.service          #关闭防火墙
setenforce 0yum install -y gcc gcc-c++ make           #安装依赖包环境
cd /opt
tar -zxvf redis-5.0.7.tar.gz              #解压软件报
cd redis-5.0.7/                           #进入目录
make                                      #编译
make PREFIX=/usr/local/redis install      #指定安装目录去安装
#由于Redis源码包中直接提供了Makefile文件,所以在解压完软件包后,不用先执行./configure进行配置,可直接执行make与make install命令进行安装。#执行软件包提供的install_server.sh脚本文件设置Redis服务所需要的相关配置文件
cd 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,注意要一次性正确输入
Port           : 6379                              #默认监听端口为6397
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/redis/bin/redis-cli    #客户端命令工具#把redis的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/redis/bin/* /usr/local/bin/
#当installserver.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   #状态

 

 

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

 

 

Redis命令工具

  • rdb 和 aof 是redis服务中持久化功能的两种形式
  • redis-cli常用于登陆至redis数据库
Redis命令工具功能
redis-server用于启动Redis的工具
redi s-benchmark用于检测Redis在本机的运行效率
redis-check-aof修复AOF持久化文件
redis-check-rdb修复RDB持久化文件
redis-cliRedis命令行工具

redis-cli命令行工具(远程登录)

语法:
redis-cli -h host -p port -a password#若不添加任何选项表示,则使用127.0.0.1:6379 连接本机上的 Redis 数据库
选项功能
-h指定远程主机
-p指定Redis 服务的端口号
-a指定密码,未设置数据库密码可以省略-a选项
-n指定进入库的序列号

示例

redis-cli -h 192.168.6.88 -p 6389  指定地址登录

redis-cli       本机登录

 

redis-benchmark 测试工具

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

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

示例1

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

示例2

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

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

示例3

测试本机上的Redis服务器运行set与ipush操作时的性能

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

 

 

Redis数据库常用命令

set 与get

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

 keys

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

存放一些数据

 

 

exists

命令可以判断键值是否存在

 del

命令可以删除当前数据库的指定 key

 type

命令可以获取 key 对应的 value 值类型。

rename

命令是对已有 key 进行重命名(覆盖)

 

renamenx

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

dbsize

命令的作用是查看当前数据库中 key 的数目

使用config set requirepass yourpassword命令设置密码
127.0.0.1:6379> config set requirepass 123456

使用config get requirepass命令查看密码

(一旦设置密码,必须先验证通过密码,否则所有操作不可用)
127.0.0.1:6379> auth 123456
127.0.0.1:6379> config get requirepass

Redis 多数据库常用命令

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


多数据库间切换
命令格式:select 序号
默认使用的是序号为 0 的数据库

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

清除数据库内数据
FLUSHDB :清空当前数据库数据
FLUSHALL :清空所有数据库的数据,慎用!

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

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

相关文章

LangChain - OpenGPTs

文章目录 MessageGraph 消息图认知架构AssistantsRAGChatBot 持久化配置新模型新工具astream_events总结 关键链接: OpenGPT GitHub 存储库YouTube 上的 OpenGPT 演练LangGraph:Python、JS 两个多月前,在 OpenAI 开发日之后,我们…

项目管理中的估算活动资源

在项目管理中,资源估算是一项至关重要的任务。正确地估算活动资源可以确保项目的顺利进行,避免资源浪费和不必要的延误。以下是对项目管理中常见的活动资源类型的详细分析。 一、人力资源 人力资源是项目管理中最基本的资源之一。它包括项目团队成员的…

Linux gcc day5粘滞位

粘滞位 背景:一定时在一个公共目录(root创建)下。进行临时文件的操作 Linux系统中有很多人,我们需要在一个公共目录下,进行临时文件的操作(增删查改) 创建一个根目录下的dir(mytmp…

指针的深入理解(六)

指针的深入理解(六) 个人主页:大白的编程日记 感谢遇见,我们一起学习进步! 文章目录 指针的深入理解(六)前言一. sizeof和strlen1.1sizeof1.2strlen1.3sizeof和strlen对比 二.数组名和指针加减…

Java变量详解

​ 这里写目录标题 第一章、Java中的变量分类1.1)变量分类1.2)成员变量分类1.3)成员变量和局部变量的区别 第二章、成员变量详解2.1)成员变量作用域/权限修饰符2.2)成员变量和成员属性的区别2.3)成员变量初…

是否有替代U盘,可安全交换的医院文件摆渡方案?

医院内部网络存储着大量的敏感医疗数据,包括患者的个人信息、病历记录、诊断结果等。网络隔离可以有效防止未经授权的访问和数据泄露,确保这些敏感信息的安全。随着法律法规的不断完善,如《网络安全法》、《个人信息保护法》等,医…

spring事务那些事

实际工作中还会面临千奇百怪的问题,看下面返个例子(注意MySql数据库测试): //1.hello1Service 调用 hello2Service Transactional(propagation Propagation.REQUIRED,rollbackFor Exception.class) public void doUpdate() {//…

【CHI】(十二)Memory Tagging

目录 1. Introduction 2. Message extensions 3. Tag coherency 4. Read transaction rules 4.1 TagOp values 4.2 Permitted initial MTE tag states 5. Write transactions 5.1 Permitted TagOp values 5.2 TagOp, TU, and tags relationship 6. Dataless transact…

Java 处理Mysql获取树形的数据

Mysql数据&#xff1a; 代码如下&#xff1a; Entity&#xff1a; Data Accessors(chain true) public class Region {private BigInteger id;//名称private String name;//父idprivate BigInteger parentId;private List<Region> children;private Integer createTim…

书生·浦语训练营二期第二次笔记

文章目录 1. 部署 InternLM2-Chat-1.8B 模型进行智能对话1.1 配置环境1.2 下载 InternLM2-Chat-1.8B 模型 2. 实战&#xff1a;部署实战营优秀作品 八戒-Chat-1.8B 模型2.1 配置基础环境2.2 使用 git 命令来获得仓库内的 Demo 文件&#xff1a;2.3 下载运行 Chat-八戒 Demo 3. …

Vue2 —— 学习(二)

shsh一、绑定 class 样式 &#xff08;一&#xff09;字符串写法 1.流程介绍 适用于样式的类名不确定 需要动态指定 通过 指令绑定的形式&#xff0c;在模板中的类标签绑定 Vue 实例中的数据 mood <div class"basic" :class"mood" click"chang…

AutoAlignV2:基于可变形特征聚合的动态多模态3D目标检测

AutoAlignV2 Deformable Feature Aggregation for Dynamic Multi-Modal 3D Object Detection 论文网址&#xff1a;AutoAlignV2 论文代码&#xff1a;AutoAlignV2 简读论文 这篇论文提出了一种名为AutoAlignV2的动态多模态3D目标检测框架,旨在高效融合激光雷达点云和RGB图像…

双目运算符和单目运算符的重载

目录 题目 源码 结果示例 题目 建立一个矩阵类&#xff0c;可以完成指定的操作或运算。 说明&#xff1a; 矩阵为2行3列&#xff0c;基类型为整型&#xff1b;操作或运算&#xff1a;初始化&#xff08;>>&#xff09;、输出&#xff08;<<&#xff09;、赋值…

2024年网络安全趋势前瞻:从AI攻击到云安全新挑战

随着2024年开展新的序幕&#xff0c;网络安全领域正面临着前所未有的挑战与机遇&#xff0c;一系列引人注目的趋势和预测逐渐浮出水面。 一、AI技术发展引发的安全问题 近年来&#xff0c;我们见证了AI技术的飞速进步&#xff0c;其中ChatGPT等引领潮流的AI服务成为公众瞩目的…

数据结构__顺序表

概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存储。在数组上完成数据的增删查改 需要用到数组&#xff1a;数组的绝对优势&#xff1a;下标的随机访问&#xff08;因为物理空间连续&#xff09; a[i]等…

git 常用命令和使用方法

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

IoT数采平台4:测试

IoT数采平台1&#xff1a;开篇IoT数采平台2&#xff1a;文档IoT数采平台3&#xff1a;功能IoT数采平台4&#xff1a;测试 Modbus RTU串口测试 OPC测试 HTTP测试 MQTT透传测试 MQTT网关测试及数据上报 TCP / UDP 监听&#xff0c;客户端连上后发送信息&#xff0c;客户端上报数据…

Linux从入门到精通 --- 4(下).网络请求和下载、端口、进程管理、主机状态监控、环境变量、文件的上传和下载、压缩和解压

文章目录 第四章(下)&#xff1a;4.8 网络请求和下载4.8.1 ping4.8.2 wget4.8.3 curl 4.9 端口4.9.1 查看端口占用 4.10 进程管理4.10.1 查看进程4.10.2 查看指定进程4.10.3 关闭进程 4.11 主机状态监控4.11.1 查看系统资源占用4.11.2 top交互式选项4.11.3 磁盘信息监控4.11.4 …

uniapp-设置UrlSchemes从外部浏览器H5打开app

需求&#xff1a;外部浏览器H5页面&#xff0c;跳转到uniapp开发的原生app内部。 1、uniapp内部的配置&#xff1a; &#xff08;1&#xff09;打开manifest->App常用其他设置&#xff0c;如下&#xff0c;按照提示输入您要设置的urlSchemes&#xff1a; &#xff08;2&am…

数据库关系模式三元及以上分解无损连接判断(表格法)

例题 1.首先构造初始表&#xff0c;如下表所示。 A B C D E ABC a1 a2 a3 b14 b15 CD b21 b22 a3 a4 b15 DE b31 b32 b33 a4 a5 2.遍历函数依赖&#xff0c;对AB→C&#xff0c;因各元组的第一、二列没有相同的分量&#xff0c;所以表不改变。 3.由C→D…