NosQL之Redis配置与优化

目录

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

1.1、了解关系数据库与非关系型数据库

1.1.1、关系型数据库

1.1.2、非关系型数据库

1.2、非关系型数据库

1.2.1、概念

1.2.2、产生背景

1.2.3、非关系型数据库的主要特点

1.3、关系型数据库和非关系型数据库区别:

2、redis

2.1、概述:

2.2、Redis的主要特点包括:

2.3、Redis具有优点:

2.4、Redis为什么这么快:

2.5、redis部署

2.5.1、关闭防火墙

2.5.2、解压安装包

2.5.3修改配置 /etc/redis/6379.conf 参数

2.5.4、-redis-benchmark 测试工具

2.5.4.1、基本的测试语法:

2.6、.Redis 数据库常用命令

2.6.1创建与获取

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

2.6.2.1、查看数据所有键

2.6.2.2、查看当前数据库中以k 开头的数据

2.6.2.3、查看当前数据库中以 z开头后面包含任意一位的数据

 2.6.2.4、查看当前数据库中以k开头 k开头后面包含任意两位的数据

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

2.6.4、del 命令可以删除当前数据库的指定 key。

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

2.6.6、rename 命令是对已有 key 进行重命名。(覆盖)

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

2.6.7.1、使用config set requirepass yourpassword命令设置密码

2.6.8、Redis 多数据库常用命令

2.6.8.1、多数据库间切换

2.6.8.2、多数据库间移动数据


 

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

1.1、了解关系数据库与非关系型数据库

1.1.1、关系型数据库

一个结构化的数据库,创建在关系模型基础上

一般面向于记录

包括Oracle、MySQL、SQL Server、 Microsoft Access(postgresot)、DB2等

1.1.2、非关系型数据库

除了主流的关系型数据库外的数据库,都认为是非关系型

包括Redis、MongBD、Hbase、 CouhDB等

淘汰机制:内存负载高于限制,优先选择淘汰(删除)一些数据

命中机制:高并发环境下,数据访问频繁

1.2、非关系型数据库

1.2.1、概念

非关系型数据库(NoSQL)是一种用于存储和检索大量数据的数据库系统,与传统的关系型数据库(RDBMS)相对。它们被设计用于解决关系型数据库无法有效处理的大规模数据和高并发访问的问题

1.2.2、产生背景

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

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

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

1.2.3、非关系型数据库的主要特点

1. 非结构化数据模型:

与传统关系型数据库使用表格和行的结构不同,非关系型数据库使用各种数据模型来存储数据,如键值对、文档、图形和列族等。这种灵活性使得它们能够存储半结构化和非结构化数据,适应不同类型的数据存储需求。

2. 高度可伸缩性:

非关系型数据库通常采用分布式架构,可以轻松地水平扩展以处理大规模数据和高并发访问。通过添加更多的节点,数据库能够处理更大的负载,实现线性可伸缩性。

3. 高性能和低延迟:

由于非关系型数据库通常采用简单的数据模型,避免了复杂的关系查询和连接操作,因此能够提供更快的读写速度和较低的延迟。这对于需要处理大量请求和快速响应的应用程序非常重要。

4. 弱一致性:

非关系型数据库通常追求最终一致性而不是强一致性。这意味着在数据更新后,系统可能会存在一段时间的不一致状态。然而,这种权衡可以提高数据库的可用性和性能,并允许更大的分布式灵活性。

5. 多样化的数据模型:

非关系型数据库提供了多种数据模型,如键值对、文档、图形和列族等。这使得开发人员可以根据应用程序的具体需求选择最适合的数据模型,提高数据存储和检索的效率。

需要注意的是,尽管非关系型数据库在某些方面具有优势,但也存在一些限制。例如,它们不支持复杂的关系查询和事务处理,并且可能缺乏成熟的工具和生态系统。因此,在选择使用非关系型数据库时,需要权衡好其特点与应用需求之间的匹配程度。

1.3、关系型数据库和非关系型数据库区别:

