Redis的主要特点:
高性能,持久化,原子操作,高可用性。
Redis基本数据类型:
字符串(String):缓存,计数器,这里面可以存字符串,整数,浮点数,
哈希(Hash):存储对象,HSET存,HGET获取
列表(List):消息队列,栈,队列:LPUSH,RPUSH,栈:LPOP,RPOP
集合(Set):标签,好友关系,无序,
有序集合(Sorted Set):排行榜,优先级队列,有序,集合都是每个元素关联一个数。
Bitmaps:可用与位操作,适合存布尔值,
HyperLogLog:可用于估算适合统计唯一值
Redis的线程问题:
他是单线程的,为了避免上下文切换和锁竞争。
持久化问题,还有具体好处:
RDB:快照,恢复速度快,可能丢失最后一次的数据,
RDB触发条件:手写SAVE,BGSAVE,或者自动触发。
AOF:写时复制,数据安全性高,文件体积大,恢复太慢。
AOF重写机制:AOF通过创建一个AOF文件且包含当前数据集的最小操作集。
Redis事务如何实现,支持回滚吗?
Redis用MULTI,EXEC,DISCARD和WATCH命令支持事务且按顺序执行,不能回滚。
发布/订阅模式:
常用命令:SUBSCRIBE,PUBLISH,UNSUBSCRIBE,就是订阅,发布,un订阅,(取关,怎么好记怎么来)
Redis的高可用和分布式问题:
Redis Sentinel 是什么?
哨兵模式,监控健康状态,自动转移故障同时更新主节点,主从复制需要replicaof命令。
Redis Cluster 是什么?这个节点通信机制了解吗?
这是集群模式,分布式解决方案,支持数据分片和自动故障转移同时选举出新的主节点。
而且使用Gossip协议进行节点通信。
Redis的性能问题:
缓存穿透:这里放布隆过滤器。
缓存雪崩:设置永远不过期,重启时候或者访问量少的时候备份,
缓存击穿:这里放互斥锁,和永不过期。
过期策略:定时删除,惰性删除,用EXPIRE命令设置过期时间。
怎么用Redis实现分布式锁:
一般使用SETNX命令实现分布式锁。
Redis如何实现会话存储:
一般使用字符串和哈希结构存。
常用的命令:
SET,GET,HSET,HGET,LPUSH,RPUSH,LPOP,RPOP,ZADD,SADD
内存碎片:
就是你内存分配和释放过程产生的碎片,可以用MEMORY PURGE清理。
Redis数据倾斜:
就是你数据不均匀,可以用CLUSTER REBALACE平衡数据。