Redis概述及安装、使用和管理(烦心事永久打烊)

news2024/11/24 3:47:45

文章目录

  • 一、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/716782.html

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

相关文章

Spark计算引擎介绍

1. Spark是什么 Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。 Spark是加州大学伯克利分校的AMP实验室&#xff08;Algorithms, Machines and People Lab&#xff09;开源的类Hadoop MapReduce的通用并行框架&#xff0c;拥有Hadoop MapReduce所具有的优点&…

1、hadoop集群搭建

1、 Hadoop运行环境搭建 1.1、修改主机名和hosts文件 1&#xff09;修改主机名称 sudo hostnamectl set-hostname <newhostname>sudo hostnamectl set-hostname hadoop101 sudo hostnamectl set-hostname hadoop102 sudo hostnamectl set-hostname hadoop103 2&#…

C# ref out的使用与区别

Ref 和 out可以理解为类似的传址引用。 在函数需要外部传入一个变量名&#xff0c;然后在程序内部可以将这个值进行修改&#xff0c;典型的传址引用&#xff01;在定义时必要加ref或out说明&#xff01; Ref和Out的区别&#xff1a; ref 关键字使参数按引用传递。其效果是&am…

炼石白小勇:从业务视角重塑数据安全

2023年6月27日&#xff0c;由中国信息通信研究院、中国通信标准化协会主办&#xff0c;中国通信标准化协会大数据技术标准推进委员会承办&#xff0c;数据安全推进计划支持的2023年大数据产业发展大会-数据安全高质量发展论坛在北京成功召开。 本次论坛由中国信通院云计算与大数…

maven 环境配置踩坑

今晚在跟着视频学习spring的时候&#xff0c;创建maven工程&#xff0c;一直提示Sync 下载异常。搞了一晚上终于搞定了环境。下面给出一下今晚的总结。 1、确保maven安装并配置好环境变量。 下载并安装maven后&#xff0c;还需要在电脑上配置maven的环境变量。这部分参考网络教…

关于windows本机开放端口后,同一个网络下的其他电脑telnet不通的解决办法

前提&#xff1a;电脑A与电脑B均在同一个wifi下。 本地电脑A 启动了一个kong网关&#xff08;不管是什么应用&#xff0c;只要开启了一个监听端口就行&#xff09;&#xff0c;并且将docker里面的8000端口映射到本机的8000端口&#xff0c; 此时在电脑A上的命令行运行&#xf…

2023 IJCAI YES 青年精英学术大会正式开幕:群贤毕至,开启为期三天的智慧盛宴

内容一览&#xff1a; 2019 年&#xff0c;艾伦人工智能研究所发布《中国在人工智能研究领域超越美国》研究报告。这份报告反映了中国人工智能领域从「数」到「质」的飞跃&#xff0c;这不仅得益于国家政策的推动&#xff0c;更因为众多国内高校的不懈探索。 当前&#xff0c;人…

HTML和CSS配合制作一个简单的登录界面

HTML和CSS配合制作一个简单的登录界面 界面HTMLCSS解释语法 界面 HTML <!DOCTYPE html> <html lang"en"> <head><title>篮球世界</title><meta charset"UTF-8"><link type"text/css" rel"styleshe…

关注电动汽车(EV)能效水平 提高电动汽车续航能力

电动汽车&#xff08;EV&#xff09;近些年发展迅猛&#xff0c;已被汽车业内普遍认为是未来汽车发展的新方向&#xff0c;但现如今电动汽车仍然存在一些短板&#xff0c;导致其还无法替代传统燃油车。对此&#xff0c;首先想到的肯定就是电动车的续航问题。其实解决电动车续航…

揭秘Vue 2中的$nextTick:等待DOM更新的神奇时刻!

文章目录 1. 队列机制2. 异步执行3. 标记更新4. 下一次 DOM 更新循环5. 触发回调函数 在 Vue 2 中&#xff0c;$nextTick 是一个异步方法&#xff0c;用于在下次 DOM 更新循环结束后执行回调函数。 它的原理可以解析如下&#xff1a; 1. 队列机制 Vue 2 维护了一个队列&…

