redis延伸

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 在掌握了 redis 常用的五种类型以及适用场景后,快来学习更多高级操作吧

1.Redis 事务

redis 中有类似于事务的东西,保证事务执行时不被其他客户端发来的请求中断。但是和关系数据库并不相同。它的事务不支持回滚操作,因此在统一执行事务中所有命令时,即使有一条失败,之前执行过的命令仍然生效。

事务执行过程:开启事务,进行相关操作(所有操作按顺序添加到队列中),执行。

此处可能有人会问:既然不支持回滚,那么在事务执行的过程中,所处理的数据被其他人修改了,怎么办?redis 提供了一个监视器 watch 命令,它的执行过程如下:

1) 使用监视器监控一个变量

2) 使用 multi 开启事务

3) 向队列中添加一系列命令

4) 在使用 exec 统一执行队列中所有操作前,监视器会去查看监控的变量是否被更改过,如果有变化直接报错,没有则正常执行更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

看到上述执行过程后,会发现它类似于「乐观锁」

单机支持事务,集群不支持。

可以使用命令 info Replication 查看所属角色(主 MasterSlave 信息)

1.1 相关命令

multi 开启事务

exec 统一执行

watch 监视器「乐观锁」

1.2 模块化操作

我们在使用 python 第三方库操作 redis 时,一般通过 pipeline 管道进行接收命令,然后 execute 顺序执行管道中所有操作。

优点:可以在客户端统一收集指令;会隐式的执行 multiexec 命令。

2.Redis 持久化

redis 是内存型的数据库,为保证发生宕机时可以恢复数据,所以需要持久化。共有下方两种方式:

2.1 RDB

快照持久化(把当前内存状态刷入硬盘)

1) 创建子进程执行,停顿时长(随着数据量的增大,创建子进程所耗费的时间会越来越长。比如使用了40G内存后,创建一个子进程可能耗费4s多,这4s数据库会处于停服状态)更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

2) 定期触发(默认开启)

3) 手动执行 BGSAVE 命令(background save 后台保存)时触发

4) 执行 SHUTDOWN 关闭数据库时触发

2.2 AOF

追加文件的方式进行持久化

1) 保存的是操作指令

2) 默认关闭

3) 可以选择 appendsync always / everysec / no 三种方式,一般选择每秒记录一次

4) 占用磁盘一定量时会进行压缩,可手动开启配置项

在实际使用时一般两种方式都开启。

3.Redis 复制集

为了在部分节点无法通讯时,保证服务仍然可用。

3.1 设置方式

1) 服务运行时执行命令 slaveof

2) 服务启动前在 redis.conf 配置文件中填写以下代码:


slaveof <masterip> <masterport>

3.2 注意事项

只能一主多从(不允许存在互为备份的两个 master),但是可以层级化,如下图所示。

                  master
                 /     \
           slave1        slave2
          /      \
      slave3   slave4       ......

使用如下命令查看当前 redis 服务器所扮演角色:


info Replication

4.Sentinel 哨兵

1) 是一个独立的进程,安装之后默认存在,可以通过源码文件sentinel.conf 查看。

2) 哨兵独立于 redis 之外运行。

4.1 作用

看管 redis 主从角色关系,进行故障转移(failover) ,从而实现高可用。它的功能简单来说就是 master 死掉了,可以自动将 slave 上升为 master更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

4.2 注意

至少运行3个实例,因为决定 redis 是否挂掉需要选举,超过半数投票才可以使 master 客观下线。还会在哨兵中选举出一个 leader 去故障转移,在 slave 中选出哪台被上升为 master

5.redis 用途

1) 缓存

2) 持久存储:比如数据库的冗余字段存放到 redis

3) 队列:消息平台,比如 celery 的消息队列实现

4) 排行榜/计数器

5) 发布订阅


相关实践学习
基于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
相关文章
|
缓存 NoSQL Redis
Redis从入门到精通之Redis的内部运作机制
Redis采用基于Reactor模式的事件处理模型,这套模型对应于Redis的文件事件处理器(file event handler),并且是Redis高效的事件处理模型的基础。与Netty的线程模型类似,Redis的事件处理模型也是基于Reactor模式设计的,这种模式被广泛应用于高性能IO的开发中。Redis采用单线程模型是Redis高性能的关键所在。Redis通过事件驱动机制和I/O多路复用技术来处理并发请求,避免了多线程间的锁竞争和上下文切换,提高了系统的性能。同时,Redis采用单线程模型还可以更好地利用CPU缓存和内存,简化了系统的设计和实现,更容易实现复制和持久化功能。
147 4
Redis从入门到精通之Redis的内部运作机制
|
存储 缓存 NoSQL
Redis(三)基础:Redis五大基础数据类型
键值不要太短,就好是简洁表达含义的键值,例如:”u:1000:pwd”和”user:1000:password”,前者虽然简短,但是后者更容易阅读,一眼就知道键值的含义,并且后者增加的空间消耗相对较小。不过这个算个人习惯,没有人必须要求你该怎么写。
143 0
Redis(三)基础:Redis五大基础数据类型
|
存储 消息中间件 缓存
|
存储 缓存 NoSQL
走进 Redis,让你重新认识 redis。绝不是表面
说到Redis我们不禁的会联想到:缓存。提到缓存我们要聊的就有很多了。
|
存储 消息中间件 缓存
【Redis高手修炼之路】②Redis的五大数据类型
上一篇文章我们了解了什么是redis,这篇文章就介绍一下redis的五大数据类型
107 0
【Redis高手修炼之路】②Redis的五大数据类型
|
缓存 NoSQL Redis
Redis基础实践
Redis基础实践
128 0
|
存储 缓存 监控
带你走进Redis的世界 - 分布式环境下Redis的挑战
带你走进Redis的世界 - 分布式环境下Redis的挑战
148 0
带你走进Redis的世界 - 分布式环境下Redis的挑战
|
缓存 负载均衡 NoSQL
从应用到底层 36张图带你进入Redis世界(十)
从应用到底层 36张图带你进入Redis世界(十)
140 0
从应用到底层 36张图带你进入Redis世界(十)
|
存储 缓存 NoSQL
从应用到底层 36张图带你进入Redis世界(五)
从应用到底层 36张图带你进入Redis世界(五)
115 0
从应用到底层 36张图带你进入Redis世界(五)
|
存储 消息中间件 NoSQL
从应用到底层 36张图带你进入Redis世界(一)
从应用到底层 36张图带你进入Redis世界(一)
100 0
从应用到底层 36张图带你进入Redis世界(一)