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

NoSQL之Redis

目录

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

1.关系数据库

2.非关系数据库

2.1非关系型数据库产生背景

3.关系型数据库与非关系型数据区别

(1)数据存储方式不同

(2)扩展方式不同

(3)对事物性的支持不同

二、Redis

1.Redis概念

2.Redis优点

3.Redis为什么这么快?

三、Redis安装部署

1.关闭防火墙和依赖环境

2.解压安装包

3.切到目录下并编译

4.安装到指定目录

5.执行脚本文件

6.做软连接

7.启动redis服务并查看

8.在配置文件中添加监听主机

9.重启服务

四、Redis命令工具

1.redis-cli命令行工具

2.redis-benchmark测试工具

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

五、Redis数据库常用命令

1.存放和获取数据

2.查看数据库中键的情况

1.keys

2.keys ? 与 keys *

3.keys ??

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

4.del命令删除当前数据库指定的key

5.type命令可以获取key对应的calue值类型

6.rename命令是对已有key进行重命名

7.renamenx命令

8.dbsize命令查看当前数据库中key的数目

9.使用config set requirepass设置密码

10. 查看密码

11.删除密码

六、Redis多数据库常用命令

1.多数据库切换

2.多数据库间移动数据

七、清除数据


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

1.关系数据库

  • 一个结构化的数据,创建在关系模型基础上
  • 一般面向于记录
  • 包括:oracle、MySQL、SQL Server、Microsoft Access、DB2、PostgresQL

2.非关系数据库

  • 处理主流的关系型数据库外的数据库,都认为是非关系数据库
  • 包括:Redis(高并发、持久化、分布式处理)、MongDB、Hbase等

2.1非关系型数据库产生背景

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

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

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

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

3.关系型数据库与非关系型数据区别

(1)数据存储方式不同

关系型和非关系型数据库的主要差异是数据储存的方式。

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

(2)扩展方式不同

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

(3)对事物性的支持不同

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

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

二、Redis

1.Redis概念

Redis服务端口:6379

1. Redis(远程字典服务器)
2. 是一个开源的,NoSQL数据库
3. 基于内存运行并支持持久化;采用key-value(键值对)的存储形式
4. 是单进程模型,一台服务器上可以同时启动多个Redis进程
5. Redis在提高并发处理能力的同时会给CPU造成压力

2.Redis优点

1. 极高的数据读写速度
2. 支持
数据类型:String(字符串)、List(列表)、Hash(散列)、Set(无序集合)及Sorted Set(有序集合)
数据结构:key-vlaue(键值对)
3. 支持数据持久化:将内存中的数据保存在磁盘,重启的时候可以再次加载使用
4. 原子性:要么执行,要么都不执行
5. 支持数据备份:master-slave主从复制模式

3.Redis为什么这么快?

1. Redis是纯内存结构,避免了磁盘I/O耗时操作
2. 核心模块是单线程,减少了线程上下文切换的消耗
3. 采用了异步非阻塞模式,提高了效率

三、Redis安装部署

1.关闭防火墙和依赖环境

关闭防火墙
systemctl stop firewalld
setenforce 0
#安装依赖环境
yum install -y gcc gcc-c++ make

2.解压安装包

3.切到目录下并编译

4.安装到指定目录

make PREFIX=/usr/local/redis install
#执行软件包提供的install_server.sh 脚本文件,设置Redis服务所需要的相关配置文件

5.执行脚本文件

cd /opt/redis-5.0.7/utils
./install_server.sh
……
慢慢回车
Please select the redis executable path []
手动输入
/usr/local/redis/bin/redis-server

6.做软连接