1、数据存储方式不同

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

2、扩展方式不同

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

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

关系:纵向 比如说硬件中添加内存

非关:横向 天然分布式

3、对事务性的支持不同

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

2、redis

2.1、概述:

Redis (远程字典服务器) 是一个开源的、使用 C 语言编写的 NOSOL 数据库。 基于内存运行并支持持久化,采用key-value (键值对)的存储形式,是目前分布式架构中不可或缺的,服务器程序是单进程模型,也就是在一台服务器可以同时启动多个Redis进程,Bedis的实际外理速度

Redis(Remote Dictionary Server)是一个开源的高性能键值存储系统,属于非关系型数据库(NoSQL)。它以内存为主要数据存储方式,同时支持数据持久化到磁盘,并提供了丰富的数据结构和功能。

Redis最初由Salvatore Sanfilippo开发,旨在解决Web应用程序中常见的性能问题。它采用C语言编写,具有卓越的性能和低延迟。Redis支持多种数据结构,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)等。

2.2、Redis的主要特点包括:

1. 高性能:

Redis将数据存储在内存中,因此可以提供极快的读写速度。它使用了高效的数据结构和异步I/O等技术,使其具有出色的性能和低延迟。

2. 数据持久化:

Redis支持将部分数据持久化到磁盘上,确保数据的持久性。它提供了两种数据持久化方式:快照(snapshotting)和日志追加(append-only file)。

3. 多样的数据结构:

Redis支持多种数据结构,如字符串、哈希表、列表、集合和有序集合等。这些数据结构的灵活性使得Redis适用于各种应用场景。

4. 支持丰富的功能:

除了基本的数据存储和检索功能,Redis还提供了事务处理、发布/订阅消息机制、分布式锁、BitMap位图操作、地理位置信息存储和计数器等丰富的功能。

5. 分布式支持:

Redis支持主从复制和集群模式,实现数据的高可用性和水平扩展。它可以通过复制和分片来处理大规模的数据和高并发负载。

Redis被广泛应用于缓存、会话管理、消息队列、实时计数器等各种场景。它简单易用、性能出色,成为许多企业和开发者首选的数据存储解决方案之一。

2.3、Redis具有优点:

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

(2)支持丰富的数据类型:支持 key-value、Strings、Lists、Hashes、Sets 及 Sorted Sets 等数据类型操作。

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

(4)原子性:Redis 所有操作都是原子性的。 (5)支持数据备份:即 master-salve 模式的数据备份。

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

1. 高性能:

Redis将数据存储在内存中,因此能够实现极快的读写速度。它使用了高效的数据结构和异步I/O技术,具备出色的性能和低延迟。

2. 数据结构丰富:

Redis支持多种数据结构,如字符串、哈希表、列表、集合和有序集合等。这些数据结构的灵活性使得开发人员可以根据具体需求选择合适的数据结构,提高数据存储和处理的效率。

3. 缓存功能:

由于Redis的高性能和灵活的数据结构,它非常适用于作为缓存系统使用。将频繁访问的数据存储在Redis中,可以显著提高应用程序的响应速度和吞吐量。

4. 持久化支持:

Redis支持将部分或全部数据持久化到磁盘上,确保数据的持久性。通过快照(snapshotting)和日志追加(append-only file)两种方式,可以根据需求进行选择。

5. 分布式支持:

Redis支持主从复制和集群模式,实现数据的高可用性和水平扩展。通过复制和分片,可以将负载分散到多个节点,提高系统的容错性和扩展性。

6. 简单易用:

Redis具有简单明了的命令行接口和丰富的客户端库,使用起来非常方便。它提供了易于理解和操作的API,使得开发人员能够快速上手并与现有应用程序无缝集成。

7. 应用场景广泛:

由于Redis的高性能、多样的数据结构和丰富的功能,它在许多应用场景中都能发挥重要作用。例如,会话管理、实时计数器、消息队列、排行榜、地理位置服务等。

