前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。
基础篇:
- Redis(一)
一、Redis定义
官网地址:Redis - The Real-time Data Platform
Redis 的全称是 Remote Dictionary Server,即远程字典服务 。它将数据存储在内存中,这使得它的读写速度极快,能够轻松应对每秒数十万次的读写操作,极大地提升了系统的响应速度。
除了高速读写,Redis 还支持多种数据结构,如字符串(string)、列表(list)、哈希(hash)、集合(set)和有序集合(sorted set) 等。不同的数据结构适用于不同的业务场景,这使得 Redis 能够满足各种复杂的业务需求。
二、Redis功能
(一)、存储多数据结构
- 字符串(String)
- 列表(list)
- 哈希(Hash)
- 集合(Set)
- 有序集合(Sorted Set)
- 位图(BitMap)
- 位域(BitFiled)
- 流(Stream)
- 地理空间(Geo)
- 基数统计(HyperLogLog)
(二)、高速读写
- 基于内存存储:Redis将数据存储在内存中,内存的读写速度远远快于磁盘,这使得Redis能够在极短的时间内完成数据的读写操作。
- 单线程模型:Redis采用单线程模型来处理命令请求,避免了多线程环境下的上下文切换和琐的竞争问题。在多线程模型中,线程直接的切换需要消耗一定的时间和资源,而且为了保证数据的一致性,往往需要使用各种琐机制,这会导致性能的下降。而Redis的单线程模型,就像一个高效的独奏者,专注地处理每一个请求,无需担心线程间的干扰,使得Redis能够充分发挥其高性能的优势。
- 高效的数据结构:前面提到的丰富的数据结构,都经过精心设计,具有高效的查找和操作性能。
- I/O多路复用:Redis使用I/O多路复用技术,能够在一个线程中同时监听多个套接字,当有事件发生时,才对相应的套接字进行处理,避免了I/O操作上的无谓等待,大大提高了Redis的并发处理能力。
(三)、持久化机制
虽然Redis主要将数据存储在内存中以实现高速读写,但为了防止数据因服务器重启、断电等意外情况丢失数据,持久化机制就显得尤其重要。Redis提高了两种持久化方式:RDB(Redis Database)和AOF(Append Only File)。
- RDB(Redis Database):RDB是将内存中的数据以快照的形式保存到磁盘上。当满足一定条件,如达到指定的时间间隔且有一定数量的写操作发生,Redis会fork一个子进程,由子进程将内存中的数据写入到一个临时的RDB文件中,写入完成后,在用临时文件替换原来的RDB文件。RDB的优点:①、生成的RDB文件体积小。②、恢复数据时速快,适用于大规模数据的恢复。RDB的缺点:①、丢失数据风险大。②、当保存的数据集比较大时,fork的过程比较耗时,会影响毫秒级的客户请求,影响性能。
- AOF(Append Only File):AOF则是将每次的写操作都追加到一个日志文件中,记录服务器执行的每一个写命令。当Redis重启时,会重新执行AOF文件中的命令,将数据恢复到之前的状态。AOF的优点:①、丢失数据风险比RDB小,数据完整性和一致性高。②、文件内容易于理解和解析。③、当文件变大时,可以自动进行压缩重写,避免占用过多磁盘空间。AOF的缺点:①、文件体积大,即使压缩过也比RDB大。②、AOF恢复数据的时速比RDB慢。
(四)、其他高级功能
- 发布/订阅(PUBLISH/SUBSCRIBE):是一种消息通信模式,发送者(PUBLISH)发送消息,订阅者(SUBSCRIBE)接收消息,可以实现进程间的消息传递。
- 事务(Transaction):Redis通过MULTI(开启事务)、EXEC(执行)、DISCARD(取消)、WATCH(监控某个key)四个命令来实现事务功能。事务可以将一组命令打包,要么全部成功执行,要么全部失败,没有回滚操作。
- 管道(Pipeline):管道功能允许客户端将多个命令一次性打包发给服务器,服务器在接收到这些命令后,以此执行并将所有响应一次性返回给客服端。虽然管道可以将多个命令一次性发送给服务器,但管道中的命令不具有原子性。也就是说,在管道执行过程中,如果某个命令执行失败,不会影响其他命令的执行。
- 分布式琐:在分布式系统中,为了保证同一时刻只有一个线程或者进程能够访问共享资源,需要使用分布式琐。Redis可以利用其原子性操作和高可用性来实现分布式琐。
用一张图总结Redis功能:
三、Redis下载与安装
(一)、下载
官方网站下载需要注册,麻烦 ̄へ ̄,建议直接上github。Release 7.4.2 · redis/redis · GitHub
(二)、安装与配置
1、windows
由于企业里面开发用到Redis,多数都是Linux,windows版可以自己手动安装与配置。
2、Linux
2.1、前提说明
在Linux下安装与配置Redis,有两种方案:
1、购买云服务器(自带Linux环境),直接安装和配置Redis即可。
2、安装VMWare本地虚拟机。
我采用方案二。VMWare的安装默认都会,这里不做说明,不会自行百度。
2.2、安装配置
1、Linux安装Redis必须具备c环境
下载gcc命令
yum -y install gcc-c++
查看gcc版本命令
gcc -v
2、安装Redis
可以将下载好的Redis上传的Linux上,也可以直接yun下载。将下载好的Redis放在/opt下面
wget https://download.redis.io/releases/redis-7.4.2.tar.gz
3、解压
tar -zxvf redis-7.4.2.tar.gz
4、编译与安装
make && make install
如果出现这段提示命令,代表安装成功,可以进入下一步了。
5、查看默认安装目录
Linux下的/usr/local相当于我们Windows下的C:\Program Files
文件说明:
- redis-benchmark:性能测试工具
- redis-check-aof:AOF文件修复工具
- redis-check-rdb:rdb文件修复工具
- redis-cli:redis客户端启动命令
- redis-sentinel:redis集群使用
- redis-server:redis服务端启动命令
6、拷贝原始配置文件
新建一个/myredis目录用来存放配置文件。
7、修改配置文件
用vim命令修改刚刚拷贝的文件,进行配置初始化处理。
vim修改命令自行百度查阅。修改点如下:
- 默认daemoneize 改为 yes
- protected-mode 改为 no
- bind 127.0.0.1 直接注释(默认的会影响远程ip连接)
- 添加redis客户端登录密码 requirepass xxxx密码
8、启动redis服务
没有任何输出代表服务启动成功,(Linux环境有输出才害怕⊙﹏⊙∥)。
9、连接服务
输入ping,返回PONG,代表连接客户端成功。常用的一下参数说明:
-a:代表连接的redis服务器需要密码
-h:是指定服务器ip地址
-p:指定连接端口
-c:是连接redis集群
--pipe:将一组命令通过管道传递给redis
10、永远的hello world
11、关机
如果连接着客户端,直接shutdown。如果没有,就使用
redis-cli -a 密码 shutdown
进行关闭。
四、总结
至此,通往 Redis 知识殿堂的学习桥梁已然稳固搭建,真正的精彩征程才刚刚拉开帷幕。在这之后,将是一场充满挑战与惊喜的深度探索,每一步都可能解锁新的技能,每一次钻研都有望收获全新的感悟。接下来的学习才是这场 Redis 之旅的重头戏,让我们怀揣热忱,全力奔赴吧!
ps:努力到底,让持续学习成为贯穿一生的坚守。学习笔记持续更新中。。。。