Redis极简入门-Redis高级特性

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 1.1.什么是Redis持久化因为Redis数据基于内存读写,为了防止Redis服务器关闭或者宕机造成数据丢失,我们通常需要对Redis最磁极化,即:把内从中的数据(命令)保存一份到磁盘做一个备份,当Redis服务关闭或者宕机,在Redis服务器重启的时候会从磁盘重新加载备份的数据,不至于数据丢失。 Redis 提供了两种不同级别的持久化方式:RDB和AOF,可以通过修改redis.conf来进行配置.开启持久配置后,对Redis进行写操作,在Redis安装目录将会看到持久文件:“appendonly.aof”和“ dump.rdb”。

一.Redis设置密码

1.临时修改

  • CONFIG SET 命令可以动态地调整 Redis 服务器的配置而无须重启,重启后失效
CONFIG SET requirepass 123456

2.永久修改

  • 修改配置文件 redis.widows.conf ,增加代码:
requirepass 123456

3.登录Redis

  • 启动redis-cli.exe ,执行auth命令:
auth 123456

二.Redis中的事务

1.事务概念

1.1.什么是事务

单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。

Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:

  • 批量操作在发送 EXEC 命令前被放入队列缓存。
  • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

一个事务从开始到执行会经历以下三个阶段:

  • 开始事务。
  • 命令入队。
  • 执行事务。

1.2.事务的原理

当执行multi命令将会开启事务,那么所有命令就会加入事务队列暂存,不会真正的直接执行,如果遇到exec就会把队列中的命令依次执行-提交事务,需要注意的是即使有的命令执行失败了,也不会影响其他命令的执行结果-不回滚,但是如果遇到discard就会放弃执行队列中的命令-取消事务 , 如下:

2.操作事务

2.1.multi

  • 标记一个事务块的开始。
multi   #开启事务
 set name zs  #添加字符串值
 set age  18  #添加数字值
 incr name    #name的值+1
 incr age   #age的值+1

2.2.exec

  • 执行所有事务块内的命令。
exec    #提交事务,开启 multi 后的所有命令将被执行,如果有命令失败了也不会回滚成功的命令依然成功
        #incr name命令会执行失败因为字符串是不能+1的,incr age命令会执行成功,age的值是数字能+1
get name  #返回zs
get age   #返回19

2.3.discard

  • 取消事务,如果在开启multi后选择执行discard命令,将会 放弃执行事务块内的所有命令。
discard   #取消事务,开启multi后的所有命令将取消执行
get name  #会返回空值
get age   #会返回空值

三.发布/订阅

1.基本概念

1.1.什么是发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。没订阅的接收者当然是接收不到消息的,(pub/sub)是一种广播模式,及会把消息发送给所有的订阅者

1.2.原理模拟图

消息接收者通过 SUBSCRIBE channel 命令订阅某个频道 , 消息发布者通过 PUBLISH channel message 向该频道发布消息,那么订阅了该频道的所有接收者就可以收到消息。

2.发布订阅实战

2.1.消息接收者

  • 开启两个redis-cli 作为两个接受者,订阅同一个频道
SUBSCRIBE cctv    #cctv作为订阅的频道,可以任意定义名字

2.2.消息发布者

  • 开启一个redis-server 作为消息发送者,往 cctv 频道发布消息
PUBLISH cctv '我是消息,发往cctv频道,over'

观察redis-cli接受者应该能收到消息内容“我是消息,发往cctv频道,over”

四.Redis的持久化配置

1.Redis的持久化概念

1.1.什么是Redis持久化

因为Redis数据基于内存读写,为了防止Redis服务器关闭或者宕机造成数据丢失,我们通常需要对Redis最磁极化,即:把内从中的数据(命令)保存一份到磁盘做一个备份,当Redis服务关闭或者宕机,

在Redis服务器重启的时候会从磁盘重新加载备份的数据,不至于数据丢失。 Redis 提供了两种不同级别的持久化方式:RDB和AOF,可以通过修改redis.conf来进行配置.

开启持久配置后,对Redis进行写操作,在Redis安装目录将会看到持久文件:“appendonly.aof”和“ dump.rdb”。

1.2.Redis如何保保存数据

redis为了考虑效率,保存数据在内容中.并且考虑数据安全性,还做数据持久化,如果满足保存策略,就会把内存的数据保存到数据rdb文件,还来不及保存那部分数据存放到aof更新日志中。在加载时,把两个数据做一个并集。

1.3.Redis持久化原理图

  • 保存持久化数据

  • 启动Redis载入持久化数据

1.3.Redis持久化-RDB

RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照,默认开启该模式

  • 如何关闭 rdb 模式?修改配置文件注释如下内容
save ""
# save 900 1        #至少在900秒的时间段内至少有一次改变存储同步一次
# save xxx
# save 60 10000

1.4.Redis持久化-AOF

AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,默认关闭该模式。

  • 如何开启aof模式?修改配置文件如下内容
appendonly yes        #yes 开启,no 关闭
# appendfsync always  #每次有新命令时就执行一次fsync 
appendfsync everysec  #每秒 fsync 一次 ,这里我们启用 everysec
# appendfsync no      #从不fsync(交给操作系统来处理,可能很久才执行一次fsync)
          #其它的参数请大家看redis.conf配置文件详解

2.Redis持久配置

2.1.配置文件

  • 见:redis.windows.conf 或者 redis.conf ,Redis 版本不一样配置文件名字不一样
