数据结构
简单动态字符串
对象类型
字符串,列表,集合,有序集合,哈希
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
发表回复