Redis的数据结构有:
1.字符串:可以用来做最简单的数据,可以缓存某个简单的字符串,也可以缓存某个json格式的字符串,Redis分布式锁的实现就利用了这种数据结构,还包括可以实现计数器、Session共享、分布式ID
2. 哈希表:可以用来存储一些key-value对,更适合用来存储对象
3.列表:Redis的列表通过命令的组合,既可以当做栈,也可以当做队列来使用,可以用来缓存类似微信公众号、微博等消息流数据
4.集合:和列表类似,也可以存储多个元素,但是不能重复,集合可以进行交集、并集、差集操作,从而可以实现类似,我和某人共同关注的人、朋友圈点赞等功能
5. 有序集合:集合是无序的,有序集合可以设置顺序,可以用来实现排行榜功能
Redis分布式锁底层是如何实现的?
1.首先利用setnx来保证:如果key不存在才能获取到锁,如果key存在,则获取不到锁
2.然后还要利用Iua脚本来保证多个redis操作的原子性
3.同时还要考虑到锁过期,所以需要额外的一个看门狗定时任务来监听锁是否需要续约
4.同时还要考虑到redis节点挂掉后的情况,所以需要采用红锁的方式来同时向N/2+1个节点申请锁,都申请到了才证明获取铁成功,这样就算其中某个redis节点挂掉了,锁也不能被其他客户端获取到