一、Redis的数据结构:
常用:字符串String、字典Hash、列表List、集合Set、有序集合SortedSet、HyperLogLog等
二、Redis分布式锁的应用:
通过set指令争抢锁,得到锁后expire设置锁的超时时间(防止锁得不到释放)
三、Redis异步队列的应用:
方法1:(非阻塞)使用list结构作为队列,rpush生产消息,lpop消费消息。当lpop没有消息的时候,暂停一段时间再重试。
方法2:(阻塞)使用list指令blpop,消费消息时如果发现没有消息,会一直阻塞等待消息的到来。
方法3:(多消费者)使用pub/sub主题订阅模式,但在消费者下线的情况下,生产的消息会丢失,一般使用rabbitmq等专业的消息队列工具实现。
四、大量的key同一过期时间失效问题
如果大量的key过期时间设置的过于集中,到过期的那个时间点,redis可能会出现短暂的卡顿现象。一般需要在时间上加一个随机值,使得过期时间分散一些。
五、Redis持久化
全量持久化指令bgsave,增量持久化指令aof。因为bgsave会耗费较长时间,不够实时,在停机的时候会导致大量丢失数据,所以需要aof来配合使用。在redis实例重启时,优先使用aof来恢复内存的状态,如果没有aof日志,就会使用rdb文件来恢复。