- bind          # 指定的ip才能访问
- port          #默认端口
- timeout       #连接超时
- loglevel        #日志的级别
- logfile       #日志文件输出路径
- databases       #数据库数量
- save 900 1      #RDB持久方式,900 秒有一个数据修改进行持久化
- appendonely     #AOF持久方式

2.2.Redis持久化配置

根据业务情况修改配置文件中的持久化配置项目即可

2.3.数据备份与恢复

虽然配置了持久化Redis会进行自动数据备份,我们也可以通过SAVE 或者 BGSAVE (后台备份)命令创建当前数据库的备份

  • 数据备份执行如下命令
save  #该命令将在 redis 安装目录中创建dump.rdb文件。
• 1
  • 恢复数据,将dump.rdb) 移动到 redis 安装目录并启动服务即可。
  • 在Linux上获取 redis 目录可以使用 CONFIG 命令如:
CONFIG GET dir      #返回:"/usr/local/redis/bin"

五.Redis的淘汰策略

1.淘汰策略基本概念

1.1.为什么要淘汰

Redis的数据读写基于内存,Redis虽然快,但是内存成本还是比较高的,而且基于内存Redis不适合存储太大量的数据。Redis可以使用电脑物理最大内存,当然我们通常会通过设置maxmemory参数现在Redis内存的使用, 为了让有限的内存空间存储更多的有效数据,我们可以设置淘汰策略,让Redis自动淘汰那些老旧的,或者不怎么被使用的数据。

redis 确定驱逐某个键值对后,会删除这个数据并,并将这个数据变更消息发布到本地(AOF 持久化)和从机(主从连接)。

2.2.淘汰策略有哪些

  • volatile-lru :从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
  • volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
  • volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
  • allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
  • allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
  • no-enviction(驱逐):禁止驱逐数据

2.淘汰策略配置

2.1.最大内存配置

  • 修改配置redis.window.conf,修改maxmemory,放开注释, 根据情况设置大小
maxmemory <bytes

2.2.淘汰策略配置

  • 修改配置redis.window.conf ,修改maxmemory-policy ,放开注释,按情况修改策略
maxmemory-policy noeviction   #noeviction 为默认的策略,根据情况修改
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
存储 缓存 监控
利用 Redis 缓存特性避免缓存穿透的策略与方法
【10月更文挑战第23天】通过以上对利用 Redis 缓存特性避免缓存穿透的详细阐述,我们对这一策略有了更深入的理解。在实际应用中,我们需要根据具体情况灵活运用这些方法,并结合其他技术手段,共同保障系统的稳定和高效运行。同时,要不断关注 Redis 缓存特性的发展和变化,及时调整策略,以应对不断出现的新挑战。
71 10
|
2月前
|
缓存 NoSQL Java
springboot的缓存和redis缓存,入门级别教程
本文介绍了Spring Boot中的缓存机制,包括使用默认的JVM缓存和集成Redis缓存,以及如何配置和使用缓存来提高应用程序性能。
130 1
springboot的缓存和redis缓存,入门级别教程
|
2月前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
70 8
|
2月前
|
存储 消息中间件 NoSQL
【redis】redis的特性和主要应用场景
【redis】redis的特性和主要应用场景
166 1
|
2月前
|
NoSQL 关系型数据库 MySQL
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
本文全面阐述了Redis事务的特性、原理、具体命令操作,指出Redis事务具有原子性但不保证一致性、持久性和隔离性,并解释了Redis事务的适用场景和WATCH命令的乐观锁机制。
406 0
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
|
4月前
|
SQL 存储 NoSQL
Redis6入门到实战------ 一、NoSQL数据库简介
这篇文章是关于NoSQL数据库的简介,讨论了技术发展、NoSQL数据库的概念、适用场景、不适用场景,以及常见的非关系型数据库。文章还提到了Web1.0到Web2.0时代的技术演进,以及解决CPU、内存和IO压力的方法,并对比了行式存储和列式存储数据库的特点。
Redis6入门到实战------ 一、NoSQL数据库简介
|
4月前
|
NoSQL 算法 安全
Redis6入门到实战------ 四、Redis配置文件介绍
这篇文章详细介绍了Redis配置文件中的各种设置,包括单位定义、包含配置、网络配置、守护进程设置、日志记录、密码安全、客户端连接限制以及内存使用策略等。
Redis6入门到实战------ 四、Redis配置文件介绍
|
4月前
|
NoSQL Redis 数据安全/隐私保护
Redis6入门到实战------ 二、Redis安装
这篇文章详细介绍了Redis 6的安装过程,包括下载、解压、编译、安装、配置以及启动Redis服务器的步骤。还涵盖了如何设置Redis以在后台运行,如何为Redis设置密码保护,以及如何配置Redis服务以实现开机自启动。
Redis6入门到实战------ 二、Redis安装
|
4月前
|
NoSQL Java Redis
Redis6入门到实战------思维导图+章节目录
这篇文章提供了Redis 6从入门到实战的全面学习资料,包括思维导图和各章节目录,涵盖了NoSQL数据库、Redis安装配置、数据类型、事务、持久化、主从复制、集群等核心知识点。
Redis6入门到实战------思维导图+章节目录
|
4月前
|
NoSQL 安全 Java
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
这篇文章深入探讨了Redis中的String数据类型,包括键操作的命令、String类型的命令使用,以及String在Redis中的内部数据结构实现。
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)

相关产品

  • 云数据库 Tair(兼容 Redis)