需要注意的是,虽然Redis具有这些优点,但它也有一些局限性,例如存储容量受限于内存大小、不支持复杂查询等。因此,在选择使用Redis时,需要根据具体需求进行综合评估并结合其他数据库系统来满足应用程序的需求。

2.4、Redis为什么这么快:

1、Redis是一款纯内存结构,避免了磁盘I/o等耗时操作。

2、Redis命令处理的核心模块为单线程,减少了锁竞争,以及频繁创建线程和销毁线程的代价,减少了线程上下文切换的消耗。

3、采用了 I/O 多路复用机制,大大提升了并发效率。

1. 内存存储:

Redis将数据主要存储在内存中,而不是磁盘上。相比于传统数据库系统需要从磁盘读取数据的IO操作,内存访问速度更快,因此Redis能够实现极高的读写性能。

2. 简单的数据结构:

Redis采用简单、轻量级的数据结构,如字符串、哈希表、列表、集合和有序集合等。这些数据结构在内存中可以高效地存储和访问,使得Redis的操作非常快速。

3. 高效的数据操作:

Redis使用了高效的数据结构和算法,以及优化的底层实现。例如,它使用哈希表来存储键值对,使得查找和更新操作的时间复杂度为O(1),保证了快速的数据访问。

4. 异步I/O模型:

Redis利用异步I/O模型,通过单线程处理多个客户端请求。这种非阻塞的方式使得Redis能够同时处理大量的并发请求,提高了系统的吞吐量。

5. 零拷贝技术:

Redis使用零拷贝技术在网络传输中减少数据的复制次数,避免了额外的CPU和内存开销,提高了网络传输的效率。

6. 缓存系统:

作为一种常见的缓存系统,Redis将热点数据存储在内存中,并提供了高效的缓存策略,如LRU(最近最少使用)、LFU(最不常用)等。这样可以减少对后端存储系统的访问,进一步提高性能。

需要注意的是,尽管Redis具有很高的性能,但也有一些限制因素,例如单线程处理请求可能会受到硬件资源的限制,同时内存容量也会限制可存储的数据量。因此,在实际应用中,需要根据具体的场景和需求来合理配置和使用Redis,以获得最佳的性能和吞吐量。

2.5、redis部署

2.5.1、关闭防火墙

2.5.2、解压安装包

需要手动修改为 /usr/local/redis/bin/redis-server ,注意要一次性正确输入

2.5.3修改配置 /etc/redis/6379.conf 参数

70行,添加 监听的主机地址

Redis默认的监听端口

启用守护进程

需要将服务启动

2.5.4、-redis-benchmark 测试工具

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

2.5.4.1、基本的测试语法:

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

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

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

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

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

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

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

2.6、.Redis 数据库常用命令

2.6.1创建与获取

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

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

创建键值对

2.6.2.1、查看数据所有键

192.168.41.21:6379> keys *        查看当前数据库中所有键

2.6.2.2、查看当前数据库中以k 开头的数据

192.168.41.21:6379> keys k*

2.6.2.3、查看当前数据库中以 z开头后面包含任意一位的数据

192.168.41.21:6379> keys z?

 2.6.2.4、查看当前数据库中以k开头 k开头后面包含任意两位的数据

192.168.41.21:6379> keys k??

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

  1 表示 teacher 键是存在

0 表示 tea 键不存在

192.168.41.21:6379>  exists k47

2.6.4、del 命令可以删除当前数据库的指定 key。

192.168.41.21:6379> del zo

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

192.168.41.21:6379> type k1

2.6.6、rename 命令是对已有 key 进行重命名。(覆盖)

 命令格式:

rename 源key 目标key

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

rename 命令,以避免覆盖重要数据。

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

127.0.0.1:6379> dbsize

2.6.7.1、使用config set requirepass yourpassword命令设置密码

192.168.41.21:6379>  config set requirepass abc123

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

2.6.8、Redis 多数据库常用命令

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

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

2.6.8.1、多数据库间切换

命令格式:select 序号

192.168.41.21:6379> select 15

