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

news2024/11/17 19:33:41

文章目录

  • 一、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.coloradmin.cn/o/707198.html

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

相关文章

Learn Mongodb了解DB数据库 ④

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; PHP MYSQL &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &#x1f44…

SIMATIC WINCC中实现弹窗跟随鼠标功能(C语言脚本)的具体方法示例

SIMATIC WINCC中实现弹窗跟随鼠标功能(C语言脚本)的具体方法示例 具体C语言脚本可参考以下代码: #include "apdefap.h" //添加的头文件//定义的函数 void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char

七.错误处理

目录 1、错误处理 1、error一般是处理一些比较低级的错误&#xff0c;不会造成程序中断或者宕机。 2、panic一般是发生了致命的错误时才会被调用&#xff0c;例如数组越界&#xff0c;空指针等等&#xff0c; 2.1 手动调用panic 2.2 数组越界造成panic 2、recover函数 1、…

PaddleSeg中交互式分割EISeg的使用

EISeg(Efficient Interactive Segmentation)是基于飞桨开发的一个高效智能的交互式分割标注软件。它涵盖了通用、人像、遥感、医疗、视频等不同方向的高质量交互式分割模型。另外&#xff0c;将EISeg获取到的标注应用到PaddleSeg提供的其他分割模型进行训练&#xff0c;便可得到…

stm32-iic 时序驱动

数据发送 #include "IIC.h" #include "delay.h"void IIC_Init(void){GPIO_InitTypeDef GPIO_InitStruct;//使能GPIPFRCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//初始GPIGB8 GPIGB9 GPIO_InitStruct.GPIO_Pin GPIO_Pin_8 | GPIO_Pin_9; …

4.28 白噪声功率谱密度的估计

前一节有下面结论&#xff1a; 什么仿真的白噪声波形是均匀的&#xff0c;均匀的特点是相关函数在0时刻是相关的&#xff08;自己和自己相关的&#xff09;0以外时刻都互相不相关

PLC 网关设备如何进行数据采集?

引言&#xff1a; 在现代工业领域&#xff0c;PLC&#xff08;可编程逻辑控制器&#xff09;被广泛应用于自动化控制系统。为了实现高效的数据收集和分析&#xff0c;工业边缘网关扮演着重要角色。本文将探讨PLC网关设备如何进行数据采集&#xff0c;并介绍一款优秀的工业边缘网…

JVM-jvisualvm性能监控可视化工具使用与eden-s0-s1分配分析(三)

目录 第一步&#xff1a;安装jvisualvm 第二步&#xff1a;安装VisualvmGc插件 方式一&#xff1a;jvisualvm工具直接下载安装 方式二&#xff1a;去官网下载导入安装 总结 第三步&#xff1a;idea安装VisualvM Launcher插件 第四步&#xff1a;演示young中eden、s0、s1垃…

浅谈小程序开发 [2018年]

一、问题背景 随着App市场趋近于饱和&#xff0c;大部分用户已经养成了使用习惯&#xff0c;加上开发和推广新的App的成本高&#xff0c;使得开发新的App很难在市场上生存。在此背景下&#xff0c;小程序应运而生&#xff0c;2016年&#xff0c;张小龙的微信团队首次推出了微信…

vmware虚拟机无法启动修复

虚拟机场景报错&#xff1a;Entering emergency mode. Exit the shell to continue. #输入journalctl journalctl #如果出现以下描述&#xff1a; failed to mount /sysroot. Dependency failed for Initrd root File System. Dependency failed for Reload configuration fro…

信息服务上线渗透检测网络安全检查报告和解决方案4(网站风险等级评定标准、漏洞危害分级标准、漏洞安全建议)

系列文章目录 信息服务上线渗透检测网络安全检查报告和解决方案3(系统漏洞扫描、相对路径覆盖RPO漏洞、nginx漏洞修复)信息服务上线渗透检测网络安全检查报告和解决方案2(安装文件信息泄漏、管理路径泄漏、XSS漏洞、弱口令、逻辑漏洞、终极上传漏洞升级)信息服务上线渗透检测网…

CCF-CSP真题《202303-2 垦田计划》思路+python,c++满分题解

想查看其他题的真题及题解的同学可以前往查看&#xff1a;CCF-CSP真题附题解大全 试题编号&#xff1a;202303-2试题名称&#xff1a;垦田计划时间限制&#xff1a;1.0s内存限制&#xff1a;512.0MB问题描述&#xff1a; 问题描述 顿顿总共选中了 n 块区域准备开垦田地&#xf…

交换机是否会梦见机器学习?面向网络内分类

交换机是否会梦见机器学习&#xff1f;面向网络内分类 摘要 机器学习目前正在推动技术和社会革命。虽然可编程交换机已被证明对网络内计算非常有用&#xff0c;但是在可编程交换机内进行机器学习迄今为止取得了很少的成功。不利用网络设备进行机器学习会付出高昂的代价&#…

华为OD机试真题 JavaScript 实现【寻找峰值】【牛客练习题】

一、题目描述 给定一个长度为n的数组nums&#xff0c;请你找到峰值并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个所在位置即可。 1.峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于&#xff1b; 2.假设 nums[-1] n…

【容器起不来~tomcat】

记录一次线上容器~tomcat起不来的场景: **部门由于资金有限,只能用tomcat去部署,话不多说直接贴图: Docker 镜像 Tomcat 启动失败– 查看线上日志,日志报错了,报错内容如下: 1,Error response from daemon: driver failed programming external connectivityon endpoint jen…

Safari开发者工具

Safari开发者工具 1 开发者功能2 开发者功能可以干什么2.1 捕获模拟器的请求 1 开发者功能 Safari->首选项->高级->开启“在菜单栏中显示‘开发’菜单” 2 开发者功能可以干什么 2.1 捕获模拟器的请求 当我们向查看模拟器上一个完整的网络请求时&#xff0c;往往…

libevent实践06:监听TCP服务器

简介 函数evconnlistener_new_bind struct evconnlistener * evconnlistener_new_bind(struct event_base *base, evconnlistener_cb cb,void *ptr, unsigned flags, int backlog, const struct sockaddr *sa,int socklen) 参数解析&#xff1a; base&#xff1a;事件集合 ev…

Python 字符串的使用

字符串使用 1. 字符串的定义方式 双引号或者单引号括起来的数据&#xff0c;就是字符串。使用三引号括起来也是字符串&#xff0c;并支持换行。 例&#xff1a; # 使用反斜线 对单引号进行转义 name1 i\ Tom name2 "Rose" name3 Tom name4 ""&qu…

8-什么是数组重塑?【视频版】

目录 问题视频解答 问题 视频解答 点击观看&#xff1a; 8-什么是数组重塑&#xff1f;

[mmcv系列] pip安装mmcv记录

文章目录 1.查看torch和cuda版本1.安装1.1从预编译包安装1.2 源码编译安装 2.校验报错&#xff1a;from mmcv import Config 可以直接 参考教程&#xff1a; 找到pip安装&#xff0c;选择自己的cuda和torch版本&#xff0c;复制指令到终端安装即可&#xff1a; 1.查看torch和c…