0
点赞
收藏
分享

微信扫一扫

Spring Boot之Spring-devtools热部署

王远洋 2024-11-18 阅读 9

前言

        Redis(Remote Dictionary Server)是一个开源的高性能键值对存储系统。它通常被称为数据结构服务器,因为它不仅支持简单的字符串类型数据存储,还支持列表集合有序集合哈希表等多种复杂数据结构。

总结了一下Redis的主要特点:

  1. 高性能:Redis以内存作为主要存储介质,读写速度非常快,适合处理高并发的应用场景。
  2. 持久化:Redis支持两种持久化方式,即RDB快照AOF日志,可以在系统崩溃时恢复数据。
  3. 数据类型丰富:除了简单的键值对外,还支持列表集合有序集合哈希表等多种数据结构。
  4. 原子操作:Redis的所有操作都是原子的,适合用于实现分布式锁计数器等功能。
  5. 主从复制:Redis支持主从复制功能,可以实现数据的高可用和读写分离。
  6. 发布/订阅:Redis支持发布/订阅模式,可以用于构建消息系统。

 安装配置

        首先上链接:https://download.csdn.net/download/qq_40558166/11965269Redis的连接地址

1、首先解压文件

2、配置环境变量

 

3.变成服务,进入安装目录下,地址栏cmd,然后输入命令

3.2 执行reids文件

redis-server --service-install redis.windows.conf --loglevel verbose

3.2 启动redis 

redis-server --service-start 

3.3 验证是否启动 

Get-Service -Name Redis

5.启动客户端和服务端命令

打开cmd,启动redis-server:服务器命令

redis-server redis.windows.conf	

再打开cmd。启动redis-cli :客户端命令

redis-cli

注意:一个redis。windows.conf配置就是一个redis服务器,需要启动多个服务器时,只需要修改一下这个配置文件的名称redis.windows.conf,再用redis-server就可以启动 

1、Redis的数据类型

        redis是一个高性能的key-value存储系统数据库。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(哈希类型)

数据类型特点使用场景
String最基本的数据类型,可以存储字符串、整数或浮点数。  支持原子性的自增和自减操作。缓存数据,如网页内容。  计数器,如网站访问量统计。 存储会话信息,如用户登录状态。
List有序的字符串列表。  可以在列表的头部或尾部添加元素。 可以获取某个范围内的元素。消息队列,如消息发布和订阅系统。 >最近使用的项目列表,如最近浏览的商品。 任务队列,如后台任务处理。
Set无序的字符串集合。  每个元素都是唯一的。  支持交集、并集和差集操作。存储唯一值,如用户标签。 多个集合的操作,如共同好友、共同兴趣等。随机事件,如抽奖系统。
Sorted Set每个元素都有一个分数(score)。 元素按分数从小到大排序。 <br> 支持按分数范围获取元素。排行榜,如游戏积分排行榜。 带有时间戳的数据,如最新消息列表。 带权重的任务调度,如优先级队列。
Hash存储键值对的无序散列表。  适合存储对象。 可以一次性获取或修改多个字段。存储对象,如用户信息。 存储配置信息,如系统参数。 存储复杂的结构化数据,如购物车。

2、Redis的基础命令 

命令类别命令
字符串 (String)
SET key value设置指定键的值。
GET key获取指定键的值。
INCR key将键的值递增1。
DECR key将键的值递减1。
MSET key1 value1 key2 value2 ...同时设置多个键的值。
MGET key1 key2 ...同时获取多个键的值。
列表 (List)
LPUSH key value将值插入列表的头部。
RPUSH key value将值插入列表的尾部。
LPOP key移除并返回列表头部的元素。
RPOP key移除并返回列表尾部的元素。
LRANGE key start stop获取列表中指定范围的元素。
集合 (Set)
SADD key member向集合添加一个或多个成员。
SREM key member从集合移除一个或多个成员。
SMEMBERS key获取集合中的所有成员。
SISMEMBER key member判断成员是否在集合中。
有序集合 (Sorted Set)
ZADD key score member向有序集合添加一个或多个成员及其分数。
ZREM key member从有序集合移除一个或多个成员。
ZRANGE key start stop按分数从小到大获取有序集合中的成员。
ZREVRANGE key start stop按分数从大到小获取有序集合中的成员。
哈希 (Hash)
HSET key field value为哈希表中的字段设置值。
HGET key field获取哈希表中指定字段的值。
HMSET key field1 value1 field2 value2 ...同时为哈希表中的多个字段设置值。
HMGET key field1 field2 ...同时获取哈希表中多个字段的值。
HGETALL key获取哈希表中的所有字段和值。
通用命令
DEL key删除指定键。
EXISTS key检查键是否存在。
TYPE key返回键的类型。
KEYS pattern查找所有符合给定模式的键。
FLUSHALL清空所有数据库

Redis的事务

        数据库事务是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。

