随笔分类 -  Redis

摘要:一、缓存预热 服务器启动之后可能会迅速宕机 问题排查 1.请求量较高 2.主从之间数据吞吐量较大,数据同步操作频度较高 解决方案 前置准备工作: 1.日常例行统计数据访问记录,统计访问频度较高的热点数据 2.使用LRU数据删除策略,构建数据留存队列,例如:storm和kafka配合 准备工作: 3. 阅读全文
posted @ 2020-05-20 22:16 只会玩辅助 阅读(473) 评论(0) 推荐(0)
摘要:集群架构 集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果 集群作用 分散单条服务器的访问压力,实现负载均衡 分撒单台服务器的存储压力,实现可扩展性 降低单台服务器宕机带来的业务灾难 一、Redis集群结构设计 1.数据存储设计 通过两个算法(CRC16(ke 阅读全文
posted @ 2020-05-20 14:58 只会玩辅助 阅读(224) 评论(0) 推荐(0)
摘要:哨兵概念 哨兵是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master 哨兵作用 监控 不断的检查master和slave是否正常运行 master存活检测、master与slave运行情况检测 通知(提醒) 当被监 阅读全文
posted @ 2020-05-20 09:34 只会玩辅助 阅读(695) 评论(0) 推荐(0)
摘要:一、数据同步+命令传播阶段工作流程 二、主从复制完整的工作流程 三、主从复制常见问题 1.数据量过大,master重启,采用内部优化机制 2.复制缓冲区大小设置问题 3.频繁的网络中断(1) 4.频繁的网络中断(2) 5.数据不一致 阅读全文
posted @ 2020-05-19 11:19 只会玩辅助 阅读(402) 评论(0) 推荐(0)
摘要:阶段二:数据同步阶段工作流程 在slave初次连接master后,复制master中的所有数据到slave,将slave的数据库状态更新成master当前的数据库状态 一、数据同步阶段工作流程 1.slave发送指令:psync2,请求同步数据 2.master执行bgsave生成RDB同步数据。在 阅读全文
posted @ 2020-05-18 22:56 只会玩辅助 阅读(394) 评论(0) 推荐(0)
摘要:互联网"三高"架构 高并发、高性能、高可用 单机redis的风险与问题 多台服务器连接方案 一、主从复制概念 主从复制就是将master中的数据即时、有效的复制到slave中 注意:一个master可以拥有多个slave,一个slave只对应一个master 职责: master 写数据 执行写操作 阅读全文
posted @ 2020-05-18 16:17 只会玩辅助 阅读(318) 评论(0) 推荐(0)
摘要:一、Bitmaps数据类型 Bitmaps可以理解为string中二进制位中操作的接口 1.Bitmaps类型的基础操作 获取指定key对应偏移量上的bit值 getbit key offset #offset指偏移量,相对于第一个元素的位置,也可以理解为索引 设置指定key对应偏移量上的bit值, 阅读全文
posted @ 2020-05-17 19:00 只会玩辅助 阅读(300) 评论(0) 推荐(0)
摘要:一、服务器基础配置 1.服务器端设定 设置服务器以守护进程的方式运行 daemonize yes|no 绑定主机地址 bind 127.0.0.1 设置服务器端口号 port 6379 设置数据库数量 databases 16 2.日志配置 设置服务器以指定日志记录级别 loglevel debug 阅读全文
posted @ 2020-05-17 12:05 只会玩辅助 阅读(240) 评论(0) 推荐(0)
摘要:Redis中的数据特征 当指令太多的情况下,CPU的压力会过大,那么先不做清除数据的操作,等到空闲时间再来操作 数据删除策略 1.定时删除 2.惰性删除 3.定期删除 一、过期数据的底层存储结构 数据删除策略的目标 二、定时删除和惰性删除 定时删除 惰性删除 数据到达过期时间,不做处理,等下次访问该 阅读全文
posted @ 2020-05-17 10:11 只会玩辅助 阅读(2026) 评论(0) 推荐(0)
摘要:什么是事务(Redis中的事务在实际开发中还是用的比较少的) redis事务就是一个命令执行的队列,将一系列预定义命令包装成一个整体(一个队列)。当执行时,一次性按照添加顺序依次执行,中间不会被打断或者干扰。 一、事务的基本操作 开启事务 multi #设定事务的开启位置,此指令执行后,后续的所有指 阅读全文
posted @ 2020-05-16 12:51 只会玩辅助 阅读(711) 评论(0) 推荐(0)
摘要:RDB的弊端 解决思路 一、AOF的概念 二、AOF写数据的过程 客户端发出指令给服务端,服务端并没有马上记录,而是放到AOF写命令刷新缓存区,到一定时间之后将命令同步到AOF文件中。 AOF写数据三种策略 always(每次) 每次写入操作均同步到AOF文件中,数据零误差,性能较低,如果不是对数据 阅读全文
posted @ 2020-05-13 15:59 只会玩辅助 阅读(2553) 评论(0) 推荐(0)
摘要:什么是持久化 利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化 为什么要进行持久化 防止数据的意外丢失,确保数据安全性 持久化过程保存什么 1.将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据 RDB 2.将数据的操作过程进行保存,日志 阅读全文
posted @ 2020-05-13 10:43 只会玩辅助 阅读(2825) 评论(0) 推荐(0)
摘要:一、指定端口启动服务 指定端口启动服务端 redis-server --port 6380 连接客户端 redis-cli -p 6380 二、指定配置文件启动服务(一般都是通过配置文件启动服务) 查看文件过滤掉注释文件内容并且写入新的文件中 cat redis.conf | grep -v '#' 阅读全文
posted @ 2020-05-12 13:44 只会玩辅助 阅读(3207) 评论(0) 推荐(0)
摘要:数据库 一、db基本操作 切换数据库 select index #index是索引,指代选择第几个数据库,从0开始 其他操作 quit #退出 ping #测试服务器网络是否连通 echo message #显示后面message信息 二、db相关操作 数据移动 move key db #将键值移动 阅读全文
posted @ 2020-05-12 10:40 只会玩辅助 阅读(538) 评论(0) 推荐(1)
摘要:key特性 key是一个字符串,通过key获取redis中保存的数据 key应该设计哪些操作 一、key基本操作 删除指定key del key 获取key是否存在 exists key 获取key的类型 type key 二、key扩展操作(时效性控制) 为指定key设置有效期 expire ke 阅读全文
posted @ 2020-05-12 09:51 只会玩辅助 阅读(240) 评论(0) 推荐(0)
摘要:数据类型综合使用案例 1.业务场景:redis应用于限时按次结算的服务控制 解决方案 用户id当做key,如果key对应的value值不存在就设置value为1,同时设置一个生命周期,如果存在value值,直接加1操作,每次加1之前判断次数是否超过10 上面这种方案,每次加1之前都需要去判断次数是否 阅读全文
posted @ 2020-05-11 16:55 只会玩辅助 阅读(381) 评论(1) 推荐(0)
摘要:sorted_set类型结构:在set类型的基础上进行排序 一、sorted_set类型数据的基本操作 添加数据 zadd key score1 member1 [score2 member2] 获取全部数据 zrange key start stop [withscores] #如果不写withs 阅读全文
posted @ 2020-05-11 11:52 只会玩辅助 阅读(723) 评论(0) 推荐(0)
摘要:set类型结构 list类型也能存储很多数据,为什么还要有set类型呢?因为list是基于双向链表的底层结构,查询时候比较慢。 类似于hash类型,但是没有hash中的value,hash中的field当成set的value 一、set类型数据的基本操作 添加数据 sadd key member1 阅读全文
posted @ 2020-05-10 21:14 只会玩辅助 阅读(396) 评论(0) 推荐(0)
摘要:List类型的存储结构——底层是双向链表结构 一、List类型数据基本操作 添加/修改数据 lpush key value1 value2 #从左边一个个插入 rpush key value2 value2 #从右边一个个插入 获取数据 lrange key start stop #start和st 阅读全文
posted @ 2020-05-10 12:12 只会玩辅助 阅读(277) 评论(0) 推荐(0)
摘要:Hash类型的存储结构 一、Hash类型数据的基本操作 添加/修改数据 hset key field value #hset kk name wang 获取数据 hget key field (******)获取字段field的值 hgetall key #获取key下面所有数据数据,显示field 阅读全文
posted @ 2020-05-09 09:58 只会玩辅助 阅读(416) 评论(0) 推荐(0)