【用户画像】Redis的简介和安装

news2025/7/18 7:05:09

文章目录

  • 一 Redis简介
    • 1 应用场景
      • (1)业务系统:配合关系型数据库做高速缓存
      • (2)大数据场景:缓存数据
      • (3)大数据场景:临时数据
      • (4)大数据场景:计算结果
      • (5)利用redis的特殊数据结构解决一些特点问题
  • 二 Redis安装
    • 1 安装版本
    • 2 安装步骤
      • (1)安装C 语言的编译环境
      • (2)安装
      • (3)启动
    • 3 Redis介绍
    • 4 Redis的单线程 + 多路IO复用技术

一 Redis简介

Redis是一个开源的key-value存储系统,在查询场景中只能使用K去查询,HBase如果想使用除rowkey之外的结构进行查询,需要设计二级索引(索引的索引),Redis经常会担当某些数据库的二级索引,如学号是K,人名是V,现有需求想要使用人名进行查询,这时就需要建立一张表,存储人名与K之间的关系,然后再用K去查询V。

与memcached一样,为了保证效率,数据都是在内存中。

和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。

区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。

并且在此基础上实现了高可用和集群模式。

1 应用场景

(1)业务系统:配合关系型数据库做高速缓存

高频次,热门访问的数据,降低数据库IO。

经典的缓存Cache Aside Pattern (旁路缓存模式),正常情况下,访问应用服务器,应用服务器直接交给MySQL,但是访问量特别大的时候,既负责读又负责写,会造成数据比较慢。

在业务场景中,接受大部分请求的数据往往是少部分数据,为缓解MySQL的压力,可以将这部分数据存放到缓存中,这样用户访问数据时,应用服务器先不去访问MySQL,先访问缓存,命中返回结果,否则查询MySQL,将数据放入到缓存中,返回结果。随着时间的推移,缓存中的数据越来越多,不过Redis提供了“失效”功能,如某份数据经过固定时间即失效。

在这里插入图片描述

(2)大数据场景:缓存数据

一般在实时计算场景中,访问强度十分高,如kafka提交过来一个订单,服务器在接收订单的同时,还需要对订单进行一些计算,如按照年龄段计算订单的金额。

在这里插入图片描述

(3)大数据场景:临时数据

如黑名单或者今日累计值或者验证码。

在这里插入图片描述

(4)大数据场景:计算结果

在这里插入图片描述

(5)利用redis的特殊数据结构解决一些特点问题

在这里插入图片描述

二 Redis安装

Redis官方网站

Redis中文官方网站

1 安装版本

  • 6.0.8 for Linux(redis-6.0.8.tar.gz)
  • 不用考虑在windows环境下对Redis的支持

2 安装步骤

(1)安装C 语言的编译环境

# 安装
sudo yum install centos-release-scl scl-utils-build 
sudo yum install -y devtoolset-8-toolchain
# 启用编译器
sudo  scl enable devtoolset-8 bash
# 执行完成后会切换到root用户
# 测试 gcc版本
sudo gcc --version
# 显示信息
gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

(2)安装

# 解压
tar -zxvf redis-6.0.8.tar.gz -C /opt/module/
# 编译并安装
[root@hadoop101 redis-6.0.8]# make && make install
# redis安装地址
cd /usr/local/bin/
# 会有六个文件
redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何
redis-check-aof:修复有问题的AOF文件,rdb和aof后面讲
redis-check-dump:修复有问题的dump.rdb文件
redis-sentinel:Redis集群使用
redis-server:Redis服务器启动命令
redis-cli:客户端,操作入口
# 卸载编译好的环境,将这六个文件删除即可

(3)启动

# 切换用户或者重新连接服务器
redis-server
# 出现以下信息redis启动成功,但前台启动,命令行窗口不能关闭,否则服务器停止,故后台启动
               _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 6.0.8 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 5788
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'      
# Redis的所有配置信息都内嵌到了程序中,想要修改,需要用外部的配置项覆盖掉程序的配置
# 在启动时引用外部的配置
cd /opt/module/redis-6.0.8/
# 将模板拷贝出来
cp redis.conf ~/redis2022.conf
[hzy@hadoop101 ~]$ vim redis2022.conf
# 将下列配置修改
################################# GENERAL #####################################

# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes
# 后台启动
[hzy@hadoop101 ~]$ redis-server redis2022.conf 
ps -ef|grep redis
# 显示信息
hzy       5807     1  0 15:30 ?        00:00:00 redis-server 127.0.0.1:6379
# 进入Redis客户端
redis-cli
# 退出服务器
shutdown
# 利用客户端关闭服务器
redis-cli shutdown

3 Redis介绍

默认16个数据库,类似数组下标从0开始,初始默认使用0号库。

使用命令 select 来切换数据库。如: select 8 。

统一密码管理,所有库同样密码。

库在Redis中是十分鸡肋的存在,Redis一个服务中备份的数据在磁盘中是一个文件,无法做到单个库的迁移。

4 Redis的单线程 + 多路IO复用技术

多路IO复用技术是liinux的技术,linux有多路IO复用技术的模型。

Nginx同样使用多路IO实现的单线程。

多路IO复用 ,指的是同一个进程用一个线程处理多个IO数据流。用一个线程实现的时间管理大师,一个人为多个人提供服务,多线程为多个人为多个人提供服务,大部分应用使用的都是多线程,但是多线程会让程序变得更加复杂,不同线程需要对公共资源进行抢占,有抢占就会出现锁、并发等。单线程就不会出现这种问题,谁需要我,call me。

线程在多个IO流之间切换,节约资源 ,程序复杂度大大降低。

那么为什么一般的数据 mysql 等都没有选择这种模型,而redis 选择这种模型?

  • 首先需要明白,单线程最怕的就是被一个对象拖着,也即阻塞,假如现有一条扫描500W行的sql,那么它不执行完成,后续简单sql也无法执行。

而redis 选择这种模型,是因为:

  • redis都是执行小而简单的key操作,且都在内存中运行,非常不容易出现阻塞的情况,所以比较适用于单线程,基本不用担心阻塞其他任务。
  • Nginx接收到一个请求,自己不去处理,转发给别人进行处理,Nginx主要负责负载均衡。
  • 所以在都是执行小而简单且在内存中运行的程序,都可以考虑使用这种模型。

​ 所以比较适用于单线程,基本不用担心阻塞其他任务。

**原理:**多路Io复用是利用select、poll、epoll(不同的监控策略)可以同时监察多个流的IO事件的能力,在空闲的时候会把当前线程阻塞,当有一个或多个流由IO事件发生时,就从阻塞态中唤醒,处理就绪的流。

监控器负责监控IO流,使得知道哪个人需要这个单线程,没有事件的IO流会被挂起,不同的监控策略如下:

  • select:谁找我,我将请求群发,查看还有谁需要我。
  • epoll:谁找我,我响应谁,redis使用此种策略。

优势:当处理的消耗对比IO几乎可以忽略不计时,可以处理大量的并发IO,而不用消耗太多CPU内存。

串行 vs 多线程+锁(memcached) vs 单线程+多路IO复用(Redis)

Redis与Memcache三点不同:支持多数据类型,支持持久化,单线程+多路IO复用

新版 Redis 6.x

虽然io多路复用已经不错了,但是面临很多大键值的访问时,其中IO操作还是容易出现高延迟的问题,为了进一步优化,Redis 6.x把IO的部分做成允许多线程的模式。

注意这个IO部分只是处理网络数据的读写和协议解析(默认存在4个助理),在执行API命令时仍然使用单线程。所以这个多线程并不会让redis存在并发的情况。

另外,多线程IO默认也是不开启的,需要再配置文件中配置

io-threads-do-reads  yes 
io-threads 4

只有当并发程度特别大的时候,开启才会产生效果。

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

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

相关文章

【计算机毕业设计】医院管理系统源码