特性Redis 事务MySQL 事务
原子性支持基本的原子性,但命令执行失败不会回滚。支持原子性,所有操作作为一个整体执行,要么全部成功,要么全部失败。
一致性不保证一致性,事务中的失败操作不会影响其他操作。保证一致性,事务执行后数据库从一个一致状态转换到另一个一致状态。
隔离性没有传统的事务隔离级别,所有命令按顺序执行,无并发控制。提供多种隔离级别(如READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE),防止并发操作带来的问题。
持久性不保证持久性,默认情况下数据存储在内存中,重启后丢失。保证持久性,数据写入磁盘,重启后数据不丢失。
锁定机制没有传统的事务锁定机制,使用乐观锁(WATCH命令)控制并发。使用悲观锁机制,如行锁、表锁,防止并发操作对数据的影响。
事务命令MULTIEXECDISCARDWATCHSTART TRANSACTIONCOMMITROLLBACK
失败处理命令执行失败不会自动回滚,需要手动处理。失败时自动回滚,恢复到事务开始前的状态。
性能由于内存存储,性能非常高,但不保证持久性。性能相对较低,但保证持久性和数据一致性。
适用场景适用于对速度要求高、对持久性要求不高的场景。适用于对数据一致性和持久性要求高的场景。

Redis持久化配置

1.RDB和AOF比较

为了防止数据丢失以及服务重启时能够恢复数据,Redis支持数据的持久化,主要分为两种方式:RDB和AOF,redis默认采用的是RDB的方式

特性RDB(Redis DataBase)AOF(Append-Only File)
持久化方式定期快照,将内存中的数据集以二进制格式保存到磁盘。追加日志,将每个写操作追加到文件末尾。
文件格式二进制文件(.rdb)文本文件,记录每个写操作的命令。
恢复速度快,因为恢复时只需加载二进制文件到内存。较慢,因为需要逐条执行日志中的命令。
文件大小较小,因为只保存数据集的快照。较大,因为记录了每个写操作的详细信息。
数据丢失风险较高,如果在两次快照之间发生故障,数据可能会丢失。较低,除非 AOF 文件被破坏,否则数据丢失风险较小。
写入频率不频繁,定期执行快照。较频繁,每个写操作都会被记录。
配置选项save 配置选项,如 save 900 1 表示900秒内有1个键变化时触发快照。appendonly 配置选项,如 appendonly yes 启用 AOF。
重启性能较高,重启时加载快照文件到内存。较低,重启时需要逐条执行 AOF 文件中的命令。
恢复点固定时间点,如每小时、每天的快照。无限接近实时,因为每个写操作都被记录。
适用场景对数据丢失容忍度较高,需要快速备份和恢复的场景。对数据完整性和一致性要求较高,能够容忍较慢恢复速度的场景。
混合使用可以与 AOF 混合使用,先加载 RDB 快照,再执行 AOF 日志。可以与 RDB 混合使用,先加载 RDB 快照,再执行 AOF 日志(Redis 4.0+)。

两种持久化机制的比较 

特性RDB(Redis DataBase)AOF(Append-Only File)
持久化方式定期生成快照,保存某个时间点上的数据集。记录每个写操作的命令,追加到文件末尾。
文件格式二进制文件(.rdb)文本文件,记录每个写操作的命令。
恢复速度快,因为只需要加载一个二进制文件。较慢,因为需要逐条执行文件中的命令。
文件大小较小,只包含数据集的快照。较大,包含所有写操作的详细信息。
数据丢失风险较高,如果在两次快照之间发生故障,数据可能会丢失。较低,除非 AOF 文件被破坏,否则数据丢失风险较小。
写入频率不频繁,定期执行快照。较频繁,每个写操作都会被记录。
配置选项save 配置选项,如 save 900 1 表示900秒内有1个键变化时触发快照。appendonly 配置选项,如 appendonly yes 启用 AOF。
重启性能较高,重启时加载快照文件到内存。较低,重启时需要逐条执行 AOF 文件中的命令。
恢复点固定时间点,如每小时、每天的快照。无限接近实时,因为每个写操作都被记录。
适用场景对数据丢失容忍度较高,需要快速备份和恢复的场景。对数据完整性和一致性要求较高,能够容忍较慢恢复速度的场景。
混合使用可以与 AOF 混合使用,先加载 RDB 快照,再执行 AOF 日志。可以与 RDB 混合使用,先加载 RDB 快照,再执行 AOF 日志(Redis 4.0+)。

详细比较

  1. RDB 优点:

    • 恢复速度快: 因为只加载一个二进制文件,恢复速度非常快。
    • 文件小: 只包含数据集的快照,文件体积较小。
    • 备份方便: 可以方便地将 RDB 文件复制到其他地方进行备份。
  2. RDB 缺点:

    • 数据丢失风险高: 如果在两次快照之间发生故障,可能会丢失部分数据。
    • 不实时: 不是实时持久化,而是定期快照。
  3. AOF 优点:

    • 数据丢失风险低: 除非 AOF 文件被破坏,否则数据丢失风险较小。
    • 实时性高: 每个写操作都会被记录,接近实时持久化。
    • 可重写: AOF 文件可以被重写,减少文件体积。
  4. AOF 缺点:

    • 恢复速度慢: 因为需要逐条执行文件中的命令,恢复速度较慢。
    • 文件大: 包含所有写操作的详细信息,文件体积较大。
    • 性能影响: 每个写操作都会被记录,可能会对性能产生一定影响。