2.6.8.2、多数据库间移动数据

格式:move 键值 序号

192.168.41.21:6379> move k1 2    #将数据库 0 中 k1 移动到数据库 2中
(integer) 1
192.168.41.21:6379> select 2       切换至目标数据库 2
OK
192.168.41.21:6379[2]> keys *
1) "k1"

 

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

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

相关文章

CMake生成Visual Studio工程

CMake – 生成Visual Studio工程 C/C项目经常使用CMake构建工具。CMake 项目文件&#xff08;例如 CMakeLists.txt&#xff09;可以直接由 Visual Studio 使用。本文要说明的是如何将CMake项目转换到Visual Studio解决方案(.sln)或项目(.vcxproj) 开发环境 为了生成Visual S…

GptFuck—开源Gpt4分享

这个项目不错&#xff0c;分享给大家 项目地址传送门

mac安装adobe需要注意的tips(含win+mac all安装包)

M2芯片只能安装2022年以后的&#xff08;包含2022年的&#xff09; 1、必须操作的开启“任何来源” “任何来源“设置&#xff0c;这是为了系统安全性&#xff0c;苹果希望所有的软件都从商店或是能验证的官方下载&#xff0c;导致默认不允许从第三方下载应用程序。macOS sie…

GD32F470 MDK AC DSP库移植流程

前言 花费了将近大半天的时间&#xff0c;故简单记录一下&#xff0c;避免自己忘记&#xff0c;还未经更多的测试&#xff0c;所以仅供参考。 由于CMSIS的更新&#xff0c;在CMSIS v5.7.0版本之后&#xff0c;CMSIS-DSP 中已不再提供编译好的 lib文件。并且GitHub CMSIS仓库中…

深度优先搜索(dfs)--矩阵部分-leetcode以及常见题

介绍 深度优先搜索&#xff08;Depth-First Search&#xff0c;DFS&#xff09;是一种常用的图搜索算法&#xff0c;它用于查找图或树数据结构中的路径或解决问题。下面是深度优先搜索的常见步骤以及一个示例问题&#xff1a; 深度优先搜索的常见步骤&#xff1a; 选择起始节…

Jenkins实现基础CD操作

操作截图 在Jenkins里面设置通过标签进行构建 在Jenkins中进入项目&#xff0c;配置以下 将execute shell换到invoke top-level maven targets之前 在gitlab中配置标签 代码迭代新的版本 项目代码迭代 修改docker-compose.yml 提交新版本的代码 在Jenkins中追加新…

Linux CentOS7设置时区

在Linux系统中&#xff0c;默认使用的是UTC时间。 即使在安装系统的时候&#xff0c;选择的时区是亚洲上海&#xff0c;Linux默认的BIOS时间&#xff08;也称&#xff1a;硬件时间&#xff09;也是UTC时间。 在重启之后&#xff0c;系统时间会和硬件时间同步&#xff0c;如果…

rtthread下spi device架构MCP25625驱动

1.CAN驱动架构 由于采用了RTT的spi device架构&#xff0c;不能再随心所遇的编写CAN驱动 了&#xff0c;之前内核虽然采用了RTT内核&#xff0c;但是驱动并没有严格严格按RTT推荐的架构来做&#xff0c;这次不同了&#xff0c;上次是因为4个MCP25625挂在了4路独立的SPI总线上&…

git修改默认分支

git checkout 分支 切换到当前分支 git branch --set-upstream-toorigin/complete(远程分支名) 设置当前分支的上游分支为远程分支complete git branch --unset-upstream master 取消master上游分支的身份 现在&#xff0c;使用git commit&#xff0c;git push 命令可以直接…

2023年亲测有效----树莓派启动时自动邮件上报ip

2023年亲测 树莓派启动时自动邮件上报ip 首先开启qq邮箱smtp服务shell文件内容启动自动执行python文件注意事项 首先开启qq邮箱smtp服务 然后点击开启就会有授权码 shell文件内容 在自己的shell里&#xff0c;运行echo $PATH&#xff0c;把内容覆盖下面的path。 功能 作用就…

