随笔分类 - Redis从入门到精通
Docker 搭建Redis集群(哨兵模式)
摘要:一、简介 Redis集群的哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。 哨兵模式作用: 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和
Redis从入门到精通-Redis6.0新功能
摘要:一、ACL 简介 Redis ACL是Access Control List(访问控制列表)的缩写,该功能允许根据可以执行的命令和可以访问的键来限制某些连接。 在Redis 5版本之前,Redis 安全规则只有密码控制 还有通过rename 来调整高危命令比如 flushdb , KEYS* , s
Redis从入门到精通-分布式锁-代码实现
摘要:一、代码基本实现 package com.angoubiubiu.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core
Redis从入门到精通-分布式锁简介
摘要:一、问题描述 随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力。为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式
Redis从入门到精通-应用问题解决-缓存雪崩
摘要:一、问题描述 key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。 缓存雪崩与缓存击穿的区别在于这里针对很多key缓存,前者则是某一个key 正常访问 缓存失效瞬间 二、解决方
Redis从入门到精通-应用问题解决-缓存击穿
摘要:一、问题描述 key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。 解释: 1、redis某个key过期了,大量访问使用这个key 比如热词数据,突然这个key过期了,大量搜索
Redis从入门到精通-应用问题解决-缓存穿透
摘要:一、问题描述 key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会压到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。 解释 1、redis查询不到数据了,造成大面积的未命中 比如出现很
Redis从入门到精通-redis-集群的Jedis开发
摘要:package com.mangoubiubiu; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.JedisCluster; public class JqJedisOperate { public static
Redis从入门到精通-redis-集群操作和故障恢复
摘要:一、故障恢复 如果主节点下线?从节点能否自动升为主节点?注意:15秒超时 停掉主节点6379,连接6380 查看节点状态 shutdown exit 从机 6390 升级为主机 再次重启6379发现 6379升为 6390的从机 总结:当主机挂掉之后,从机会立马变成主机,然后重启之前的主机,会变成现
Redis从入门到精通-redis-集群简介
摘要:一、问题 容量不够,redis如何进行扩容? 并发写操作, redis如何分摊? 另外,主从模式,薪火相传模式,主机宕机,导致ip地址发生变化,应用程序中配置需要修改对应的主机地址、端口等信息。 之前通过代理主机来解决,但是redis3.0中提供了解决方案。就是无中心化集群配置。 二、什么是集群 R
[ERR] Node 192.168.117.134:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
摘要:1、问题描述:redis 集群启动报错 2、解决方案 重启 在redis src 目录下执行 redis-cli --cluster create --cluster-replicas 1 192.168.117.134:6379 192.168.117.134:6380 192.168.117.1
Redis从入门到精通-redis-哨兵模式(sentinel)
摘要:一、是什么 反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库 二、怎么玩(使用步骤) 1、调整为一主二仆模式,6379带着6380、6381 2、自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错 vi sentinel.conf 3、
Redis从入门到精通-Redis-主从复制-薪火相传和反客为主
摘要:一、薪火相传 上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力,去中心化降低风险。 用命令: slaveof <ip><port> 中途变更转向:会清除之
Redis从入门到精通-Redis-主从复制-复制原理一主二仆
摘要:一、一主二仆,宕机情况分析 1、从机挂掉的情况 启动三个redis服务 手动关掉其中一台:主机存值正常,从机取值正常 重启停到的那一台:发现从服务器重启后并不能变成从服务器,而是变成单独的主服务器 通过命令让刚刚重启的服务器变成从服务器:发现能读到之前从服务器挂掉后主机存的数据,即主服务器里有什么数
Redis从入门到精通-Redis-主从复制-搭建一主多从
摘要:一、是什么 主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 二、能干嘛 读写分离,性能扩展 容灾快速恢复 三、怎么玩:主从复制 1、复制公共的redis.conf(就是原来的redis.conf) cp /etc/redis.c
Redis从入门到精通-Redis-事物和锁机制-解决库存遗留问题
摘要:一、什么是库存遗留问题 ab命令:模拟2000个请求 300个并发 ab -n 2000 -c 300 -k -p /ab/postfile -T application/x-www-form-urlencoded http://192.168.10.1:8080/Seckill/doseckill
Redis从入门到精通-Redis-事物和锁机制-超时和超卖问题解决
摘要:一、超卖问题 二、利用乐观锁淘汰用户,解决超卖问题。 三、代码 package com.atguigu; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedi
Redis从入门到精通-Redis-事物和锁机制-秒杀案例-ab测试工具模拟并发
摘要:一、安装ab测试工具 1、有网情况 yum install httpd-tools 2、无网情况 cd /run/media/root/CentOS 7 x86_64/Packages # 进入目录(路径跟centos6不同) #顺序安装 apr-1.4.8-3.el7.x86_64.rpm apr
Redis从入门到精通-Redis-事物和锁机制-秒杀案例-基本实现
摘要:一、需求 某个产品设置库存时,用户在前端页面点击秒杀按钮,库存数减一。 二、后台逻辑 1、用户id和产品id非空判断 2、连接redis3、拼接相关key,库存key 秒杀成功用户key 4、获取库存,如果库存为null则秒杀还未开始 5、通过用户key取val 判断用户操作是否重复秒杀 6、判断如
Redis从入门到精通-Redis-持久化之AOF
摘要:一、AOF(Append Only File) 1、是什么 以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录), 只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执