zoukankan      html  css  js  c++  java
  • redis笔记

    一、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”出来,你会考虑哪些问题等。虽然在实际工作中不推荐重复“造轮子”,但在面试中要表现出自己具备“造轮子”的能力。

  • 相关阅读:
    基础 ByteBuffer 和 ByteBuf
    Java 堆栈,内存分配理解
    JVM 调优参数设置
    Python 安装 matplotlib 制图
    UOJ#207. 共价大爷游长沙
    ORM学习 一 : JPA JDBC
    常见的Web攻击手段
    《Kubernetes权威指南第2版》学习(二)一个简单的例子
    五 pyJWT使用
    《Kubernetes权威指南第2版》学习(一) Kubernetes是什么
  • 原文地址:https://www.cnblogs.com/kundij/p/14200428.html
Copyright © 2011-2022 走看看