Redis 知识整理

时间:2024-10-05 12:06:32

1. 什么是Redis

 Redis是开源的、基于内存的键值对数据库。

2. Redis 的基本操作

 set key value => mset, setbit, hset

 get key => mget(multiple), getbit, hget(hash),  hmgetall

 del key

 exists, type, keys 匹配, incr, decr, append, strlen, lpush, lpop, rpop, rpush, Irang

3. Redis 的 sentinel 上投票选举问题

 介绍:sentinel 模式主要为 Redis 提供了主从技术支持。

 Redis 提供 sentinel 是一个独立的进程,通过向多个 Redis 服务器发送命令而监控多个运行中的 Redis 实例(周期性发送PING),每个实例返回运行状态,如果检测到 master 泵机,将 slave 切换成 master,再通过发布订阅模式通知其他从服务器切换主机(修改配置文件)。

 除此之外,Redis 还可以使用多哨兵模式进行监控,各个哨兵之间还会进行监控。哨兵进程使用流言协议接收 master 是否下线的信息,并使用投票协议来决定是否执行故障迁移以及选用哪个服务器作为主服务器。

 故障切换(failover)是当单一哨兵检测到 master 泵机,发生主观下线。第一个哨兵发现后会向其他哨兵间歇性发送 “is master down by addr <ip><port>”获取响应信息,如果发现的哨兵到达一定数量(quorum预设值),即到达一致,进行failover操作,切换成功后会发生订阅模式,各个邵明把自己监控的从服务器切换主机,发生客观下线

 Failover:failover前等待0-5秒让其他哨兵实例准备。查找slave,选一个状态良好,权重最低的slave为master。该slave提升为master后,等待其他哨兵提升,都成功后,对slave配置文件进行修改,告知slave跟随新的master,一个一个同步。

 Leader 选举:master的选举以及slave的重配置和同步中涉及到重选 leader作为调度,通过更改配置文件中的参数实现配置,在“can-failover”的哨兵中按照runid字典顺序排序,选举最小的哨兵作为leader。

4. Redis 单线程结构优缺点?

 优势:避免线程切换产生切换CPU的时间;避免锁的开销。

 缺点:无法发挥多核CPU的性能;

 

 redis 使用 io 复用的 Epoll 和输入缓冲区把命令按照队列先进先出,让单线程高效处理多个请求。

5. Redis 的缺点导致那些命令在Redis上不可用?

 Keys、hgetall、scan等

6. Redis vs Memcached

 速度快,支持数据类型多,可以持久化数据。

7. Redis集群方案

 1. 代理twemproxy & codis:一致性hash算法转接redis

 2. 自带集群:hash槽,16384个哈希槽,每个key通过CRC16校验后 mod 16394来决定放哪个槽。主从复制,异步,不能保证强一致性

 也可以在自己的业务逻辑层写=。=