Redis面试总结

数据结构

简单动态字符串

对象类型

字符串,列表,集合,有序集合,哈希

Redis常用的命令 操作List 常用的命令

有序集合的使用场景

热点资讯排行榜,根据点击量,时间等进行排序

redis 怎么保证 两个操作原子性

redis事务失败是否rollback

事务在执行过程中发生错误,resdis不会中断事务的执行,它会继续执行剩下的命令,不会rollback

redis集群高可用实现

持久化方式

rdb,aof

redis 过多数据 打到同一实例,导致负载过高问题如何解决

缓存更新问题

redis单机最大QPS

原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间 公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS) 机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器 问:每天300w PV 的在单台机器上,这台机器需要多少QPS? 答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS) 问:如果一台机器的QPS是58,需要几台机器来支持? 答:139 / 58 = 3

缓存策略

分布式缓存(redis)和本地缓存的使用场景

redis 使用遇到的问题

锁释放问题, lua脚本保证释放锁为当前线程拥有

集群搭建

配置redis.conf文件

# 端口号,每个目录都不同
port 7000
# 开启集群模式
cluster-enabled yes
#节点超时实际,单位毫秒
cluster-node-timeout 5000
#集群内部配置文件(默认为 nodes-6379.conf)
cluster-config-file nodes.conf
# 启动 AOF
appendonly yes
# 默认是no,改成 yes,意思是是否要后台启动。
daemonize yes

启动redis节点

#各节点目录执行
redis-server redis.conf

查看节点启动状态

ps -ef|grep redis

客户端连接任意节点

redis-cli -p 7000

执行以下命令关联其他节点

127.0.0.1:7000> cluster meet 127.0.0.1 7001
OK
127.0.0.1:7000> cluster meet 127.0.0.1 7002
OK
127.0.0.1:7000> cluster meet 127.0.0.1 7003
OK
127.0.0.1:7000> cluster meet 127.0.0.1 7004
OK
127.0.0.1:7000> cluster meet 127.0.0.1 7005
OK

分配 slot
redis Cluster 是由16384 个slot组成的,那么我们需要将这些槽分散到这其中 3个节点里(3主3从)

节点默认slot分配情况

查看节点分配情况

redis-cli -p 7000 cluster nodes

主从配置
分别设置7003、 7004 、7005节点的主库

redis-cli -p 7003 cluster replicate 主节点7000NodeId

redis-cli -p 7004 cluster replicate 主节点7001NodeId

redis-cli -p 7005 cluster replicate 主节点7002NodeId

你可能感兴趣的:(redis)