
Redis
3333333_
大部分都是记录云笔记,有时候复制过来就挺乱的,而且可能复制1年或者几个月前记录的。随缘吧。
展开
-
熔断和熔断恢复
3、当某个服务失败之后一段时间后切换成半熔断状态。2、当一个服务在一段时间之内失败指定次数,熔断。4、成功过超过一定次数,恢复正常。1、当一个服务失败时候即使降级。redis熔断记录.png。服务熔断实现.jpg。原创 2023-08-05 21:18:45 · 164 阅读 · 0 评论 -
亿级pv多级缓存架构原理
第一层是热点数据提高缓存命中率。原创 2023-08-05 21:17:55 · 59 阅读 · 0 评论 -
Redis部署详解
String,hash,list,set,zset geo(3.2+)地图空间 storm(5.0) bitmap (O2O(位置功能)-地图)redis(nosql) 存储大 数据类型丰富 单机并发(2-3 万台) 每秒 10 万次读写操作。(大规模的 K-V) 持久化(磁盘)、自带集群、单线程(多路 I/O 复用)单线程就是不能充分发挥CPU的性能,但是可以通过构建集群来解决这个问题。memcache 单个 key 存储小。mongodb 索引 数据量 索引量。多个线程之间有锁机制 也有IO损耗。原创 2023-08-05 21:16:32 · 48 阅读 · 0 评论 -
接口API限流
一分钟之内只允许访问10次,如果说是0秒访问一次59秒的时候访问9次,1分00秒访问10次。if($redis->llen($key)>30){//一分钟最多访问30次。IP访问+用户鞋带标识(限制次数的标识,记录到Redis当中)1、判断下(IP)这个标识存在数据库。2、设置标识,让标识+1。,2秒之内访问近20次。原创 2023-08-05 21:15:48 · 82 阅读 · 0 评论 -
Redis令牌桶
多进程 常驻进程里面比较合适。原创 2023-08-05 21:15:15 · 158 阅读 · 0 评论 -
主从复制的实现原理07
复制原理。原创 2023-08-05 21:14:14 · 48 阅读 · 0 评论 -
Redis集群主从复制数据延迟
编写脚本定时定时查询Redis主机跟从机的偏移量,如果偏移量过大则重新生成配置文件。info replication 可以查看 偏移量 offset。写个脚本监控主从偏移量 读取偏移量。把 偏移量大的从机剔除。如果超过某个阈值就报警。原创 2023-08-05 21:13:32 · 148 阅读 · 0 评论 -
Redis悲观锁 乐观锁的原理
原创 2023-08-03 20:23:20 · 73 阅读 · 0 评论 -
redis 乐观锁实现秒杀过程
原创 2023-08-03 20:22:47 · 78 阅读 · 0 评论 -
大型电商双十一Redis秒杀实战10
原创 2023-08-03 20:22:08 · 72 阅读 · 0 评论 -
Redis乐观锁实现代码封装
key 没有判断是不是自己的 会出现删除别人锁的情况。原创 2023-08-03 07:49:29 · 72 阅读 · 0 评论 -
Windows下Redis的安装及PHP扩展使用
6、将php_redis.dll放入php的ext文件夹中,然后再php.ini添加代码extension=php_redis.dll。打开一个cmd窗口,先切换到redis所放目录(E:\redis),运行 redis-server.exe redis.conf。注意redis.conf为配置文件,主要配置了redis所使用的端口等信息(如果不写则默认redis.conf)有的下载的redis压缩包里没有redis.conf,我把默认的redis.conf的文件内容放在文章最后。7、重启web服务器。原创 2023-02-01 22:15:19 · 1014 阅读 · 0 评论 -
PHP 操作redis 详细讲解
移除单个列表、集合、有序集合或哈希表类型的 key,时间复杂度为O(M), M为以上数据结构内的元素数量。phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系。timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)注: 在redis.conf中也有时间,默认为300。移除单个字符串类型的 key,时间复杂度为O(1)。getOption 查看redis设置的模式。O(N), N为要移除的 key的数量。移除给定的一个或多个key。原创 2023-02-01 22:13:47 · 603 阅读 · 0 评论 -
Redis 的安装配置介绍
在我们成功安装Redis后,我们直接执行redis-server即可运行Redis,此时它是按照默认配置来运行的(默认配置甚至不是后台运 行)。我们希望Redis按我们的要求运行,则我们需要修改配置文件,Redis的配置文件就是我们上面第二个cp操作的redis.conf文件,目前 它被我们拷贝到了/usr/local/redis/etc/目录下。redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。原创 2023-02-01 22:10:13 · 133 阅读 · 0 评论 -
Redis 混合模式持久化
执行bgrewriteaof的时候,先生成快照保存已有数据,后续追加的数据用aof保存,最后整合两文件生成新的aof文件。有rdb都不会加载rdb,以aof为主,redis认为aof更可靠。所以rdb迁移 要先关闭目标服务器的aof。原创 2023-02-01 22:08:54 · 94 阅读 · 0 评论 -
Redis令牌桶限流
【代码】Redis令牌桶限流。原创 2023-02-01 22:07:52 · 87 阅读 · 0 评论 -
单线程的Redis为什么快
纯内存操作单线程操作,避免了频繁的上下文切换合理高效的数据结构采用了非阻塞I/O多路复用机制原创 2023-02-01 22:06:41 · 57 阅读 · 0 评论 -
Redis有序集合zset底层怎么实现的
在跳表中,要查找区间的元素,我们只要定位到两个区间端点在最低层级的位置,然后按顺序遍历元素就可以了,非常高效。此外,跳表实现起来很容易且易读,红黑树实现起来相对困难,所以Redis选择使用跳表来实现有序集合。(4)如果一个元素出现在level(x),那么它肯定出现在x以下的level中;(6)跳表查询、插入、删除的时间复杂度为O(log n),与平衡二叉树接近;跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。原创 2023-02-01 22:06:01 · 255 阅读 · 0 评论 -
Redis高效删除大key
Redis高效删除大key。原创 2023-02-01 22:03:41 · 3068 阅读 · 1 评论 -
memcached 经典问题或现象
8.1 缓存雪崩现象及真实案例缓存雪崩一般是由某个缓存节点失效,导致其他节点的缓存命中率下降, 缓存中缺失的数据去数据库查询.短时间内,造成数据库服务器崩溃.重启 DB,短期又被压跨,但缓存数据也多一些.DB 反复多次启动多次,缓存重建完毕,DB 才稳定运行.或者,是由于缓存周期性的失效,比如每 6 小时失效一次,那么每 6 小时,将有一个请求”峰值”,严重者甚至会令 DB 崩溃.把缓存设置为随机3到9小时的生命周期,这样不同时失效,把工作分担到各个时间点上去.或者深夜跑脚本原创 2020-11-17 20:36:57 · 266 阅读 · 0 评论 -
缓存雪崩 穿透 解决方案
缓存雪崩的原因及解决方案 1、缓存大面积失效 解决方案:避免缓存设置相近的有效期;为有效期增加随机值;统一规划有效期,失效时间均匀分布。 2、对热点数据持续高并发 解决方案:使用互斥锁:jvm锁机制;分布式锁机制。 3、有效期本身的缺陷 解决方案:缓存永不过期,异步更新。 优点:不阻塞线程,用户体验好,不会出现雪崩效应。 缺点:不保证一致性,代码复杂度增大(每个va...原创 2020-11-17 20:36:22 · 135 阅读 · 0 评论 -
aof日志持久化相关参数
记录原创 2020-11-12 18:22:14 · 106 阅读 · 0 评论 -
reids save和bgsave对比以及生成大量测试数据
bob@cmbp ~ » redis-cli -h 127.0.0.1 -p 6379127.0.0.1:6379> dbsize(integer) 11418127.0.0.1:6379> select 10OK127.0.0.1:6379[10]> dbsize(integer) 0127.0.0.1:6379[10]> debug populate 10000OK127.0.0.1:6379[10]> dbsize(integer) 10000可以原创 2020-11-12 18:19:39 · 176 阅读 · 0 评论 -
reids 运行时手动更改master-slave
运行时更改master-slave修改一台slave(假设设为A)为new master1)命令该服务不做其他redis服务的slave命令: slaveof no one2)修改其slave-read-only为yes其他的slave再指向new master A1)命令该服务为new master A的slave命令格式 slaveof IP port...原创 2020-11-12 18:18:38 · 477 阅读 · 0 评论 -
redis不小心运行了flushall怎么办
如果不小心运行了flushall, 立即 shutdown nosave ,关闭服务器然后 手工编辑aof文件, 去掉文件中的 “flushall ”相关行, 然后开启服务器,就可以导入回原来数据.如果,flushall之后,系统恰好bgrewriteaof了,那么aof就清空了,数据丢失....原创 2020-11-12 18:18:08 · 625 阅读 · 0 评论 -
Redis rdb服务器间迁移
前提把 A 服务器(本机6379)的rdb 文件 迁移到 B 服务器(本机6380)关闭B服务器的redis的aof日志功能(如果不关闭aof,默认用aof文件来恢复数据) 将dbfilename 改成dump-6382.rdbvim reids.confappendonly nodbfilename dump-6382.rdbA 服务器 利用 save 命令 生成最新rdb➜redis-cli -h 127.0.0.1 -p 6379127.0.0.1:6379> keys原创 2020-11-12 18:18:03 · 281 阅读 · 0 评论 -
手动安装redis集群配置-单个机器不同端口(测试练手)
前提已经安装了单击版redis6379作为master6380 6381 作为slaveMaster配置:1:关闭rdb快照(备份工作交给slave)2:可以开启aofslave配置:声明slave-of配置密码[如果master有密码][某1个]slave打开 rdb快照功能配置是否只读[slave-read-only]redis主从复制的缺陷每次salave断开后,(无论是主动断开,还是网络故障)再连接master都要master全部dump出来rdb,再aof,即同步原创 2020-11-12 18:16:41 · 164 阅读 · 0 评论 -
redis5.x配置详解
#是否在后台执行,yes:后台运行;no:不是后台运行daemonize yes #是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。protected-mode yes #redis的进程文件pidfile /var/run/redis/redis-server.pid #redis监听的端口号。port 6379 #此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统.原创 2020-11-12 18:16:09 · 211 阅读 · 0 评论 -
rdb快照相关参数
save 900 1 #刷新快照到硬盘中,必须满足两者要求才会触发,即900秒之后至少1个关键字发生变化。save 300 10 #必须是300秒之后至少10个关键字发生变化。save 60 10000 #必须是60秒之后至少10000个关键字发生变化。stop-writes-on-bgsave-error yes #后台存储错误停止写。rdbcompression yes #使用LZF压缩rdb文件。rdbchecksum yes #存储和加载rdb文件时校验。dbfilename原创 2020-11-12 18:15:38 · 167 阅读 · 0 评论 -
搞懂Redis 事务
提到redis的事务,相信很多初学的朋友会对它的理解和使用有些模糊不清,料想它和我们常见的关系型数据库(mysql 、mssql等)中的事务相同,也支持回滚,但这样理解就进入了一个误区,首先:关系型数据中的事务都是原子性的,而redis 的事务是非原子性的。再多说一句,什么是程序原子性?简单的理解就是:整个程序中的所有操作,要么全部完成,要不全部不完成,不会停留在中间某个环节。那么非原子性就是不满足原子性的条件就是非原子性了。我们用例子来解释一下:原子性:数据库中的某个事务A中要更新t1表、t2表的某条原创 2020-11-12 18:15:10 · 102 阅读 · 0 评论 -
Redis字符串类型的操作
set key value [ex 秒数] / [px 毫秒数] [nx] /[xx]如: set a 1 ex 10 , 10秒有效Set a 1 px 9000 , 9秒有效注: 如果ex,px同时写,以后面的有效期为准如 set a 1 ex 100 px 9000, 实际有效期是9000毫秒nx: 表示key不存在时,执行操作xx: 表示key存在时,执行操作mset multi set , 一次性设置多个键值例: mset key1 v1 key2 v2 …get key原创 2020-11-07 12:18:15 · 265 阅读 · 0 评论 -
Redis持久化配置
Redis的持久化有2种方式 1快照 2是日志Rdb快照的配置选项save 900 1 // 900内,有1条写入,则产生快照save 300 1000 // 如果300秒内有1000次写入,则产生快照save 60 10000 // 如果60秒内有10000次写入,则产生快照(这3个选项都屏蔽,则rdb禁用)stop-writes-on-bgsave-error yes // 后台备份进程出错时,主进程停不停止写入?rdbcompression yes // 导原创 2020-11-07 12:17:02 · 130 阅读 · 0 评论 -
使用 Redis 统计在线用户人数-多种方法对比
在构建应用的时候, 我们经常需要对用户的一举一动进行记录, 而其中一个比较重要的操作, 就是对在线的用户进行记录。本文将介绍四种使用 Redis 对在线用户进行记录的方案, 这些方案虽然都可以对在线用户的数量进行统计, 但每个方案都有一些自己特有的操作, 并且各个方案的性能特征以及资源消耗也各有不同方案 1 :使用有序集合每当一个用户上线时, 我们就执行 ZADD 命令, 将这个用户以及它的在线时间添加到指定的有序集合中:ZADD “online_users” <user_id> <原创 2020-11-07 12:16:31 · 1668 阅读 · 1 评论 -
REDIS 在电商中的实际应用场景
1. 各种计数,商品维度计数和用户维度计数说起电商,肯定离不开商品,而附带商品有各种计数(喜欢数,评论数,鉴定数,浏览数,etc),Redis的命令都是原子性的,你可以轻松地利用INCR,DECR等命令来计数。商品维度计数(喜欢数,评论数,鉴定数,浏览数,etc)采用Redis 的类型: Hash. 如果你对redis数据类型不太熟悉,可以参考 http://redis.io/topics/data-types-intro为product定义个key product:,为每种数值定义hashke原创 2020-11-07 12:15:54 · 1633 阅读 · 0 评论 -
redis setbit 应用场景
使用场景一:用户周活跃一周用户登录情况,假设用户ID 1000 1001 1002127.0.0.1:6379> setbit Monday 1000 0(integer) 0127.0.0.1:6379> setbit Monday 1001 1(integer) 0127.0.0.1:6379> setbit Monday 1002 1(integer) 0127.0.0.1:6379> setbit Tuesday 1000 0(integer) 0127.原创 2020-11-07 12:15:20 · 1448 阅读 · 0 评论 -
Redis位操作BITOP和BITCOUNT
一 BITOP1 介绍对一个或多个保存二进制位的字符串key进行位元操作,并将结果保存到destkey上。operation可以是AND、OR、NOT、XOR这四种操作中的任意一种。BITOP AND destkey key [key …] ,对一个或多个key求逻辑并,并将结果保存到destkeyBITOP OR destkey key [key …] ,对一个或多个key求逻辑或,并将结果保存到destkeyBITOP XOR destkey key [key …] ,对一个或多个key求原创 2020-11-07 12:14:30 · 912 阅读 · 0 评论 -
redis setbit
格式SETBIT key offset value对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。举例设置一个 key-value ,键的名字叫’test’ 值为字符’a’127.0.0.1:6379> set test aOK127.0.0.1:6379> get test"a"我们知道 ‘a’ 的ASCII码是 97。转换为二进制是:01100001。offset的学名叫做“偏移” 。二进制中的每一位就是offset值啦,比如在这里 offset原创 2020-11-07 12:13:51 · 95 阅读 · 0 评论 -
docker 安装redis集群 MAC版本
选择一个目录创建redis-cluster目录(名字你随便取)mkdir redis-clustercd redis-cluster创建 redis-cluster.tmpl 插入内容如下vim redis-cluster.tmpl# redis端口port ${PORT}# 关闭保护模式protected-mode no# 开启集群cluster-enabled yes# 集群节点配置cluster-config-file nodes-${PORT}.conf# .原创 2020-09-19 11:21:32 · 399 阅读 · 1 评论 -
Redis控制某个用户每秒并发数量
前提:开始我们是在Nginx做了并发数控制,但是后来由于业务需要(并发数越高,付费越高),我们想在自己后台实时控制用户的并发数(Nginx只做了最最大上限控制,我们后台的并发数都会控制在合理范围内),就想到用Redis在代码层控制单个用户数每秒并发量设计:由于Redis命令都是原值操作,则以userId+秒级时间戳为key,调用一次,值加1,判断key的值是否大于我们设置的值,大于就抛错实现:这里...原创 2018-03-08 18:47:59 · 9285 阅读 · 3 评论