一、系统截图(需要演示视频可以私聊) 一.摘要 目前各医疗机构中,绝大部分中小型医疗机构内部没有实现任何信息化管理,医院临床信息,业务流程的数据依然采取纸质记录,造成数据容易丢失&#xff…

CCSP通过经验 | 讲义覆盖的知识点更全面(含题型分析)

我一直就职于国内网络安全乙方,自2014年接触云安全后,一直希望能获取一个比较官方的云安全从业水平的资格证书。 在横向比较了如腾讯云、华为云、阿里云以及国外如亚马逊云认证后,在没有明确就职意向的情况下,选择了ISC2的认证资…

如何用等价类划分法设计测试用例, 来测试程序的日期检查功能?

某学籍排查系统要求学生输入入学日期,日期限制在2008年9月至2012年7月,即系统只能对该段期间内的学籍进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字 字符组成,前四位代表年&#xf…

多环境 运维

启动dev 同时包含 下面的 MVC DB 做配置时 如果 遇到相同参数 后加载的 覆盖前加载的 先加载 include 的 active 的是最后加载的 如果需要该 dev 需要该很多 include 换成 group 如果 active 是 dev 则加载dev组 如果 active 是pro 则加载pro组 在pom文件中 设置多环境 &l…

[UE][UE5]像素流送,像素流去掉黑边和按钮

[UE]这里写目录标题1.写在前面01.作者碎碎念02.结果演示截图视频教程2.需要准备的软件3.步骤01.准备一个打包好的项目02.启动服务器03.连接!去掉黑边和按钮结尾1.写在前面 01.作者碎碎念 2022.11.19初次更新 俺是不是很粗长!老仔细了,全是截图&#xf…

目标检测算法——YOLOv5/YOLOv7改进|结合涨点Trick之ASFF_Detect(自适应空间特征融合)

>>>深度学习Tricks,第一时间送达<<< 🚀🚀🚀NEW!!!魔改YOLOv5/YOLOv7目标检测算法来啦 ~ 💡💡魔法搭配计算机视觉领域各类创新新颖且行之有效的网络结构,平均精度均值mAP涨点明显,实验效果也俱佳。有需要的小伙伴可以在CSDN后台留言+点赞收藏…

Linux环境搭配