#创建软链接
ln -s /usr/local/redis/bin/* /usr/local/bin/

7.启动redis服务并查看

/etc/init.d/redis_6379 start
###开启服务
netstat -natp|grep 6379
###查看端口

8.在配置文件中添加监听主机


vim /etc/redis/6379.conf70行,添加 监听的主机地址
bind 127.0.0.1 192.168.52.140
——————————————————————————————————————————————————————————————————————————————				93行,Redis默认的监听端口
port 6379									137行,启用守护进程
daemonize yes							159行,指定 PID 文件
pidfile /var/run/redis_6379.pid				167行,日志级别
loglevel notice								172行,指定日志文件
logfile /var/log/redis_6379.log

9.重启服务

/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命令行工具

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

2.redis-benchmark测试工具

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

 基本的测试语法:redis-benchmark [选项] [选项值]
选项作用
-h指定服务器主机名
p只当服务器端口
-s指定服务器socket
-n指定请求数

-d

以字节的形式指定set/get值的数据大小
-k1=keep alive 0=reconnect
-rSET/GET/INCR 使用随机 key,sADD使用随机值
-P通过管道传输<numerq>请求
--csv以csv格式输出。
-l(小L)生成循环,永久执行测试
-t仅运行以逗号分隔的测试命令列表
-I(大I)Idle模式。仅打开N个idle连接并等待

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

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

#测试存取大小为100字节的数据包的性能
redis-benchmark -h 192.168.91.105 -p 6379 -q -d 100#测试本机上Redis服务在进行 set与1push操作时的性能
redis-benchmark -t set,lpush -n 100000 -q

五、Redis数据库常用命令

1.存放和获取数据

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

2.查看数据库中键的情况

 keys    命令可以取符合规则的键值列表,通常情况可以结合*、?等选项来使用。exists  命令可以判断键值是否存在。del     命令可以删除当前数据库的指定 key。type    命令可以获取 key 对应的 value 值类型。

1.keys

2.keys ? 与 keys *

3.keys ??

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

 exists qq#判断 qq键是否存在#1表示 qq键是存在exists q#0表示q键不存在

4.del命令删除当前数据库指定的key

del 键名

5.type命令可以获取key对应的calue值类型

type 键名

6.rename命令是对已有key进行重命名

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

(覆盖)命令格式:rename 源key 目标key

7.renamenx命令

renamenx命令是对已有key进行重命名,并检测新名是否存在,如果目标key存在则不进行重命名。

 (不覆盖)命令格式:renamenx 源key 目标key

8.dbsize命令查看当前数据库中key的数目

dbsize

9.使用config set requirepass设置密码

config set requirepass 密码

10. 查看密码

config get requirepass

11.删除密码

 config  set requirepass ''

六、Redis多数据库常用命令

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

1.多数据库切换

 命令格式:select 序号

使用 redis-cli 连接 Redis 数据库后,默认使用的是序号为 0 的数据库。

2.多数据库间移动数据

 格式:move 键值 序号

七、清除数据

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

相关文章:

NoSQL之Redis

目录 一、关系型数据库与非关系型数据库 1.关系数据库 2.非关系数据库 2.1非关系型数据库产生背景 3.关系型数据库与非关系型数据区别 &#xff08;1&#xff09;数据存储方式不同 &#xff08;2&#xff09;扩展方式不同 &#xff08;3&#xff09;对事物性的支持不同 …...

double二分(P3743 小鸟的设备)

题目:P3743 小鸟的设备 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 代码&#xff1a; #include<bits/stdc.h> using namespace std; const int N2e510; double a[N],b[N]; int n; double p;bool check(double mid) {double sum0.0;for(int i1;i<n;i){if(a[i]*mi…...

【独立开发前线】Vol.36 为什么从2023年开始,独立开发者越来越多了?

不知道你有没有观察到&#xff0c;从2023年开始&#xff0c;国内的独立开发者越来越多了。 之前独立开发者是一个非常小众的群体&#xff0c;但现在很多互联网从业者都瞄准了这个方向&#xff0c;包括程序员、产品经理&#xff0c;运营等等。 我想可能是这样几个原因&#xf…...

GPT4不限制使用次数了!GPT5即将推出了!

今天登录到ChatGPT Plus账户&#xff0c;出现了如下提示&#xff1a; 已经没有了数量和时间限制的提示。 更改前&#xff1a;每 3 小时限制 40 次&#xff08;团队计划为 100 次&#xff09;&#xff1b;更改后&#xff1a;可能会应用使用限制。 GPT-4放开限制 身边订阅了Ch…...

物联网实战--入门篇之(六)嵌入式-WIFI驱动(ESP8266)

目录 一、WIFI简介 二、基础网络知识 三、思路讲解 四、代码分析 4.1 状态机制 4.2 客户端连接 4.3 应用数据接收处理 4.4 数据发送 4.5 主函数调用 4.6 网络连接ID分配 五、总结 一、WIFI简介 WIFI在我们生活中太常见了&#xff0c;手机电脑都可以用WiFi连接路由器进行上…...

Java并发编程基础面试题详细总结

1. 什么是线程和进程? 1.1 何为进程? 进程是程序的一次执行过程&#xff0c;是系统运行程序的基本单位&#xff0c;因此进程是动态的。系统运行一个程序即是一个进程从创建&#xff0c;运行到消亡的过程。 在 Java 中&#xff0c;当我们启动 main 函数时其实就是启动了一个…...

EKO / 砍树

暴力是不行的&#xff0c;还得是二分吧 题目描述 伐木工人 Mirko 需要砍 M 米长的木材。对 Mirko 来说这是很简单的工作&#xff0c;因为他有一个漂亮的新伐木机&#xff0c;可以如野火一般砍伐森林。不过&#xff0c;Mirko 只被允许砍伐一排树。 Mirko 的伐木机工作流程如下&a…...

Kafka面试宝典

1 Kafka基础面试篇 Kafka的那些设计让它有如此高的性能? 1.partition,producer和consumer端的批处理:提高并行度;2.页缓存:大量使用页缓存,内存操作比磁盘操作快很多,数据写入直接写道页缓存,由操作系统负责刷盘,数据读取也是直接命中页缓存,从内存中直接拿到数据;…...

Redis性能管理

目录 1、内存碎片如何产生的&#xff1f; 2、跟踪内存碎片率对理解Redis实例的资源性能是非常重要的 3、解决碎片率大的问题 二、内存使用率 1、避免内存交换发生的方法 2、内回收key 三、缓存的穿透、击穿、雪崩 #查看Redis内存使用方法 info memory #进入数据库查看 re…...

计算机网络:局域网的数据链路层

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

Linux常见命令简介

Linux运行级别 六种运行级别&#xff1a; 0、关机 1、单用户&#xff08;可用来找回密码&#xff09; 2、多用户无网络 3、多用户有网络&#xff08;多用于工作环境&#xff09; 4、预留 5、图形界面&#xff08;多用于学习环境&#xff09; 6、重…...

34-SDK设计(下):IAM项目GoSDK设计和实现

比如 Kubernetes的 client-go SDK设计方式。IAM项目参考client-go&#xff0c;也实现了client-go风格的SDK&#xff1a;marmotedu-sdk-go。 &#xff0c;client-go风格的SDK具有以下优点&#xff1a; 大量使用了Go interface特性&#xff0c;将接口的定义和实现解耦&#xff0…...

基于Matlab的血管图像增强算法,Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…...

LeetCode每日一题之专题一:双指针 ——复写零

复写零OJ链接&#xff1a;1089. 复写零 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 解法&#xff08;原地复写-双指针&#xff09;&#xff1a; 算法思路&#xff1a; 如果「从前向后」进⾏原地复写操作的话&#xff0c;由于 0 的出现会复写两次&#xff0c;导致…...

Golang基础-9

Go语言基础 介绍 基础 结构体 自定义类型 结构体定义 结构体声明 结构体初始化 字段访问与修改 匿名结构体 结构体嵌套 初始化函数定义 介绍 本文介绍Go语言中自定义类型、结构体定义、结构体声明、结构体初始化、字段访问与修改、匿名结构体、结构体嵌套、初始化…...

Vue基础知识:路由的封装抽离,路由模块的封装抽离的好处是什么?,如何快速的引入组件,基于@指代src目录,从src目录出发找组件

如果将所有的路由配置都存放在main.js中&#xff0c;是非常有问题的&#xff0c;杂且乱。所以我们要将路由模块进行抽离&#xff0c;这样有利于&#xff1a;拆分模块&#xff0c;利于维护。大致的做法就是将路由相关的东西放到router这个文件夹的index.js中&#xff0c;而将来只…...

插入排序---算法

1、算法概念 插入排序&#xff1a;它的工作原理是通过构建有序排序&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置插入。 2、算法步骤 将第一待排序序列第一个元素看作一个有序序列&#xff0c;把第二个元素到最后一个元素当成是…...

Vue3 Vite 整合组件脚手架笔记

序号更新时间备注12024.04.03初始化整理笔记 目录 一、安装运行命令二、相关依赖内容 1、http客户端 - alova2、国际化 - I18n3、时间管理 - moment4、pdf预览 - pdfjs-dist5、doc预览 - docx-preview6、请求参数处理 - qs7、全局状态管理 - Pinia8、路由管理 - vue-router9、…...

续二叉搜索树递归玩法

文章目录 一、插入递归二、寻找递归&#xff08;非常简单&#xff0c;走流程就行&#xff09;三、插入递归&#xff08;理解起来比较麻烦&#xff09; 先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;^ _ ^<3 ❤️ ❤️ ❤️ 码字不易&#xff0c;大家的…...

DDD 的四层领域模型是怎样的?包含哪些基础概念?

DDD的四层领域模型如下所示&#xff1a; 展现层&#xff1a;这一层负责向用户显示信息和解释用户命令&#xff0c;完成前端界面逻辑。并将用户请求传递给应用层。应用层&#xff1a;这一层是很薄的一层&#xff0c;负责协调领域层中的领域对象&#xff0c;组成具体应用场景。应…...

AI 在医疗保健领域的应用:技术、趋势和前景

人工智能&#xff08;AI&#xff09;在医疗保健领域的应用已经成为引人瞩目的发展方向&#xff0c;其在医学影像分析、疾病诊断和个性化治疗等方面展现出了巨大潜力。本文将深入探讨这些技术应用和未来的发展趋势。 医学影像分析 医学影像分析是AI在医疗领域中应用最广泛的领…...

SVG XML 格式定义图形入门介绍

SVG SVG means Scalable Vector Graphics. SVG 使用 XML 格式定义图形SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失SVG 是万维网联盟的标准 Hello World Use SVG in html and you can see: Link to the SVG file You can use <a> tag to link to the svg…...

MYSQL数据库的故障排除与优化

目录 一.MySQL单实例故障排查 故障现象1 故障现象 2 故障现象 3 故障现象 4 故障现象 5 故障现象 6 故障现象 7 故障现象 8 二.主从环境常见故障 1.故障一 2. 故障二 3. 故障三 三. 优化 1.SQL优化 2. 架构优化 3.硬件方面 1.1 关于CPU 1.2 关于内存 1.3 关…...

C++从入门到精通——入门知识

1. C关键字(C98) C总计63个关键字&#xff0c;C语言32个关键字 2. 命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称都将存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的就是对标识符的名…...

一些题目学习

1.打开文件添加helloworld public class Saier {public static void main(String[] args){String path"C:\\Users\\sjg\\Desktop\\abc.txt";String text"hello world";try {File file new File(path);FileWriter fileWriter new FileWriter(file,true);…...

Linux上管理文件系统

Linux上管理文件系统 机械硬盘 机械硬盘由多块盘片组成&#xff0c;它们都绕着主轴旋转。每块盘片上下方都有读写磁头悬浮在盘片上下方&#xff0c;它们与盘片的距离极小。在每次读写数据时盘片旋转&#xff0c;读写磁头被磁臂控制着不断的移动来读取其中的数据。 所有的盘片…...

【Linux】寿司线程池{单例模式之懒汉模式下的线程池}

文章目录 回顾单例模式0.多线程下的单例模式的意义1.什么是单例模式1.0设计模式1.1C单例模式的介绍及原理1.2拷贝构造和赋值重载的处理1.3if (nullptr ptr)&#xff0c;nullptr放在比较运算符的前面?1.4实现单例模式的方式 2.实现懒汉方式的单例模式2.1单线程的单例模式2.2多…...

Docker资源管理和分配指南

什么是cgroup&#xff1f; cgroups其名称源自控制组群&#xff08;control groups&#xff09;的简写&#xff0c;是Linux内核的一个功能&#xff0c;用来限制、控制与分离一个进程组&#xff08;如CPU、内存、磁盘输入输出等&#xff09;。 什么是Docker资源限制&#xff1f;…...

为什么索引的底层结构是B+树

B树 1.数据库与数据交互的单位是page,而B树的每个节点都是一个page,访问一个节点&#xff0c;就相当于进行了一次I/O操作。所以访问的节点越少&#xff0c;查找效率越大。而B树是矮胖的&#xff0c;查找深度也不会太大。 2.B树中的节点是有序存储的&#xff0c;对于范围查询、排…...

NLP学习路线指南总结

当然可以&#xff0c;以下是一份较为详细的NLP学习路线指南&#xff0c;帮助你逐步掌握自然语言处理的核心技术和应用。 一、基础知识与技能 语言学基础&#xff1a; 语言学基本概念&#xff1a;语音、语法、语义等。语言的层次与分类&#xff1a;语音学、音系学、句法学、语…...

电商网站模板/郑州seo技术博客

页眉设置为章节名&#xff08;WPS&#xff09; 最近在肝毕业论文&#xff0c;毕业论文最头疼的就是格式了&#xff0c;当时也是头疼&#xff0c;现在会了之后来总结一下 页眉页脚要求 一般毕设的页眉页脚的要求有 将 奇数页的页眉为 章序及章标题&#xff0c;例如&#xff1…...

WordPress网站关闭插件/5118网站如何使用免费版

昨天面试上来就是一个算法&#xff0c;平时基本的算法还行&#xff0c;结果变个法就不会了。。。感觉应该刷一波Leecode冷静下。。。今天抽空看下。题目就是要求O(n)复杂度求无序列表中第K的大元素如果没有复杂度的限制很简单。。。加了O(n)复杂度确实有点蒙虽然当时面试官说思…...

网站商城系统建设/怎么联系地推公司

解决方案&#xff1a; sudo easy_install pip...

宜城营销型网站套餐/seo优化行业

现在大部分人家里都会养些宠物&#xff0c;比如猫猫狗狗的&#xff0c;狗子很可爱&#xff0c;拆家很上头&#xff0c; 养狗有三怕&#xff1a;拆家、乱拉屎、整夜叫。虽然狗狗的一些行为习惯跟与遗传有关&#xff0c; 但是主人后天的影响也会给狗狗带来改变&#xff0c;因此…...

做电商网站一般需要什么流程图/互联网广告推广是做什么的

对于刚入门的PHP新手来说&#xff0c;可能对xdebug是什么都不太清楚。简单的说就是一个PHP程序错误调试工具。那有的新手朋友可能会问这个xdebug有什么用呢&#xff1f;xdebug工具可以用来分析跟踪程序的运行情况。xdebug工具能帮助PHP人员更高效更方便快捷地进行程序开发工作&…...

wordpress默认的h1标签放在哪里/seo广州工作好吗

NEW关注Tech逆向思维视频号最新视频→【都2021年了&#xff0c;为什么还有人裸聊被骗&#xff1f;】出品&#xff5c;开菠萝财经文 | 金玙璠 吴娇颖编辑 | 魏佳11月22日&#xff0c;仅次于薇娅和李佳琦、在淘宝直播排名第三的主播雪梨&#xff0c;没有如约现身直播间&#xf…...