Redis(windows+Linux)安装及入门

一、概述

Redis是什么?

Redis(Remote Dictionary Server),即远程字典服务

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

img

Redis能干什么?

  1. 内存存储、持久化,内存中是断电即失、所以说持久化很重要( rdb、aof )
  2. 效率高,可用于高速缓存
  3. 发布订阅系统
  4. 地图信息分析
  5. 计时器、计数器(浏览量)

特性

  1. 多样的数据类型
  2. 持久化
  3. 集群
  4. 事务

准备

  1. Redis中文官网-CRUG网站 (redis.cn)
  2. Redis官网
  3. 最新版下载-Download | Redis

注意:Windows在Github上面下载(停更很久了)

根据官方文档所说,Redis推荐在Linux服务器上搭建,本教程也是基于Linux学习

Redis is written in ANSI C and works on most POSIX systems like Linux, *BSD, and Mac OS X, without external dependencies. Linux and OS X are the two operating systems where Redis is developed and tested the most, and we recommend using Linux for deployment.

二、Windows下安装

  1. 下载安装包Releases · microsoftarchive/redis (github.com),并

    image-20230913152112073

  2. 解压

    image-20230913152326134

  3. 开启redis,双击运行redis-server.exe即可

    image-20230913152547845

  4. 使用redis-cli.exe客户端,连接redis,并输入Ping命令,出现Pong表示连接成功

    image-20230913152955380

三、Linux下安装

  1. 下载安装包Redis 7.2.1-github.com

  2. 上传至云服务器并解压

    image-20230913163117807

  3. 安装gcc

    image-20230913163404494

  4. 进入redis解压的文件夹下,然后使用make命令进行编译,编译成功后进入/usr/local/bin

    image-20230913171657333

  5. 创建一个自己的目录,然后将redis配置文件复制到当前目录下(以后的配置文件就使用复制的这个)

    mkdir selfconfig cp /opt/redis-7.2.1/redis.conf selfconfig

    image-20230913172314789

  6. redis默认不是后台启动,需要修改配置文件

    修改配置文件中的daemonize为Yes

    image-20230913173400559

  7. 启动redis服务,并使用客户端进行测试

    image-20230913174515014

  8. 关闭redis服务,在客户端中输入shutdown,断开连接后,输入exit退出客户端

    image-20230913191849375

四、Redis-benchmark性能测试

Redis-benchmark是一个压力测试工具,官方自带的性能测试工具

序号选项描述默认值
1-h指定服务器主机名127.0.0.1
2-p指定服务器端口6379
3-s指定服务器 socket
4-c指定并发连接数50
5-n指定请求数10000
6-d以字节的形式指定 SET/GET 值的数据大小2
7-k1=keep alive 0=reconnect1
8-rSET/GET/INCR 使用随机 key, SADD 使用随机值
9-P通过管道传输 请求1
10-q强制退出 redis。仅显示 query/sec 值
11--csv以 CSV 格式输出
12*-l*(L 的小写字母)生成循环,永久执行测试
13-t仅运行以逗号分隔的测试命令列表。
14*-I*(i 的大写字母)Idle 模式。仅打开 N 个 idle 连接并等待。

测试

#测试100个并发连接 10000个请求
redis-benchmark -h localhost -p 6379 -c 100 -n 1000

image-20230913222433573

image-20230913222710771

keep live:1的意思是,只有一台服务器来处理这些请求

五、基础知识

redis默认有16个数据库

image-20230914094257574

默认使用第0个数据库,可以使用select进行切换

127.0.0.1:6379> select 3 #切换数据库
OK
127.0.0.1:6379[3]> dbsize #查看数据库大小
(integer) 0
127.0.0.1:6379[3]> set test 321 #设置键值对
OK
127.0.0.1:6379[3]> dbsize
(integer) 1
127.0.0.1:6379[3]> keys * #查看当前数据库所有的key
1) "test"

清空当前的数据库的key:flushdb

清空全部数据库的key:flushall

127.0.0.1:6379[3]> flushdb
OK
127.0.0.1:6379[3]> flushall
OK
127.0.0.1:6379[3]> select 0
OK
127.0.0.1:6379> keys *
(empty array)

为什么Redis以6379作为默认端口号?

Redis的线程问题

