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

2023年 9月 21日 51.4k 0

系列文章目录

Redis中的五大数据类型

一、🎍概述

Redis是什么?

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

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

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

img

Redis能干什么?

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

  • 多样的数据类型
  • 持久化
  • 集群
  • 事务
  • 准备

  • Redis中文官网-CRUG网站 (redis.cn)
  • Redis官网
  • 最新版下载-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下安装

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

    image-20230913152112073

  • 解压

    image-20230913152326134

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

    image-20230913152547845

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

    image-20230913152955380

  • 三、⚽Linux下安装

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

  • 上传至云服务器并解压

    image-20230913163117807

  • 安装gcc

    yum install gcc-c++
    

    image-20230913163404494

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

    image-20230913171657333

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

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

    image-20230913172314789

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

    修改配置文件中的daemonize为Yes

    image-20230913173400559

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

    image-20230913174515014

  • 关闭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 -k 1=keep alive 0=reconnect 1
    8 -r SET/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 并不是全面单线程。

  • 官方原文:

    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不会成为瓶颈,那采用单线程解决方案是合乎逻辑的了。

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

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

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

    参考资料

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

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

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

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论