• 基于 Redis 分布式锁的分析与实践!
    在这里,我先提出几个在实现redis分布式锁中需要考虑的关键问题1、死锁问题;1.1、为了防止死锁,redis至少需要设置一个超时时间;1.2、由1.1引申出来,当锁自动释放了,但是程序并没有执行完毕,这时候其他线程又获取到锁执行同样的程序,可能会造成并发问题,这个问题我们需要考虑一下是否归属于分布式锁带来问题的范畴。关于Martin Kleppmann的Redlock的分析原文地址:https://redis.io/topics/distlock中文地址:http://redis.cn/topics/distlock.html文章分析得出,这种算法只需具备3个特性就可以实现一个最低保障的分布式锁。
  • 我们公司使用了 6 年的分布式锁,很是牛逼啊!
    在单体应用时代,我们使用jvm提供的锁就可以很好的工作,但是到了分布式应用时代,jvm提供的锁就行不通了,那么势必要借助一些跨jvm的临界资源来支持锁的相关语义,比如redis,zookeeper等。步入正题我今天就来分享下我司基于redis来实现的分布式锁,2013年投入使用,也算是久经沙场。
  • Redis 的各项功能解决了哪些问题?
    3 服务端的Redis在API服务器的内存都被缓存塞满的时候,我们发现不得不另想解决方案了。至于如何配置部署redis这里不解释了,redis官方有详细的介绍。随后我们就用上了一台单独的服务器作为Redis的服务器,API服务器的内存压力得以解决。Sentinel可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能;Replication则是负责让一个Redis服务器可以配备多个备份的服务器。Redis也是利用这两个功能来保证Redis的高可用的。此外,Sentinel功能则是对Redis的发布和订阅功能的一个利用。也就是twemproxy和codis独立处理的处理分布式的这部分逻辑和cluster集成到redis服务的这部分逻辑到底在解决什么问题?
  • 六大法宝解决 Redis 缓存雪崩 | 本月无套路送书来啦
    本文节选自 《Spring5 企业级开发实战》Redis 雪崩缓存层承载着大量的请求,有效保护了存储层。解决缓存雪崩,可以从以下几个方面入手。分布式环境下使用 Redis 分布式锁实现缓存重建,优点是设计思路简单,对数据一致性有保障;缺点是代码复杂度增加,有可能会造成用户等待。如在 Redis 中将 key 的过期时间设置为 60 min,在对应的 value 中设置逻辑过期时间为 30 min。这种异步重建缓存的方式可以有效避免大量的 key 同时失效。第 4 章和第 5 章概述 Spring 5 和 Java 8 的新特性。
  • 如何通过springboot + redis + 注解 + 拦截器,实现接口幂等性校验?
    扫描下方二维码试读一、概念幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次,比如:订单接口, 不能多次创建订单支付接口, 重复支付同一笔订单只能扣一次钱支付宝回调接口, 可能会多次回调, 必须处理重复回调普通表单提交接口, 因为网络超时等原因多次点击提交, 只能成功一次等等二、常见解决方案唯一索引 -- 防止新增脏数据token机制 -- 防止页面重复提交悲观锁 -- 获取数据的时候加锁(锁表或锁行)乐观锁 -- 基于版本号version实现, 在更新数据那一刻校验数据分布式
  • 干货满满 | 来自灵魂的拷问-这21道Redis面试题
    幸运的是,随着 Redis 这些年的改进,很容易找到怎么恰当的使用Redis来缓存会话的文档。甚至广为人知的商业平台Magento也提供Redis的插件。全页缓存 除基本的会话token之外,Redis还提供很简便的FPC平台。回到一致性问题,即使重启了Redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降,这是一个极大改进,类似PHP本地FPC。再次以Magento为例,Magento提供一个插件来使用Redis作为全页缓存后端。队列 Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息队列平台来使用。发布/订阅 最后是Redis的发布/订阅功能。
  • 七问Redis,才知道我与技术大牛的差距在哪里
    “Hello,Redis!我们相处已经很多年了,从模糊的认识到现在我们已经深入结合,你的好我一直都知道也一直都记住,能否再让我多问你的几个问题,让我更加深入的去了解你。Redis的通讯协议是什么Redis 的通讯协议是文本协议,是的,Redis 服务器与客户端通过 RESP(Redis Serialization Protocol)协议通信。没错,文本协议确实是会浪费流量,不过它的优点在于直观,非常的简单,解析性能极其的好,我们不需要一个特殊的 Redis 客户端仅靠 Telnet 或者是文本流就可以跟 R
  • 架构秘笈:移花接木。使用mysql模拟redis
    有些互联网公司,直接使用redis作为后端数据库。当业务量暴增,就面临一个redis容量和价格的权衡问题。改业务代码是来不及了,只好用一些持久化存储 ,来模拟redis的一些数据结构。redis支持近十种数据类型,最常用的有5种。string、hash、zset、set、list等。其实,我们所需要开发的,就是一个redis代理proxy。解析出来的命令,将会被模拟,然后根据配置的路由,定位到相应的mysql中。Redis是文本协议redis是文本协议,协议名称叫做RESP。拿netty来说,就有codec-redis 模块供我们使用。设计专用的数据库表rstore_hash,其中,rkey和hkey是联合主键。redis正是通过分数来为集合中的成员进行从小到大的排序。
  • Redis常见集群方案
    基于代理的方案一般也是基于分片或者redis cluster方案,不过对于client端来说是无感知的。关于pipeline更多资料可参考:如何用好redis pipeline,关于一致性哈希可参考:Redis常见问题指北。Twemproxy缺点是还不支持Redis的事务操作等。redis cluster方案Redis cluster是Redis提供的分布式解决方案,集群通过分片进行数据共享,并提供复制和故障转移功能。Redis集群通过分片来保存数据库中的键值对,集群的整个数据库被分为16384个槽,数据库中每个键都属于16384个槽中的一个,每个节点处理0个或者最多16384个槽。
  • 面试再也不怕!实现分布式锁都有哪些方式?
    使用 zk 来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?面试官心理分析其实一般问问题,都是这么问的,先问问你 zk,然后其实是要过度到 zk 关联的一些问题里去,比如分布式锁。因为在分布式系统开发中,分布式锁的使用场景还是很常见的。面试题剖析redis 分布式锁官方叫做 RedLock 算法,是 redis 官方支持的分布式锁算法。这个分布式锁有 3 个重要的考量点:互斥不能死锁容错redis 最普通的分布式锁第一个最普通的实现方式,就是在 redis 里创建一个 key,这样就算加锁。RedLock 算法这个场景是假设有一个 redis cluster,有 5 个 redis master 实例。
  • Redis 经典 必问21问,BAT面试都会问,你会回答吗?
    Redis 是一个基于内存的高性能key-value数据库。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis有部份存在硬盘上,这样能保证数据的持久性。Redis有复杂的数据类型。Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。如果你快速的在Google中搜索“Redis queues”,你马上就能找
  • 深入理解分布式锁
    阅读文本大概需要10分钟。为什么需要分布式锁如上图,在分布式系统中,订单模块为了迎战高并发,订单服务被横向拆分,拆分成了不同的进程,就像上图,两个人同时访问订单服务,然后订单系统1和订单系统2共用一个Mysql当成数据库,经过他们查询发现仅有一件商品,所以他们自个认为都可以下单如果不加锁限制,可能会出现库存减为负数的情况怎么办呢?
  • 阿里架构师8问Redis,你能答上几个?
    关于Redis的这8问,你能答上来几个?你知道Redis是单线程工作模型吗?纯内存操作单线程操作,避免了频繁的上下文切换采用了非阻塞I/O多路复用机制4、Redis的数据类型及使用场景(这5种类型你用到过几个?为了让大家理解透彻Redis,我们特别邀请前阿里资深架构师James老师,为大家带来 “Redis销魂操作实战”系列课程,原价199元,公众号粉丝限时专享优惠价0.1元!
  • Redis 最常见面试问题
    Redis 是一个基于内存的高性能key-value数据库。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。Redis有部份存在硬盘上,这样能保证数据的持久性。Redis为单进程单线程模式,采用队列模式将并发访问变为串行访问。
  • Redisson是如何实现分布式锁的?
    redis服务器不在本地的同学请注意权限问题。如果字段field不存在,在进行当前操作前,其将被创建,且对应的值被置为0,返回值是增量之后的值PEXPIRE key milliseconds:设置存活时间,单位是毫秒。expire操作单位是秒。源码中使用到的lua脚本语义Redisson源码中,执行redis命令的是lua脚本,其中主要用到如下几个概念。需要注意的是,在redis执行lua脚本时,相当于一个redis级别的锁,不能执行其他操作,类似于原子操作,也是redisson实现的一个关键点。另外,如果lua脚本执行过程中出现了异常或者redis服务器直接宕掉了,执行redis的根据日志回复的命令,会将脚本中已经执行的命令在日志中删除。
  • Redis 不谈缓存和队列
    由于大家都熟知Redis可以用于缓存/队列的使用,并且网上有很多讲解内容,故在此不介绍Redis的缓存/队列使用场景,本文更偏重于Redis的其他使用场景。其实不然,我们把焦点放到set buying A的这点。、但是还有一点就是如果当用户A在redis中设置值的时候,突然掉线了,设置失效指定没有发送,那么其他用户依然再也不能买这个商品了。由于redis的读写高性能的特点,我们将使用redis去处理这样的秒杀场景。
  • Redis从入门到精通,至少要看看这篇!
    “ 常用的 SQL 数据库的数据都是存在磁盘中的,虽然在数据库底层也做了对应的缓存来减少数据库的 IO 压力。图片来自Pexels由于数据库的缓存一般是针对查询的内容,而且粒度也比较小,一般只有表中的数据没有发生变动的时候,数据库的缓存才会产生作用。但这并不能减少业务逻辑对数据库的增删改操作的 IO 压力,因此缓存技术应运而生,该技术实现了对热点数据的高速缓存,可以大大缓解后端数据库的压力。主流应用架构客户端在对数据库发起请求时,先到缓存层查看是否有所需的数据,如果缓存层存有客户端所需的数据,则直接从缓存层
  • Redis
    redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。使用 redis 或 memcached 之类的称为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。缺点是需要保持 redis 或 memcached服务的高可用,整个程序架构上较为复杂。Redis list 的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销。Redis可以非常方便的实现如共同关注、共同粉丝、共同喜好等功能。redis 设置过期时间Redis中有个设置时间过期的功能,即对存储在 redis 数据库中的值可以设置一个过期时间。
  • 面试官:每秒上千订单的场景下,如何对分布式锁进行高并发优化?
    扫描下方海报试读 背景引入今天给大家聊一个有意思的话题:每秒上千订单场景下,如何对分布式锁的并发能力进行优化?前段时间有个朋友在外面面试,然后有一天找我聊说:有一个国内不错的电商公司,面试官给他出了一个场景题:假如下单时,用分布式锁来防止库存超卖,但是是每秒上千订单的高并发场景,如何对分布式锁进行高并发优化来应对这个场景?刚好我之前在自己项目的其他场景下,确实是做过高并发场景下的分布式锁优化方案。因此正好是借着这个朋友的面试题,把分布式锁的高并发优化思路,给大家来聊一聊。
活跃用户
《科技日报》是富有鲜明科技特色的综合性日报,是面向国内外公开发行的中央主流新闻媒体,是党和国家在科技领域的重要舆论前沿,是广大读者依靠科技创造财富、提升文明、刷新生活的服务平台,是中国科技界面向社会、连接世界的明亮窗口。
TechWeb专注于互联网消费领域,每日专业提供互联网产品、智能设备及互联网服务等方面的最新资讯。
数字生活家,手机新娱乐
《中国银行保险报》是中国银行保险监督管理委员会主管唯一工作日报。
数字公民的糖
专业的中文 IT 技术社区,与千万技术人共成长。
腾讯新闻旗下腾讯科技官方账号,在这里读懂科技!
凤凰科技频道官方账号,带你直击真相。
从思考,到创造
让创业者不再孤独@i黑马
雷锋网,读懂智能&未来。
用极客视角,追踪你最不可错过的科技圈。有快闻、也有洞见;有脑洞、也有思考。
最好的中文人物报道
36氪是中国领先的新商业媒体,提供新锐深度的商业报道。我们强调趋势与价值,我们的slogan是:让一部分人先看到未来。
计算机网络学习从入门到精通
SegmentFault 思否 ( sifou.com ) 是中国领先的开发者社区。我们希望为中文开发者提供一个纯粹、高质的技术交流平台,帮助更多的开发者获得成长与成功。
每天分享 Python 干货,后台回复「1024」,送你特别推送。
中国企业IT人交流的技术社区
分享程序员生活点滴以及程序员各种吐槽。这里没有具体技术讲解,只有幽默、职场、规划、学习路线、学习方法总结。输入相关关键词可以获得相应的文章,输入m获取全部文章编号。
有影响力的程序员自媒体,关注程序员相关话题:程序人生、IT技术、IT职场、学习资源等。