Linux环境搭配 文章目录Linux环境搭配1.Linux背景介绍1.1 系统发展史1.2 开源与官方网址1.3 企业Linux应用现状1.4 Linux发行版本2.Linux环境搭配2.1 Linux环境搭配方式2.2 服务器购买2.3 云服务器配置3.Linux远程登陆3.1 Linux桌面3.2 远程登陆工具3.3 Xshell登陆服务器(单用户…

开放式无线运动耳机怎么挑选,适合在运动佩戴的几款耳机推荐

作为一个运动爱好者而言&#xff0c;耳机是可以堪称灵魂伴侣&#xff0c;好比如在健身房运动的时候可以一边戴着耳机&#xff0c;一边在跑步机上刷着剧&#xff0c;不仅能将两小时的需求量直接浓缩为一小时的使用量&#xff0c;想想都觉得自己赚到了&#xff0c;但是在耳机选购…

Windows11 Android开发相关记录(持续更新...)

Windows11 Android开发相关记录&#xff08;持续更新…&#xff09; 本章节主要记录安装好Windos系统后开发环境搭建及其心得。 以及开发常用软件和相关配置。 以下属于个人做法&#xff0c;仅供参考&#xff1a; 文章目录Windows11 Android开发相关记录&#xff08;持续更新…

【计算机网络】Tomcat和Servlet基础知识汇总

目录 1.Tomcat&#xff1a; 2.Servlet&#xff1a; 1.Tomcat&#xff1a; Tomcat是一个HTTP的服务器&#xff0c;本质上就是一个TCP服务器&#xff0c;只不过加上了一些按照HTTP协议格式进行解析/构造这样的代码。学习Tomcat的目的就是能够熟练掌握Tomcat api&#xff0c;基…

公司的这种打包启动方式,我简直惊呆了

前言 大家都知道&#xff0c;SpringBoot应用最终会打出一个Fat Jar, 里面包含了用到的全部依赖&#xff0c;启动也非常简单&#xff0c;java -jar xxx.jar即可。 但是我们公司打出的最终包&#xff0c;将依赖包挪到了外部&#xff0c;然后启动的时候通过loader.path指定依赖包…

第1章 数据库及其表的自动生成与前言

001 RootEntityTkey<Tkey>、BlogArticle RootEntityTkey<Tkey>&#xff1a;该实体类以泛型形式&#xff0c;定义了当前程序中所有实体的自增型主键。 BlogArticle&#xff1a;继承了RootEntityTkey<Tkey>&#xff0c;通过该实体类及其属性成员&#xff0c;用…

基于sklearn的机器学习实战

本文目录如下&#xff1a;LinearRegression线性回归入门数据生成定义模型模型测试与比较多项式回归具体实现LogisticRegression算法思想简述算法实现Decision TreeMLPSVM线性SVM多项式核高斯核对比不同核在Mnist上的效果读取数据高斯核多项式核线性核NBayesbagging与随机森林Ad…

适用于Linux的6个最佳Python IDE

早在 1991 年&#xff0c;当Guido van Rossum第一次引入 Python 时&#xff0c;他不会想到 Python 的未来发展这么好。现在我们在这里规模地使用Python构建项目。根据 2022 年的一份报告&#xff0c;Python 在全球拥有 29.53% 的份额&#xff0c;位居榜首。 Python 的设计牢记…

④开启shift后门实验报告

班级 计科1班 姓名 彭彭头 学号 时间 2022.05.13 成绩 实验项目名称 开启shift后门 实验目的 1、了解常用入侵主机的方法 2、掌握操作系统常见漏洞&#xff0c;并学会防范 实验内容 利用Windows7系统的shift漏洞&#xff0c;开启后门。 实验环境 操作系统&a…

分布式前修课:Zookeeper锁实现方式

前言 聊完MySQL和Redis&#xff0c;我们接下来在聊一聊Zookeeper。相信大家都已经发现了&#xff0c;这些都是我们在开发过程非常常用的技术。搞定他们&#xff0c;一切难题都不在话下。 Zookeeper&#xff0c;盘它 官网是我们学习某一种技术框架的第一手资料&#xff0c;通…

JAVA泛型

泛型的由来 因为JAVA中假如构建了一个object集合&#xff0c;在集合里存储任何的数据类型对象&#xff0c;定义了一个字符串&#xff0c;又定义一个常数。呢么在遍历数组Arraylist的时候&#xff0c;在代码行里并不会报错&#xff0c;但是运行之后会出现ClassCastException异常…

传奇私服开服架设教程 传奇服务端设置教程

首先开区要使用两个必备的软件&#xff1a;DBC2000、传奇引擎&#xff0c;当然也少不了传奇服务端(传奇服务端在论坛免费服务端和商业服务端中有下载)。 先把下载好的服务端解压到D盘或者某个般的根目录(所谓根目录&#xff0c;就是D盘或E盘&#xff0c;不是D盘和E盘的某个文件…

TCN代码详解-Torch (误导纠正)

1. 绪论 TCN网络由Shaojie Bai&#xff0c; J. Zico Kolter&#xff0c; Vladlen Koltun 三人于2018提出。对于序列预测而言&#xff0c;通常考虑循环神经网络结构&#xff0c;例如RNN、LSTM、GRU等。他们三个人的研究建议我们&#xff0c;对于某些序列预测&#xff08;音频合…

基于Matlab仿真极化双基地雷达系统(附源码)

目录 一、系统设置 二、系统仿真 三、使用圆极化接收阵列 四、总结 五、程序 此示例演示如何仿真极化双基地雷达系统以估计目标的范围和速度。发射器、接收器和目标运动学被考虑在内。 一、系统设置 该系统以 300 MHz 的频率运行&#xff0c;使用线性 FM 波形&#xff0…