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

  • 相关阅读:
    3d服务器配置
    Can't connect to postgres on centos with psycopg
    flask快速入门
    nohup: cannot run command “/bin/java”:
    linux 上redis的启动口令
    CentOS网络设置 couldn't resolve host 'mirrorlist.centos.org问题解决
    CentOS下使用Mysql
    解决nodejs跨域的一个中间件
    JS实现禁用滑动条但滑动条不消失的效果
    JQ实现下拉加载更多
  • 原文地址:https://www.cnblogs.com/kundij/p/14200428.html
Copyright © 2011-2022 走看看