利用Redis设计库存系统的苦与乐1、我们先在Redis中拿到当前的库存值 , 然后check是否已经扣减到了零,如果已经扣减到了零,则直接return;否则 , 就利用Redis的decr原子操作进行扣减,同时返回扣减后的库存值 。
2、库存全部放在redis是可取的 。商品的库存全部放入redis,库存的读取直接读取redis , 到了下单环节,库存的扣除也直接在redis扣除,通过消息队列通知后端数据库,最终把库存的扣减异步同步到后台数据库,避免了对数据库的瞬时压力 。
3、Redis提供的incr命令来实现计数器功能,内存操作,性能非常好,非常适用于这些计数场景 。
4、内存使用效率对比:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached 。
【redis的一些问题 redis遇到过哪些坑】5、Redis提供了发布订阅功能和阻塞队列的功 能 , 虽然和专业的消息队列比还不够足够强大,但是对于一般的消息队列功能基本可以满足 。比如在分布式爬虫系统中,使用 redis 来统一管理 url队列 。分布式锁:在分布式服务中 。
6、重试机制:当库存扣减失败时,可以加入重试机制,让请求重新执行一次,一般情况下,问题可以得以解决 。限流措施:当库存扣减失败时,也可以加入限流措施,限制对数据库的访问频率,避免因访问量过大导致数据库崩溃 。
细说分布式redis1、注意 rLock.tryLock(10, TimeUnit.SECONDS); 时间要设置大一点,如果等待时间太短,小于获取锁 redis 命令的时间,那么就直接返回获取锁失败了 。
2、说实话,如果在公司里落地生产环境用分布式锁的时候,一定是会用开源类库的,比如Redis分布式锁 , 一般就是用Redisson框架就好了,非常的简便易用 。
3、我们今天就来实现用 Redis 来实现分布式锁,并且要学会怎么使用 。准备使用 Jedis 的 jar 包 , 在项目中导入 jar 包 。
脑裂以及Redis主从同步中的坑1、所谓的脑裂,就是指在主从集群中,同时有两个主节点 , 它们都能接收写请求 。而脑裂最直接的影响,就是客户端不知道应该往哪个主节点写入数据,结果就是不同的客户端会往不同的主节点上写入数据 。
2、因为 master - slave的复制是异步 的(客户端发送给redis , 主节点数据同步到内存中后就返回成功了) 所以可能有部分数据还没复制到slave,master就宕机了,此时master内存中的数据也没了,这些部分数据就丢失了 。
3、redis的集群脑裂是指因为网络问题 , 导致redis master节点跟redis slave节点和sentinel集群处于不同的网络分区,此时因为sentinel集群无法感知到master的存在,所以将slave节点提升为master节点 。
4、redis集群没有过半机制会有脑裂问题 , 网络分区导致脑裂后多个主节点对外提供写服务,一旦网络分区恢复,会将其中一个主节点变为从节点 , 这时会有大量数据丢失 。
5、主从复制,是指将一台Redis服务器的数据 , 复制到其他的Redis服务器 。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点 。
6、部分的重同步过程:主服务器通过向从服务器传播命令来更新从服务器的状态,保持主从服务器一致,而从服务器通过向主服务器发送命令来进行心跳检测,以及命令丢失检测 。
推荐阅读
- redis存储数据过多会占用内存吗 redis存多少内容
- redis客户端使用教程 redis客户端怎么进入大厂
- 如何设置网络代理服务器? 网络代理服务器怎么做的
- 2019年最优秀的服务器出了什么问题? 2019最右服务器怎么了
- 如何更换手机网页服务器? 怎么换手机网页服务器