Redis 确实是单线程的。通常说的单线程,主要是指 Redis 对外提供的键值存储服务的主要流程是单线程,也就是网络IO和数据读写是由单个线程来完成的。除此外 Redis 的其他功能,比如持久化、 异步删除、集群数据同步等,是由额外的线程来执行的。因此,严格地说 Redis 并不是全面单线程。


  1. 官方原文:

    Redis is single threaded. How can I exploit multiple CPU / cores? Its not very frequent that CPU becomes your bottleneck with Redis, as usually Redis is either memory or network bound. For instance, using pipelining Redis running on an average Linux system can deliver even 1 million requests per second, so if your application mainly uses O(N) or O(log(N)) commands, it is hardly going to use too much CPU.However, to maximize CPU usage you can start multiple instances of Redis in the same box and treat them as different servers. At some point a single box may not be enough anyway, so if you want to use multiple CPUs you can start thinking of some way to shard earlier.You can find more information about using multiple Redis instances in the Partitioning page.However with Redis 4.0 we started to make Redis more threaded. For now this is limited to deleting objects in the background, and to blocking commands implemented via Redis modules. For future releases, the plan is to make Redis more and more threaded.

    大致意思:

    由于Redis是基于内存的操作,查找和操作的时间复杂度都是O(1),因此CPU并不是Redis的瓶颈。 Redis的瓶颈很可能是机器内存或网络带宽的大小。 既然单线程易于实现并且CPU不会成为瓶颈,那采用单线程解决方案是合乎逻辑的了。

  2. Redis7中的多线程机制需要手动修改配置文件开启:

  • 设置io-threads-do-redis配置项为yes,表示启动多线程

  • 设置线程个数,io-threads 个数,关于个数的设置,官方的建议是如果为4核的CPU,建议线程数设置为2或3,如果为8核CPU建议线程数设置为6(线程数一定要小于机器核数,并非越大越好)

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

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

相关文章

Linux shell编程学习笔记16:bash中的关联数组

上一节我们探讨了普通的数组,即使用数字下标来索引数组中不同的元素的数组,也可以称之为索引数组。 相比纯粹的数字,字符串不仅能表明含义,也更便于记忆使用,于是就有了关联数组。 一、关联数组概述 bash 从4.0开始支…

力扣第738题 单调递增的数字 c++ 暴力超时 贪心优化

题目 738. 单调递增的数字 中等 相关标签 贪心 数学 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 1…

精品基于Python的房地产分析平台-可视化大屏

《[含文档PPT源码等]精品基于Python的房地产分析平台的设计与实现-爬虫》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;python 使用框架&#xff1a;Django 前端…

Java VMTranslator Part I

目录 堆栈运算命令 基本思路 核心代码 Parser Code Writer Main 实验结果&#xff0c;使用SimpleAdd、StackTest进行验证 内存访问命令 基本思路 核心代码 Parser Code Writer Main 实验结果&#xff0c;使用进行验证。对比生成的二进制代码文件。 用Java写一个翻…

程序员为啥要做副业(02)-中指备用金

点击下方“JavaEdge”&#xff0c;选择“设为星标” 第一时间关注技术干货&#xff01; 免责声明~ 任何文章不要过度深思&#xff01; 万事万物都经不起审视&#xff0c;因为世上没有同样的成长环境&#xff0c;也没有同样的认知水平&#xff0c;更「没有适用于所有人的解决方案…

Linux — vim编辑器的操作

目录 1. vim的整体操作2. 命令模式下的常见命令3. 底行模式下的常见命令结语 1. vim的整体操作 我们使用 touch 创建一个文件之后&#xff0c;直接 vim 文件名 就能够进入到vim编辑器中。如果vim 文件名的文件还不存在时&#xff0c;vim会自动创建该文件&#xff0c;但需要保存…

Java 中的 synchronized 同步锁

导致线程安全问题的根本原因在于&#xff0c;存在多个线程同时操作一个共享资源&#xff0c;要想解决这个问题&#xff0c;就需要保证对共享资源访问的独占性&#xff0c;因此人们在Java中提供了synchronized关键字&#xff0c;我们称之为同步锁&#xff0c;它可以保证在同一时…

Spring Cloud之API网关(Gateway)

目录 API网关 好处 解决方案 Gateway 简介 特征 核心概念 Route(路由) Predicate(断言) Filter(过滤器) 工作流程 Route(路由) 路由配置方式 1.yml配置文件路由 2.bean进行配置 3.动态路由 动态路由 Predicate(断言) 特点 常见断言 示例 Filter(过滤器) …

IOC课程整理-19 Spring Environment 抽象

1. 理解 Spring Environment 抽象 2. Spring Environment 接口使用场景 3. Environment 占位符处理 4. 理解条件配置 Spring Profiles 5. Spring 4 重构 Profile 6. 依赖注入 Environment 7. 依赖查找 Environment 8. 依赖注入 Value 9. Spring 类型转换在 Environment 中的运用…

