随笔分类 -  redis

redis
摘要:一、异常场景 如下表所示,redis集群6个节点分别部署在3台机器上,每台机器分布一个主节点和一个从节点 机器 redis主节点端口 redis从节点端口 主机1 7001 7004 主机2 7003 7006 主机3 7005 7002 将主机1关闭,redis集群发生主从切换,从节点7006升级 阅读全文
posted @ 2023-01-28 09:49 harara 阅读(2112) 评论(0) 推荐(0)
摘要:keys 的操作会导致数据库暂时被锁住,其他的请求都会被堵塞;业务量大的时候会出问题 当需要扫描key,匹配出自己需要的key时,可以使用 scan 命令 java代码实现如下: /** * 使用scan遍历key * 为什么不使用keys 因为Keys会引发Redis锁,并且增加Redis的CPU 阅读全文
posted @ 2021-10-15 14:52 harara 阅读(8222) 评论(0) 推荐(0)
摘要:time命令 127.0.0.1:6379> time 1) "1614664520" 2) "720321" 第一行表示已经过去的秒数,第二行为当前这一秒已经过去的微秒数 阅读全文
posted @ 2021-03-02 14:04 harara 阅读(1001) 评论(0) 推荐(0)
摘要:1、实现逻辑 记录用户每次的访问时间,因此对于每个用户,用列表类型的键记录他最近100次访问的时间。如果键中的元素超过100个,就判断时间最早的元素距离现在的时间是否小于1分钟,如果是,则表示用户最近1分钟的访问次数超过100次,如果不是就将当前时间加入列表中,同时把最早的元素删除 2、LUA脚本 阅读全文
posted @ 2021-02-26 11:31 harara 阅读(1946) 评论(0) 推荐(0)
摘要:Redis的内存淘汰策略是指在Redis的用于缓存的内存不足时,怎么处理需要新写入且需要申请额外空间的数据。 noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。 allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key。 allkeys-rand 阅读全文
posted @ 2020-12-03 11:38 harara 阅读(138) 评论(0) 推荐(0)
摘要:springboot2.x集成redis。redis节点故障,集群状态ok的情况下,程序使用redisTemplate操作redis一直报错: Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeo 阅读全文
posted @ 2020-09-23 10:26 harara 阅读(8789) 评论(0) 推荐(0)
摘要:错误: 原因: SpringBoot2.X版本开始Redis默认的连接池都是采用的Lettuce。当节点发生改变后,Letture默认是不会刷新节点拓扑的。 方案一:把lettuce换成jedis 只需要在pom.xml里调整一下依赖的引用 <dependency> <groupId>org.spr 阅读全文
posted @ 2020-08-31 17:36 harara 阅读(5639) 评论(0) 推荐(0)
摘要:ttl命令 ttl 'keyName' 返回 -2 表示这个key已过期,已不存在 返回 -1 表示这个key没有设置有效期 返回0以上的值 表示是这个key的剩余有效时间 阅读全文
posted @ 2020-04-17 16:50 harara 阅读(16046) 评论(1) 推荐(3)
摘要:目录 一、安装redis需要的依赖 二、安装redis 三、部署redis集群 一、安装redis需要的依赖 1、安装GCC 1、检查是否安装gcc 命令: gcc -v 如果能输出gcc版本信息,,说明安装了gcc。反之需要安装gcc 2、安装gcc 2.1创建目录/usr/local/gccSr 阅读全文
posted @ 2020-01-20 09:20 harara 阅读(611) 评论(0) 推荐(0)
摘要:1. maven <!-- redisson 分布式锁 --> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.11.2</version> </dependency> 阅读全文
posted @ 2019-11-05 21:07 harara 阅读(1509) 评论(0) 推荐(0)
摘要:客户端C2使用SETNX命令获取锁 假设客户端C1已经崩溃但是仍然持有锁,所以Redis返回false给客户端C2 客户端C2使用GET命令获取锁并检查锁是否已经过期,如果没有过期,则继续等待一段时间并重新重试 如果锁已经过期,客户端C2尝试 GETSET lock.name <current Un 阅读全文
posted @ 2019-11-05 19:53 harara 阅读(9889) 评论(0) 推荐(1)
摘要:Redis Server 监控 redis存活监控:redis本地监控使用ping,如果指定时间内返回PONG表示存活,否则redis不能响应请求,可能阻塞或死亡。 [root@localhost redis]# redis-cli -p 7001 -a 123456 ping PONG 连接个数( 阅读全文
posted @ 2019-10-11 16:22 harara 阅读(678) 评论(0) 推荐(0)
摘要:停止redis集群清除数据后重启无法自动重连问题解决方法 问题重现步骤 1、停止redis集群中的每个节点 用命令停止逐个节点太麻烦了,写了个shell脚本,shutdown.sh (-a 123456 是redis集群的连接密码) redis-cli -p 7001 -a 123456 shutd 阅读全文
posted @ 2019-09-26 12:00 harara 阅读(6544) 评论(0) 推荐(0)
摘要:Redis集群 一、集群简介 1、redis集群是一个提供在多个Redis节点间共享数据的程序集 2、redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移换数据,从而达不到向Redis那样的性能,在高负载的情况下可能会导致不可预料的错误。 3、Redis集群通过分区来提供一定程度 阅读全文
posted @ 2019-09-17 09:52 harara 阅读(373) 评论(0) 推荐(0)
摘要:redis中没有直接根据正则表达式删除key的命令,只有del key1 key2...命令 但是redis中有通过正则表达式获取key的命令:keys "正则表达式" 可以借助于xargs命令实现批量删除key,把查出来的key值当做参数传给del redis-cli keys "mailspec 阅读全文
posted @ 2019-09-17 09:17 harara 阅读(25840) 评论(0) 推荐(2)
摘要:Redission 1、原理 2、源码中加锁lua代码 if (redis.call('exists', KEYS[1]) == 0) then redis.call('hset', KEYS[1], ARGV[2], 1); redis.call('pexpire', KEYS[1], ARGV[ 阅读全文
posted @ 2019-09-16 14:26 harara 阅读(23656) 评论(1) 推荐(2)