Redis数据结构
String底层是sds,有点类似于java的ArrayList,预分配内存,不足扩容。
1.SDS(简单动态字符串),带长度信息的字节数组
2.SDS内包含数组容量,数组长度,数据内容等,二进制安全
3.存储方式,raw和embstr,embstr是对象头和数据内容连续分配在一起,raw是对象头和数据内容不连续。
4.SDS扩容为少于1M,则加倍增加,大于1m,则每次只增加1m
怎么用Redis实现消息队列?
答案是用Redis的list数据结构,通过lpush将消息推入队列中,rpop将消息取出消费。
直白地讲,就是分布式锁加锁失败了。怎么处理呢,我认为得看场景
我认为一般会采用第一个方法,让请求快速失败掉。第二种方法一是自旋比较耗资源,第二是自旋得幂等做好。
通过zset实现,开多个线程去轮询获取队列里面的消息。
关键点:通过zrem将消息移除出队列。避免多线程同时处理同一条消息。