likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 16

系列文章目录


一、🎍概述

Redis是什么?

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

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

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

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

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),并

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

  2. 解压

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

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

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

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

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

三、⚽Linux下安装

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

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

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

  3. 安装gcc

    yum install gcc-c++
    

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

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

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

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

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

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

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

    修改配置文件中的daemonize为Yes

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

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

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

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

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

四、🥙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

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

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

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

五、🍖基础知识

redis默认有16个数据库

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

默认使用第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中的多线程机制需要手动修改配置文件开启:

  • 设置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博客

转载自:https://juejin.cn/post/7280797398346891299
评论
请登录