2023Redis(windows+Linux)安装及入门教程

系列文章目录

(一)2023Redis(windows+Linux)安装及入门教程
(二)Redis中的五大数据类型
(三)Redis中的三种特殊类型
(四)Redis实现乐观锁
(五)SpringBoot整合Redis详细教程
(六)Redis配置文件详解以及持久化和订阅发布
(七)Redis集群详解
(八)Redis缓存穿透以及击穿和雪崩


一、🎍概述

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

    yum install gcc-c++
    

    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 10000

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作为默认端口号?

6379在是手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字。

Alessia Merz 是一位意大利舞女、女演员。 Redis 作者 Antirez 早年看电视节目,觉得 Merz 在节目中的一些话愚蠢可笑,Antirez 喜欢造“梗”用于平时和朋友们交流,于是造了一个词 “MERZ”,形容愚蠢,与 “stupid” 含义相同。

后来 Antirez 重新定义了 “MERZ” ,形容”具有很高的技术价值,包含技艺、耐心和劳动,但仍然保持简单本质。

到了给 Redis 选择一个数字作为默认端口号时,Antirez 没有多想,把 “MERZ” 在手机键盘上对应的数字 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中的多线程机制需要手动修改配置文件开启:

    1. 设置io-threads-do-redis配置项为yes,表示启动多线程
    2. 设置线程个数,io-threads 个数,关于个数的设置,官方的建议是如果为4核的CPU,建议线程数设置为2或3,如果为8核CPU建议线程数设置为6(线程数一定要小于机器核数,并非越大越好)

参考资料

【狂神说Java】Redis最新超详细版教程通俗易懂_哔哩哔哩_bilibili

【Redis】高级篇: 一篇文章讲清楚Redis的单线程和多线程 - 知乎 (zhihu.com)

Redis是单线程还是多线程,为什么效率这么高?_redis是单线程为什么可以多线程_Tom弹架构的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑的像个child

好人一生平安,先磕为敬

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值