Redis的微总结

本文介绍了Redis的基本概念,包括其数据结构、数据库操作指令、持久化方式(RDB与AOF)、主从复制、哨兵机制及集群特性。同时,探讨了Redis高性能的原因,如基于内存的操作、简单的数据结构和单线程模式等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis —> Remote Dictionary Server

单机数据库

数据库的常用指令

Redis服务器默认会创建16个数据库,序号为0-15,切换数据库的命令“ select 0”即切换到0号数据库,其他同理.
Redis使用对象来表示数据库中的键和值,当我们每次在数据库中创建一个键值对时都会创建两个对象,一个是键对象,一个值对象。键对象的类型有以下几个:

  1. 字符串对象
    添加: SET KEY VALUE
    获取: GET KEY

  2. 列表对象
    添加: LPUSH KEY VALUE 、 RPUSH KEY VALUE
    获取并删除: RPOP/LPOP KEY

  3. 哈希对象
    添加: HSET KEY VALUE
    获取: HGET KEY
    删除: HDEL KEY

  4. 集合对象
    添加: SADD K V
    获取集合对象数量: SCARD K
    删除: SPOP K

  5. 有序集合对象
    添加: ZADD K V
    获取集合对象数量: ZCARD K
    删除: ZREM K
    指定索引范围内所有元素: ZRANGE K 0 -1 获取所有

RDB持久化

利用 SAVE 命令主动对 Redis 服务器缓存里面的数据进行 RDB 持久化保存,生成一个RDB 文件,服务器下次启动时扫描是否有RDB 文件,有则自动加载。
值得注意的是 save 命令一旦实施,Redis服务器进程将会被阻塞,即不能进行任何操作,直到持久化完成。
BGSAVE 即“background save” 与save 命令不同,他不会阻塞服务器进程,而是会重生一个子进程,由子进程创建RDB 文件,服务器进程也就是主进程继续执行自己的操作。
自动间隔性保存 可以设置满足什么条件时服务器自动进行保存,如:
SAVE 900 1 // 900秒内,服务器修改至少1次
SAVE 300 10 // 300秒内,服务器修改至少10次
SAVE 60 10000 // 60秒内,服务器修改至少10000次
那么只要满足上面条件其中任意一个,BGSAVE 命令自动执行,服务器自动保存数据。

AOF持久化

不同于RDB 持久化,通过保存数据库的键值对来保存数据库的状态,ADF 持久化是通过保存Redis服务器所执行的的写命令来保存数据库的状态。

多机数据库

主从复制

命令: SLAVAOF <master_ip> <master_port>

Sentinel

sentinal (哨兵,岗哨)是Redis 高可用性的解决方案,一个或多个Sentinal实例组成的Sentinal系统可以监视任意多个主服务器以及这些主服务器下的从服务器,在被监视的一个主服务器进去下线状态时(或者说宕机了),自动的将主服务器的某一个从服务器升级成为新主服务器,然后由新主服务器代替旧主服务器继续命令请求,旧主服务器在合适的时候重启,成为新主服务器的从服务器。

集群

一个Redis集群是由多个节点(Node)组成,开始时,每个节点都分别在只包含自己的集群中相互独立地工作,如果使用 CLUSTER MEET 命令;如向一个Node 发送CLUSTER MEET 命令,可以让Node节点与ip 和port 指定的节点进行握手,当握手成功时,Node节点就会将那个指定的节点添加到Node节点当前所在的集群中。

Redis为什么会这么快

  1. 基于内存操作,绝大部分的请求是纯粹的内存操作,避免了硬盘I /O 速度慢的限制;
  2. 数据结构简单,不用像关系型数据库那样设计表,一个对象想要存储必须按照表的格式传入数据;
  3. 采用了单线程模式,避免了 CPU 执行多线程时进行的上下文切换所花费的时间(上下文切换:某个线程执行完 cpu 分配的时间片,就轮到下一个享用 cpu 分配的时间片,但在切换前要保存上一个任务的运行状态,以便下一次轮到这个任务执行时,可以再加载到上次结束时的状态,这种任务从保存到再加载的过程就是一次上下文切换。)
  4. 使用多路 I/O 复用模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值