大数据技术之Hadoop:使用命令操作HDFS(四)

目录 一、创建文件夹 二、查看指定目录下的内容 三、上传文件到HDFS指定目录下 四、查看HDFS文件内容 五、下载HDFS文件 六、拷贝HDFS文件 七、HDFS数据移动操作 八、HDFS数据删除操作 九、HDFS的其他命令 十、hdfs web查看目录 十一、HDFS客户端工具 11.1 下载插件…

【vue2第十五章】VueRouter 路由配置(VueRouter)与使用 和 router-link与router-view标签使用

单页面应用 与 多页面应用 单页面应用&#xff08;Single-Page Application&#xff0c;SPA&#xff09;和多页面应用&#xff08;Multi-Page Application&#xff0c;MPA&#xff09;是 Web 应用程序的两种不同架构方式。它们在页面加载和交互方式上有所区别。 单页面应用&a…

RabbitMQ:hello结构

1.在Linux环境上面装入rabbitMQ doker-compose.yml version: "3.1" services:rabbitmq:image: daocloud.io/library/rabbitmq:managementrestart: alwayscontainer_name: rabbitmqports:- 6786:5672- 16786:15672volumes:- ./data:/var/lib/rabbitmq doker-compos…

【网络编程】TCP传输控制协议(Transmission Control Protocol)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

【回眸】牛客网刷刷刷!(八)——中断专题

目录 前言 1、在CortexM内核中&#xff0c;当系统响应一个中断时 2、用与非门和或非门可以实现其他基本门电路。进而实现任何逻辑电路 3、cpu interface提供了功能包含 4、以Cortex-M3内核为例&#xff0c;如果某个中断在得到响应之前&#xff0c;其请求信号以若干的脉冲的…

超越时间与人力的软件开发智慧:《人月神话》

目录 1、写在前面2、沟通&#xff01;沟通&#xff01;沟通&#xff01;3、“银弹论”4、“人月神话”不能成立的原因5、影响力6、图书推荐 1、写在前面 《人月神话》是由计算机科学家弗雷德里克布鲁克斯所著的一本经典著作&#xff0c;首次出版于1975年。这本书以一个个小故事…

SSL证书系列--又拍云Let’s Encrypt免费DV SSL证书使用教程

原文网址&#xff1a;SSL证书系列--又拍云Let’s Encrypt免费DV SSL证书使用教程_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何使用又拍云部署Let’s Encrypt免费DV SSL证书。 一、了解Let’s Encrypt 了解和关注SSL证书的朋友&#xff0c;似乎没有理由不知道 Let’s Encr…

苹果与芯片巨头Arm达成20年新合作协议,将继续采用芯片技术

9月6日消息&#xff0c;据外媒报道&#xff0c;芯片设计巨头Arm宣布在当地时间周二提交给美国证券交易委员会&#xff08;SEC&#xff09;的最新IPO文件中&#xff0c;透露与苹果达成了一项长达20年的新合作协议&#xff0c;加深了双方之间的合作关系。 报道称&#xff0c;虽然…

进入低功耗和唤醒

休眠模式 进入休眠模式 如果使用 WFI 指令进入睡眠模式&#xff0c;则嵌套向量中断控制器 (NVIC) 确认的任意外设中断都会 将器件从睡眠模式唤醒。 如果使用 WFE 指令进入睡眠模式&#xff0c;MCU 将在有事件发生时立即退出睡眠模式。唤醒事件可 通过以下方式产生&#xff…

jvs-智能bi(自助式数据分析)9.1更新内容

​jvs-智能bi更新功能 1.报表增加权限功能&#xff08;服务、模板、数据集、数据源可进行后台权限分配&#xff09; 每个报表可以独立设置权限&#xff0c;通过自定义分配&#xff0c;给不同的人员分配不同的权限。 2.报表新增执行模式 可选择首次报表加载数据为最新数据和历…