ZYNQ连载01-ZYNQ介绍

ZYNQ连载01-ZYNQ介绍 1. ZYNQ 参考文档&#xff1a;《ug585-zynq-7000-trm.pdf》 ZYNQ分为PS和PL两大部分&#xff0c;PS即ARM&#xff0c;PL即FPGA&#xff0c;PL作为PS的外设。 2. 方案 ZYNQ7020为双核A9架构&#xff0c;多核处理器常用的运行模式为AMP(非对称多处理)和…

测试C#调用Vlc.DotNet组件播放视频

除了Windows Media Player组件&#xff0c;在百度上搜索到还有不少文章介绍采用Vlc.DotNet组件播放视频&#xff0c;关于Vlc.DotNet的详细介绍见参考文献1&#xff0c;本文学习Vlc.DotNet的基本用法。   VS2022中新建基于.net core的winform程序&#xff0c;在Nuget包管理器中…

[论文精读]How Powerful are Graph Neural Networks?

论文原文&#xff1a;[1810.00826] How Powerful are Graph Neural Networks? (arxiv.org) 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#x…

脚本木马编写

PHP小马编写 小马用waf扫描&#xff0c;没扫描出来有风险。 小马过waf之后用echo $_SERVER[DOCUMENT_ROOT]获得当前运行脚本所在的文档根目录。&#xff0c;然后在上传大马工具。 $_SERVER&#xff0c;参考&#xff1a;PHP $_SERVER详解 小马编写二次加密 现在是可以被安全…

辅助驾驶功能开发-功能规范篇(22)-4-L2级辅助驾驶方案功能规范

1.3.4 LDW系统功能定义 1.3.4.1 状态机 1.3.4.2 功能定义 1.3.4.2.1 信号需求列表 1.3.4.2.2 系统开启关闭 1)初始化 车辆上电后,车道偏离预警系统(LDW)进行初始化,控制器需要在上电后 220ms 内发出第一帧报文,并在 3s 内 完成内部自检,同时上电 3s 内不进行关联系统…

ProEssentials pro v9 历史更新列表--注册版

ProEssentials标准版和专业版之间的唯一区别是可以渲染的数据点和注释的数量。标准版与专业版一样拥有所有的功能和接口。所有版本包括WPF、WinForm、WebForm、ActiveX、VCL和DLL接口。标准版仅限于8000个数据点和800个图表注释。此限制适用于每个控件实例。你可以运行多个控件…

H5游戏源码分享-像素小鸟游戏(类似深海潜艇)

H5游戏源码分享-像素小鸟游戏&#xff08;类似深海潜艇&#xff09; 点击屏幕控制小鸟的飞行高度 整个小游戏就用JS完成 项目地址&#xff1a;https://download.csdn.net/download/Highning0007/88483228 <!DOCTYPE HTML> <html><head><meta http-equiv…

荣耀推送服务消息分类标准

前言 为了提升终端用户的推送体验、营造良好可持续的通知生态&#xff0c;荣耀推送服务将对推送消息进行分类管理。 消息分类 定义 荣耀推送服务将根据应用类型、消息内容和消息发送场景&#xff0c;将推送消息分成服务通讯和资讯营销两大类别。 服务通讯类&#xff0c;包…

进程替换..

1、单进程版 – 最简单的先看看程序替换 现象就是 1、我们用自己的进程封装了内置指令ls,并且代码中execl 后 printf 的after并没有打印出来。 2、谈进程替换的原理 单进程替换基本原理 上面例子中execl的做法非常简单粗暴&#xff0c;要调用ls&#xff0c;那么就把mycom…

整型在内存中的存储

前言&#xff1a; 本文章旨在从例题中加深对整型在数据中的存储的相关知识的理解。 首先我们需要明确整型在内存中都是以补码的形式进行计算 例1&#xff1a; 解析&#xff1a; 首先我们需要明确整型在内存中都是以补码的形式进行计算。 接着将一个整型类型的数据存储在ch…

详细介绍如何使用 NeRF 进行 3D 体积渲染-附源码下载

介绍 在此示例中,我们展示了 Ben Mildenhall 等人的研究论文 NeRF:将场景表示为用于视图合成的神经辐射场的最小实现 。等人。作者提出了一种巧妙的方法,通过神经网络对体积场景函数进行建模来合成场景的新颖视图。 为了帮助您直观地理解这一点,让我们从以下问题开始: 是…