Redis概述及安装、使用和管理

文章目录

  • 一、NoSQL非关系型数据库
    • 1.NoSQL概述
    • 2.关系型数据库和非关系型数据库区别
      • (1)数据存储方式不同
      • (2)扩展方式不同
      • (3)对事务性的支持不同
    • 3.非关系型数据库使用场景
  • 二、Redis概述
    • 1.简介
    • 2.优点
    • 3.Redis读写快的原因
    • 4.适用场景
  • 三、Redis安装配置
  • 四、Redis的使用
    • 1.命令行工具redis-cli(登录)
    • 2.测试工具redis-benchmark(测试)
    • 3.redis命令的使用
      • (1)存入键值对
      • (2)获取键的值
      • (3)判断键的数据类型(redis默认数据类型为string)
      • (4)查看键
      • (5)判断键是否存在
      • (6)删除键
      • (7)修改键名
      • (8)统计键数量
      • (9)设置密码
      • (10)查看当前密码
      • (11)删除密码
    • 4.Redis多库常用命令
      • (1)切换数据库
      • (2) 将数据移动到指定库
  • 五、Redis性能管理
    • 1.查看内存使用
    • 2.清理内存碎片
      • (1)内存碎片如何产生
      • (2)内存碎片率
      • (3)清理内存碎片
    • 3.内存使用率
    • 4.内回收key

一、NoSQL非关系型数据库

1.NoSQL概述

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

不需要预先建库建表定义数据存储表结构,每条记录可以有不同的数据类型和字段个数(比如微信群聊里的文字、图片、视频、音乐等)。

主流的 NoSQL数据库有 Redis、MongBD、Hbase、Memcached、ElasticSearch、TSD等。

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

(1)数据存储方式不同

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

SQL数据库天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。

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

(2)扩展方式不同

关系型和非关系型数据库最大的差别是在扩展方式上,要支持日益增长的需求当然要扩展。

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

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

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

如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。

SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。

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

3.非关系型数据库使用场景

可用于应对web2.0纯动态网站类型的三高问题(高并发、高性能、高可用)。

  • High performance——对数据库高并发读写需求;
  • Huge Storage——对海量数据高效存储与访问需求;
  • High Scalability and High Availability——对数据库高可扩展性与高可用性需求。

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

二、Redis概述

1.简介

Redis(远程字典服务器)是一个开源的、使用c语言编写的 NoSQL数据库。

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

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

2.优点

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

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

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

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

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

3.Redis读写快的原因

Redis基于内存运行,避免了磁盘I/O等耗时操作。

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

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

采用了I/O多路复用机制,减少网络I/O消耗,大大提升了并发效率。

4.适用场景

Redis作为基于内存运行的数据库,是一个高性能的缓存,一般应用在session缓存、队列
、排行榜、计数器、最近最热文章、最近最热评论、发布订阅等。

Redis 适用于数据实时性要求高、数据存储有过期和淘汰特征的、不需要持久化或者只需
要保证弱一致性、逻辑简单的场景。

三、Redis安装配置

#将安装包放在/opt下
cd /opt
tar xf redis-5.0.7.tar.gz
cd redis-5.0.7/#编译
make#安装到指定目录
make install PREFIX=/usr/local/redis

还需要到安装包中的utils/下,执行install_server.sh

在这里插入图片描述
再在配置文件/etc/redis/6379.conf中修改监听地址

在这里插入图片描述

四、Redis的使用

在这里插入图片描述

1.命令行工具redis-cli(登录)

在这里插入图片描述

2.测试工具redis-benchmark(测试)

redis-benchmark [选项] [选项值]-h        指定服务器主机名-p        指定服务器端口-s        指定服务器 socket-c        指定并发连接数-n        指定请求数-d        以字节的形式指定SET/GET值的数据大小-k        1代表keep alive保持连接 ;0代表reconnect重连-r         SET、GET、INCR 使用随机key ;SADD使用随机值-P        通过管道传输<numreg>请求-q         强制退出redis 仅显示query/sec值--csv    以CSV格式(,分割字段的文本)输出-l          生成循环,永久执行测试-t          仅运行以逗号分隔的测试命令列表-I          Idle模式(仅打开N个idle连接并等待)
#向IP地址为192.168.109.133、端口为6379的Redis服务器发送100个并发连接与100000个请求测试性能
redis-benchmark -h 192.168.116.10 -p 6379 -c 100 -n 100000

