redis
文章平均质量分 72
be.be
少年,充满激情,勇敢的大步向前,享受生活的得失,直面璀璨的岁月
展开
-
redis加锁的几种实现方法
redis加锁1. redis加锁分类redis能用的的加锁命令分表是INCR、SETNX、SET2. 第一种锁命令INCR这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作进行加一。然后其它用户在执行 INCR 操作进行加一时,如果返回的数大于 1 ,说明这个锁正在被使用当中。 客户端A请求服务器获取key的值为1表示获取了锁 客户端B也去请求服务器获取key的值为2表示获取锁失败 客户端A执行...转载 2021-05-06 04:51:12 · 2350 阅读 · 0 评论 -
高并发场景下的订单和库存处理方案
高并发场景下的订单和库存处理方案前言之前一直有小伙伴私信我问我高并发场景下的订单和库存处理方案,我最近也是因为加班的原因比较忙,就一直没来得及回复。今天好不容易闲了下来想了想不如写篇文章把这些都列出来的,让大家都能学习到,说一千道一万都不如满满的干货来的实在,干货都下面了!介绍前提:分布式系统,高并发场景商品A只有100库存,现在有1000或者更多的用户购买。如何保证库存在高并发的场景下是安全的。预期结果:1.不超卖 2.不少卖 3.下单响应快 4.用户体验好下单思路:下单时转载 2021-05-06 03:01:42 · 4077 阅读 · 2 评论 -
Redis默认最大内存是如何处理的?
Redis默认最大内存处理原理前言最近研究redis配置时,看到很reids.conf配置文件中maxmemory默认是注释的,就好(闲)奇的查看了一下默认内存的设置。源码 查看github源码:https://github.com/redis/redis 搜索“maxmemory”关键字查到server.c文件(一看就是启动文件)。 /* 检测到当前系统为32位,因为32最大内存为4G,在没有设置maxmemory的时候, * ...转载 2021-05-06 01:41:55 · 863 阅读 · 0 评论 -
Redis需要设置最大占用内存吗?如果Redis内存使用超出了设置的最大值会怎样?
设置Redis最大占用内存Redis设置最大占用内存,打开redis配置文件,找到如下段落,设置maxmemory参数,maxmemory是bytes字节类型,注意转换。修改如下所示:# In short... if you have slaves attached it is suggested that you set a lower# limit for maxmemory so that there is some free RAM on the system for slave# o转载 2021-05-06 01:40:17 · 3722 阅读 · 0 评论 -
如何处理redis集群中big key和hot key
如何处理redis集群中big key和hot keyredis 集群部署方式大部分采用类 Twemproxy 的方式进行部署。即通过 Twemproxy 对 redis key 进行分片计算,将 redis key 进行分片计算,分配到多个 redis 实例中的其中一个。tewmproxy 架构图如下:由于 Twemproxy 背后的多个 redis 实例在内存配置和 cpu 配置上都是一致的,所以一旦出现访问量倾斜或者数据量倾斜,则可能会导致某个 redis 实例达到性能瓶颈,从而使整个集.转载 2020-05-08 18:31:07 · 706 阅读 · 1 评论 -
redis数据结构
redis的5种数据类型和数据结构 redis是一个key-value存储系统。它支持存储的value类型相对更多,包括string、list、set、zset和hash。为了保证效率,数据都是缓存在内存中。 redis的出现,在部分场合可以对关系数据库起到很好的补充作用。 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。 Redis有5个基本数据结构,...转载 2020-05-08 18:04:00 · 234 阅读 · 0 评论 -
php lua 实现单位时间内ip访问限制
<?php$redis = new Redis();$redis->connect('127.0.0.1', '6379', 2.6); //ip 端口 超时时间$script = <<<EOF -- param key expire limit local iplimit = redis.call('INCR', KEYS[1]) ...原创 2020-05-02 11:48:38 · 288 阅读 · 0 评论 -
Redisson 实现redis分布式锁的原理
Redisson实现Redis分布式锁的原理一、写在前面现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper等知识。所以咱们这篇文章就来聊聊分布式锁这块知识,具体的来看看Redis分布式锁的实现原理。说实话,如果在公司里落地生产环境用分布式锁的时候,一定是...转载 2020-04-30 00:04:14 · 206 阅读 · 0 评论 -
Redis集群
Redis集群详解Redis集群详解Redis有三种集群模式,分别是:* 主从模式* Sentinel模式* Cluster模式12345三种集群模式各有特点,关于Redis介绍可以参考这里:NoSQL(二)——RedisRedis官网:https://redis.io/ ,最新版本5.0.4主从模式主从模式介绍主从模式是三种模式中最简单的,在主从复制中...转载 2020-04-29 23:42:42 · 308 阅读 · 0 评论 -
Redis RedLock分析反驳
如何做分布式锁定Martin Kleppmann于2016年2月8日发布。作为本书研究的一部分,我在Redis网站上遇到了一种称为Redlock的算法。该算法声称在Redis的顶部实现容错的分布式锁(或更确切地说,租约[1]),并且该页面要求来自分布式系统人员的反馈。该算法本能地触发了我的脑海,因此我花了一些时间思考并编写这些注释。由于Redlock已经有10多个独立的实现,而...翻译 2020-04-29 18:22:56 · 1131 阅读 · 0 评论 -
Redis使用lua脚本
Redis使用lua脚本版本:自2.6.0起可用。时间复杂度:取决于执行的脚本。使用Lua脚本的好处:减少网络开销。可以将多个请求通过脚本的形式一次发送,减少网络时延。 原子操作。redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。因此在编写脚本的过程中无需担心会出现竞态条件,无需使用事务。 复用。客户端发送的脚本会永久存在redis中,这样,其他客户端可以复用这一脚...转载 2020-04-29 17:33:35 · 970 阅读 · 0 评论 -
PHP Redis分布式锁
PHP 使用 Redis 实现分布式锁php redis 分布式锁 更新于 2019-06-05 约 10 分钟Last-Modified: 2019年6月5日15:59:34参考链接PHP使用Redis+Lua脚本操作的注意事项 《Redis官方文档》用Redis构建分布式锁锁实现的注意点互斥: 任意时刻, 只能有一个客户端获得锁 不会死锁: 客户端持有锁...转载 2020-04-29 15:14:17 · 332 阅读 · 0 评论 -
Redis分布式锁
Redis分布式锁一、分布式锁实现方式1. 数据库乐观锁。(增加字段版本标识version控制实现)2. Redis的分布式锁。(本文重点介绍)3. ZooKeeper的分布式锁。(ZooKeeper机制规定:同一个目录下只能有一个唯一的文件名,借助ZooKeeper的临时节点实现)二、Redis的分布式锁实现1. 使用jedis的2.7.x及以上版本。2.获取...原创 2020-04-05 23:00:14 · 98 阅读 · 0 评论 -
Redis 限速器及问题
redis限速器的几种方法Redis Rate Limiterredis实现限速器的几种方式。GET + INCR + EXPIRE先获取key的当前值,如果没有超出限制再执行INCR增1,如果key不存在,使用redis的事务初始化key和过期时间。伪代码:count = redis.GET(key)if redis return nil {...原创 2020-04-04 12:34:19 · 377 阅读 · 0 评论 -
Redis常见问题
1.如何解决缓存雪崩?2.如何解决缓存穿透?3.如何保证缓存与数据库双写时一致的问题?一、缓存雪崩1.1 什么是缓存雪崩?回顾一下我们为什么要用缓存(Redis):现在有个问题,如果我们的缓存挂掉了,这意味着我们的全部请求都跑去数据库了。我们都知道Redis不可能把所有的数据都缓存起来(内存昂贵且有限),所以Redis需要对数据设置过期时间,并...转载 2020-04-04 11:09:58 · 154 阅读 · 0 评论 -
如何使用redis设计关系数据库
如何使用redis设计关系数据库如何使用redis设计关系数据库怎么用redis的数据类型设计一个关系数据库呢。redis只有key-value这种存储结构,如果想利用它做成想其他数据库一样具备 增删改查等功能只能再设计了,这里分享一下我的设计方法,比较简单,我不知道算不算好,只是网上找了很久没找到一种通用的方法,如果有什么好的方法,还想请教一下各位,十分感谢。设计用户信息表结构h...原创 2019-12-09 22:35:01 · 214 阅读 · 0 评论 -
redis key设计1
redis的key对应mysql数据表设计根据用户名来查询用户信息在关系型数据中,除主键外,还有可能其他列也步骤查询,如上表中, username 也是极频繁查询的,往往这种列也是加了索引的.转换到k-v数据中,则也要相应的生成一条按照该列为主的key-valueSet it_user:username:asion:id 1这样,我们可以根据username:sion:id...原创 2019-12-09 22:30:29 · 150 阅读 · 0 评论 -
redis 面试题
面试还搞不懂redis,快看看这40道面试题Redis 面试题1、什么是 Redis?.2、Redis 的数据类型?3、使用 Redis 有哪些好处?4、Redis 相比 Memcached 有哪些优势?5、Memcache 与 Redis 的区别都有哪些?6、Redis 是单进程单线程的?7、一个字符串类型的值能存储最大容量是多少?8、Redis 的持久化机制是什么?各自的...原创 2019-12-09 22:18:24 · 1254 阅读 · 0 评论 -
php redis pub/sub(Publish/Subscribe,发布/订阅的信息系统)之基本使用
php redis pub/sub(Publish/Subscribe,发布/订阅的信息系统)之基本使用一.场景介绍最近的一个项目需要用到发布/订阅的信息系统,以做到最新实时消息的通知。经查找后发现了redis pub/sub(发布/订阅的信息系统)可以满足我的开发需求,而且学习成本和使用成本也比较低。二.什么是redis pub/sub资料查看大家在看我的blog的同时可以打...原创 2019-11-29 15:27:54 · 224 阅读 · 0 评论 -
解决phpredis 'RedisException' with message 'read error on connection'
解决phpredis 'RedisException' with message 'read error on connection'最近一个后台常驻job通过redis的brpop阻塞读取消息时,设置的超时时间较长list($key,$row)=$redis->brPop($queue_name,3600); //超时时间为1小时但是在实际的使用中发现很短时间后就会退出,通过...原创 2019-11-29 12:08:30 · 741 阅读 · 0 评论