一、hash优缺点

优点:

1.同类数据归类的整合储存,方便数据管理

2.相比string操作消耗内存与 cpu更小

3.相比string储存更节省空间

缺点:

1.过期功能不能使用在field上,只能用在key上

2.redis集群架构下不适合大规模使用

 

hash应用场景

一、电商购物车

1.以用户id为key

2.商品id为field

3.商品数量为value

 

pipeline不具有原子性,不建议用redis事务,用lua实现事务

二、redis分布式锁

锁超时问题:业务逻辑时间大于锁过期时间。锁提前删除了 

 

 

 

redission依赖lua脚本的原子性实现的。 

 分段锁, 库存数据分散存储,实现高并发分布式锁.

三、redis是否适用分布式锁的思考过程

1、现实存在问题

一般使用 setnx 方法,通过 Redis 实现锁和超时时间来控制锁的失效时间。但是在极端的情况下,当 Reids 主节点挂掉,但锁还没有同步到从节点时,根据哨兵机制,从就变成了主,继续提供服务。这时,另外的线程可以再来请求锁,此时就会出现两个线程拿到了锁的情况。

2、回归理论指导

Redis 的设计模型是 AP 模型,而分布式锁是一个 CP 场景,那么很明显,将 Redis 这种 AP 模型的架构应用于 CP 的场景,在底层的技术选型上就是错误的。

3、扩展到知识体系

Redis 属于分布式存储系统,你的头脑里就要有对分布式存储系统领域的知识体系。思考它的数据存储、数据分布、数据复制,以及数据一致性都是怎么做的,用了哪些技术来实现,为什么要做这样的技术或算法选型。你要学会从多维度、多角度去对比、分析同一分布式问题的不同方法,然后综合权衡各种方法的优缺点,最终形成自己的技术认知和技术判断力。

4、有技术的判断力

比如通过 Redis,你能想到目前分布式缓存系统的发展现状以及技术实现,如果让你造一个“Redis”出来,你会考虑哪些问题等。虽然在实际工作中不推荐重复“造轮子”,但在面试中要表现出自己具备“造轮子”的能力。

 

 posted on 2021-01-06 17:59  kundij  阅读(74)  评论(0编辑  收藏  举报