在这里插入图片描述

#测试存取大小为100字节的数据包的性能
redis-benchmark -h 192.168.116.10 -p 6379 -q -d 100

在这里插入图片描述

#测试本机上Redis服务在进行set与lpush操作时的性能
redis-benchmark -t set,lpush -n 100000 -q

在这里插入图片描述

3.redis命令的使用

(1)存入键值对

SET 键 值

在这里插入图片描述

(2)获取键的值

GET 键

在这里插入图片描述

(3)判断键的数据类型(redis默认数据类型为string)

TYPE 键

在这里插入图片描述
Redis中的五大数据类型

在这里插入图片描述

(4)查看键

KEYS * 查看所有键
KEYS 通配符 查看通配符匹配的指定键

在这里插入图片描述

(5)判断键是否存在

EXISTS 键

在这里插入图片描述

(6)删除键

DEL 键

在这里插入图片描述

(7)修改键名

RENAME 原键名 新键名
若要更改的新键名已存在,则会覆盖此键名的值(建议改名前先exists一下)或使用:
RENAMENX 原键名 新键名 //修改前判断新键名是否存在,存在则返回0,不存在则返回1并执行修改

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(8)统计键数量

DBSIZE

在这里插入图片描述

(9)设置密码

CONFIG SET REQUIREPASS 密码
在这里插入图片描述

AUTH 密码 登入后做验证
在这里插入图片描述

(10)查看当前密码

CONFIG GET REQUIREPASS
在这里插入图片描述

(11)删除密码

CONFIG SET REQUIREPASS ‘’

在这里插入图片描述

4.Redis多库常用命令

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

(1)切换数据库

SELECT 库号
在这里插入图片描述

(2) 将数据移动到指定库

MOVE 键 库号
在这里插入图片描述

五、Redis性能管理

1.查看内存使用

info memory
在这里插入图片描述

mem fragmentation _ratio #内存碎片率 = used memory_rss / used memoryused
memory _rss #是Redis向操作系统申请的内存。
used memory #是Redis中的数据占用的内存。
used memory peak # redis内存使用的峰值。

2.清理内存碎片

(1)内存碎片如何产生

Redis内部有自己的内存管理器,为了提高内存使用的效率,来对内存的申请和释放进行管理。

Redis中的值删除的时候,并没有把内存直接释放,交还给操作系统,而是交给了Redis内部有内存管理器。

Redis中申请内存的时候,也是先看自己的内存管理器中是否有足够的内存可用。

Redis的这种机制,提高了内存的使用率,但是会使Redis中有部分自己没在用,却不释放的内存,导致了内存碎片的发生。

(2)内存碎片率

跟踪内存碎片率对理解Redis实例的资源性能是非常重要的

  • 内存碎片率在1到1.5之间是正常的,这个值表示内存碎片率比较低,也说明Redis没有发生内存交换。
  • 内存碎片率超过1.5,说明Redis消耗了实际需要物理内存的150%,其中50%是内存碎片率。
  • 内存碎片率低于1的,说明Redis内存分配超出了物理内存,操作系统正在进行内存交换。需要增加可用物理内存或减少Redis内存占用。

(3)清理内存碎片

Redis版本4.0以下

    需要在 redis-cli工具上输入shutdown save 命令,让Redis数据库执行保存操作并关闭Redis服务,再重启服务器。Redis服务器重启后,Redis会将没用的内存归还给操作系统,碎片率会降下来。

Redis4.0版本以上

    执行 config set activedefrag yes,开启自动碎片清理;执行 memory purge,手动碎片清理。

3.内存使用率

    redis实例的内存使用率超过可用最大内存,操作系统将开始进行内存与swap空间交换,导致性能大大降低。

避免内存交换发生的方法

  • 针对缓存数据大小选择安装 Redis实例
  • 尽可能的使用Hash数据结构存储
  • 设置key的TTL生命周期(setex 键名 时间(s) 值)

4.内回收key