最火的 CI/CD 平台 Jenkins 详细搭建教程(for Linux)

在正式学习Jenkins之前我们需要对两个名词有一定了解&#xff0c;其一是DevOps&#xff0c;另外一个就是CI/CD。 何为DevOps&#xff1f; 来自wiki百科介绍 DevOps是一系列软件开发实践&#xff0c;强调开发人员&#xff08;Dev&#xff09;和测试人员&#xff08;QA&#xf…

【零基础入门学习Python---Python中数据分析与可视化之快速入门实践】

&#x1f680; 零基础入门学习Python&#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜…

css基础知识十六:如何实现单行/多行文本溢出的省略样式?

一、前言 在日常开发展示页面&#xff0c;如果一段文本的数量过长&#xff0c;受制于元素宽度的因素&#xff0c;有可能不能完全显示&#xff0c;为了提高用户的使用体验&#xff0c;这个时候就需要我们把溢出的文本显示成省略号 对于文本的溢出&#xff0c;我们可以分成两种…

学习之路不可或缺的软件宝藏,一起分享吧

在当今数字化时代&#xff0c;学习变得更加便利和多样化。为了助力你的学习之路&#xff0c;我将分享一些不可或缺的学习必备软件&#xff0c;让你事半功倍。 分享一&#xff1a;小睡眠 小睡眠是一款睡眠神器&#xff0c;专为那些每天晚上压力过大、思虑过多而难以入睡的人设…

【已解决】使用pyaudio内录声卡声音及相关问题

使用pyaudio内录声卡声音及相关问题解决 目录 使用pyaudio内录声卡声音及相关问题解决1 实现代码1.1 Recorder类&#xff1a;1.2 调用方法 2 问题一&#xff1a;选择设备实现内录/外录&#xff08;解决报错&#xff1a;OSError: [Errno -9999] Unanticipated host error&#x…

Vue Vite Manual

create project 初始化项目 $ npm create vitelatest导入vs code 方便操作 初始化的目录如下 安装依赖库 生成node_modules依赖库 和 package-lock.json. 其中package-lock.json用于锁定模块的版本号。 npm install启动项目 npm run dev项目配置 增加路由器 路由器 n…

骑行,究竟该不该佩戴护膝?应该怎么佩戴护膝才有效果?

骑行作为一项受欢迎的运动方式&#xff0c;在现代社会中越来越受到关注和热爱。随着骑行爱好者的增多&#xff0c;对于个人保护意识的重视也在逐渐提高。在这个话题中&#xff0c;一个备受关注的问题就是骑行时是否有必要戴护膝&#xff0c;以及如何正确佩戴护膝。 对于骑行爱好…

SAP生产版本和工艺路线由于批量不一致导致的报错问题解决实例

近期接到工艺用户问题&#xff0c;在维护生产版本时报错&#xff0c;状态异常&#xff0c;寻求支持。 在详细的提示信息中有一个生产版本不一致的提示&#xff0c;但不知这里的不一致具体指向什么&#xff0c;从逻辑上来推&#xff0c;这里只有一个可能&#xff0c;就是工艺路线…

windows 和华为手机使用charles抓包记录

1.下载charles 建议安装使用最新版&#xff0c;官方下载地址 https://www.charlesproxy.com/download help->Register->把上面的生成注册码放进去就行了&#xff08;在charles注册地址里面注册一下&#xff0c;charles注册地址&#xff09; 2.Proxy-> 勾选window…

网络安全(黑客)技术学习路线

谈起黑客&#xff0c;可能各位都会想到&#xff1a;盗号&#xff0c;其实不尽然&#xff1b;黑客是一群喜爱研究技术的群体&#xff0c;在黑客圈中&#xff0c;一般分为三大圈&#xff1a;娱乐圈 技术圈 职业圈。 娱乐圈&#xff1a;主要是初中生和高中生较多&#xff0c;玩网恋…