混合持久化

在 Redis 4.0 之后,引入了混合持久化(Mixed Persistence)的方式,结合了 RDB 和 AOF 的优点,以提供更高效和可靠的数据持久化方案。

混合持久化的工作原理

在开启混合持久化的情况下,AOF 重写时会将 Redis 的持久化数据以 RDB 的格式写入到 AOF 文件的开头,之后的数据再以 AOF 的格式追加到文件的末尾。这种方式结合了 RDB 的高效性和 AOF 的可靠性。

混合持久化的优点
  • 快速启动: 由于 AOF 文件的开头部分是以 RDB 格式存储的数据快照,Redis 可以快速加载这部分数据,从而加快启动速度。
  • 减少数据丢失风险: 结合了 AOF 的实时性,减少了在故障发生时数据丢失的风险。
  • 高效性: RDB 格式的数据快照使得文件体积较小,减少了文件大小和加载时间。
混合持久化的缺点
  • 可读性差: AOF 文件中添加了 RDB 格式的内容,使得 AOF 文件的可读性变得很差,难以直接查看或手动修改。
  • 兼容性差: 混合持久化的 AOF 文件不能用于 Redis 4.0 之前的版本,因为这些版本不支持混合持久化格式。
关键字
  • RDB:Redis DataBase,高效的二进制文件格式,快速加载。
  • AOF:Append-Only File,记录每个写操作的命令,提供更高的数据可靠性。
  • 混合持久化:结合 RDB 和 AOF 的优点,提供更高效和可靠的数据持久化方案。
  • 快速启动:混合持久化使得 Redis 可以更快的启动。
  • 减少数据丢失风险:结合 AOF 的优点,减少了数据丢失的风险。
  • 可读性差:AOF 文件中添加了 RDB 格式的内容,使得文件可读性变差。
  • 兼容性差:混合持久化的 AOF 文件不能用于 Redis 4.0 之前的版本。

如何配置持久化 

        在 Redis 中配置持久化可以通过修改 redis.conf 配置文件来实现。以下是如何配置 RDB 和 AOF 持久化的详细步骤。

配置 RDB 持久化

        RDB 持久化通过定期生成数据快照来保存数据。可以通过 redis.conf 文件中的 save 指令来配置 RDB 持久化策略。

1. 打开 redis.conf 文件
sudo nano /etc/redis/redis.conf
2. 配置 save 指令

在文件中找到并修改 save 指令。save 指令的格式是 save <seconds> <changes>,表示在指定的秒数内有指定的键变化时触发快照。

例如:

save 900 1       # 900 秒内有 1 个键变化时触发快照
save 300 10 # 300 秒内有 10 个键变化时触发快照
save 60 10000 # 60 秒内有 10000 个键变化时触发快照
3. 配置 RDB 文件的保存路径和名称

在文件中找到并修改 dir 和 dbfilename 指令

dir /var/lib/redis  # 指定 RDB 文件保存的目录
dbfilename dump.rdb # 指定 RDB 文件的名称
4. 保存并退出

保存文件并退出编辑器。

5. 重启 Redis 服务

使配置生效:

sudo systemctl restart redis

配置 AOF 持久化

AOF 持久化通过记录每个写操作的命令来保存数据。可以通过 redis.conf 文件中的 appendonly 和相关指令来配置 AOF 持久化策略。

1. 打开 redis.conf 文件
sudo nano /etc/redis/redis.conf
2. 启用 AOF 持久化

找到并修改 appendonly 指令:

appendonly yes  # 启用 AOF 持久化
3. 配置 AOF 文件的保存路径和名称

在文件中找到并修改 dir 和 appendfilename 指令:

dir /var/lib/redis  # 指定 AOF 文件保存的目录
appendfilename "appendonly.aof" # 指定 AOF 文件的名称
4. 配置 AOF 重写策略

在文件中找到并修改 appendfsync 指令,控制 AOF 文件的同步频率

appendfsync everysec  # 每秒同步一次(推荐)
# appendfsync always # 每次写操作都同步(性能较差)
# appendfsync no # 不主动同步,由操作系统决定(性能最好)
5. 保存并退出

保存文件并退出编辑器。

6. 重启 Redis 服务

使配置生效:

sudo systemctl restart redis

配置混合持久化

如果你使用的是 Redis 4.0 及以上版本,并且希望启用混合持久化,可以通过以下步骤配置:

1. 打开 redis.conf 文件
sudo nano /etc/redis/redis.conf
2. 启用混合持久化

找到并修改 aof-use-rdb-preamble 指令:

aof-use-rdb-preamble yes  # 启用混合持久化
3. 保存并退出

保存文件并退出编辑器。

4. 重启 Redis 服务

使配置生效:

sudo systemctl restart redis

 通过以上步骤,你可以根据需求配置 Redis 的持久化策略,确保数据的安全性和可靠性。

举报

相关推荐

0 条评论