内存清理策略,保证合理分配redis有限的内存资源。默认情况下回收策略是禁止删除,当达到设置的最大阀值时,需选择一种key的回收策略。

配置文件中修改maxmemory-policy属性值
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

go读写文件总结

别人的经验&#xff1a; 如今任何计算机系统每天都会产生大量的日志或数据。随着系统的增长&#xff0c;将调试数据存储到数据库中是不可行的&#xff0c;因为它们是不可变的&#xff0c;主要用于分析和解决故障的目的。因此&#xff0c;企业倾向于将其存储在文件中&#xff0…

使用conda虚拟环境,Jupyter Notebook 链接不上 kernel

1&#xff0c;检查 ipykernel 和 ipython 是否一致 输入pip list 或者conda list检查一下相应库的版本是不一致 不一致的话&#xff0c;可以更新这两个库的版本&#xff1a;pip install --upgrade 库名 2&#xff0c;看控制台的报错&#xff0c;如果是报404&#xff0c;内核找不…

【Linux】软硬链接与动静态库

系列文章 收录于【Linux】文件系统 专栏 关于文件描述符与文件重定向的相关内容可以移步 文件描述符与重定向操作。 可以到 浅谈文件原理与操作 了解文件操作的系统接口。 想进一步理解文件系统还可以看看文件缓冲区和文件系统。 目录 系列文章 软硬链接 软链接 硬链接…

vue(脚手架创建)代理解决跨域问题

目录 为什么会出现跨域问题 什么是跨域 Vue CLI Vue2解决跨域问题 不重写路径 重写路径 vue.config.js代码 Vue3解决跨域问题 ViteVue解决跨域问题 vite.config.ts代码 总结 为什么会出现跨域问题 出于浏览器的同源策略的限制。同源策略是一种约定&#xff0c;它是…

Linux网络环境配置

第一种方式&#xff08;自动获取&#xff09;&#xff1a; 说明&#xff1a;登陆后&#xff0c;通过界面的来设置自动获取IP 特点&#xff1a;Linux启动后会自动获取IP 缺点&#xff1a;是每次自动获取的IP地址可能不一样 第二种方法&#xff08;指定IP)&#xff1a; 1、说明…

科技资讯|2023Q1中国电动汽车销量增长 29%,充电桩市场持续增长

根据市场调查机构公布的 2023 年第 1 季度中国国内电动汽车市场报告&#xff0c;比亚迪继续引领竞争日益激烈的电动汽车市场。 报告称 2023 年第 1 季度中国乘用电动汽车销量同比增长 29%&#xff0c;其中纯电动汽车&#xff08;BEV&#xff09;占销售额的近 70%、插电式混合…

Java——《面试题——网络篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《面试题——MySQL篇》​​​​​​ Java——《面试题——SpringCloud》 Java…

Python笔记-1

Python安装问题 1.python是一门解释性的计算机程序语言。 2.IDLE就是我们写Python程序的地方&#xff08;小型的集成开发环境&#xff0c;编辑器&#xff09;。 3.Pycharm是一个大型的集成开发环境&#xff08;IDLE的扩展&#xff0c;不仅可以写&#xff0c;还能管理、调试&am…

基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建

系列文章目录 基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)…

HCIP(HCIA回顾)

OSI/RM 七层 应用层 表示层 会话层 传输层 区分不同的流量&#xff0c;定义传输方式。 端口号由16位二进制构成&#xff0c;范围为0~65535(其中0不作为传输层的端口使用)&#xff0c;所以真实取值范围为1~65535&#xff1b;其中&#xff0c;1~1023称为知名端口号。 1、可靠…

【Docker】Docker的优势、与虚拟机技术的区别、三个重要概念和架构及工作原理的详细讲解

前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 &#x1f4d5;作者简介&#xff1a;热…

Ubuntu查看显卡信息

查看显卡信息&#xff0c;终端输入 lspci | grep VGA 输出结果 0000:65:00.0 VGA compatible controller: NVIDIA Corporation Device 24b0 (rev a1) 发现是十六进制码&#xff0c;进入网址PCI Devices查询&#xff0c;输入 24b0 并点击 Jump&#xff0c;得到结果 显卡型号…