redis
everyD_struggle
任重而道远
展开
-
Redis - 事件&客户端&服务端
文章目录1.Redis将事件分为两大类:文件事件与时间事件。文件事件即socket的读写事件,时间事件用于处理一些需要周期性执行的定时任务。1.原创 2020-11-23 15:46:40 · 176 阅读 · 0 评论 -
Redis - 事务&频道
文章目录1. 事务2. WATCH命令3. 判断事务是否安全4. 发布与订阅4. 发布与订阅的实现原理5. 消息处理1. 事务Redis通过MULTI、EXEC、WATCH等命令来实现事务(transaction)功能。当Redis重新启动加载AOF文件时也会保证事务命令的完整性。一个事务从开始到结束通常会经历以下三个阶段:1)事务开始MULTI。2)命令入队。3)事务执行EXEC。multiincr counter1incr counter2 exec事务开始MULTIMULT原创 2020-11-21 19:32:23 · 380 阅读 · 1 评论 -
Redis - Sentinel(哨兵)
文章目录1. 初始化Sentinel1.1 初始化服务器1.2 使用Sentinel专用代码1.3 初始化Sentinel状态1.4 初始化Sentinel状态的masters属性1.5 创建连向主服务器的网络连接2. Sentinel获取信息3. 检测下线leader选举规则4. 故障转移主服务器挑选过程5. 相关问题1)主从切换完成之后,客户端和其他哨兵如何知道现在提供服务的Redis Master是哪一个呢?2)执行切换的哨兵发生了故障,切换操作是否会由其他哨兵继续完成呢?3)故障Master恢复之原创 2020-11-20 22:58:03 · 134 阅读 · 0 评论 -
Redis - 集群,主从复制
文章目录1. 为什么需要主从复制?2. 主从复制2.1 同步2.2 命令传播2.3 复制的缺陷2.4 Redis2.8的优化2.5 实现原理2.5.1 复制偏移量2.5.2 复制积压缓冲区2.5.3 服务器运行ID2.5.4 执行流程如下todo1. 为什么需要主从复制?1)读写分离,单台服务器能支撑的QPS是有上限的,我们可以部署一台主服务器、多台从服务器,主服务器只处理写请求,从服务器通过复制功能同步主服务器数据,只处理读请求,以此提升Redis服务能力;另外我们还可以通过复制功能来让主服务器免于执原创 2020-11-19 23:15:00 · 135 阅读 · 0 评论 -
Redis - 持久化
文章目录1. RDB持久化1.1 参数配置1.2 dirty计数器和lastsave属性1.3 检查保存条件是否满足2. AOF持久化3. 混合持久化1. RDB持久化Redis是内存数据库,它将自己的数据库状态储存在内存里面,所以如果不想办法将储存在内存中的数据库状态保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。Redis提供了RDB持久化功能,可以将Redis在内存中的数据库状态保存到磁盘里面,避免数据意外丢失。有两个Redis命令可以用于生成RDB文件,一个是SA原创 2020-11-19 21:57:31 · 134 阅读 · 0 评论 -
Redis - 键空间
文章目录1. 键空间简介2. 读写键空间时的维护操作3. 设置键的生存时间或过期时间4. 过期键删除策略4.1 定时删除4.2 惰性删除4.3 定期删除5. AOF、RDB和复制功能对过期键的处理5.1 RDB5.2 AOF5.3 复制模式1. 键空间简介Redis是一个键值对(key-value pair)数据库服务器,服务器中的每个数据库都由一个redis.h/redisDb结构表示,其中,redisDb结构的dict字典保存了数据库中的所有键值对,我们将这个字典称为键空间(key space)原创 2020-11-19 19:30:29 · 896 阅读 · 0 评论 -
Redis -KV基础
文章目录1. 对象的类型与编码2. 字符串对象编码的转换3. 列表对象4. 哈希对象5. 集合对象6. 有序集合7. 内存回收8. 对象的空转时长1. 对象的类型与编码服务器在执行某些命令之前,会先检查给定键的类型能否执行指定的命令,而检查一个键的类型就是检查键的值对象的类型。每次当我们在Redis的数据库中新创建一个键值对时,我们至少会创建两个对象,一个对象用作键值对的键(键对象),另一个对象用作键值对的值(值对象)。Redis中的每个对象都由一个redisObject结构表示:typede原创 2020-11-14 22:53:00 · 736 阅读 · 0 评论 -
Redis - 整数集合
文章目录1. 基本概念1. 基本概念整数集合(intset)是Redis用于保存整数值的集合抽象数据结构,它可以保存类型为int16_t、int32_t或者int64_t的整数值,并且保证集合中不会出现重复元素。整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。typedef struct intset{ //编码方式 uint32_t encoding; //集合包含元素数量 uin原创 2020-11-07 21:41:40 · 185 阅读 · 0 评论 -
Redis - 跳跃表,压缩列表,quicklist
文章目录1. 跳跃表2. 跳跃表的结构3. 压缩列表连锁更新1. 跳跃表跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡树要来得更为简单。Redis使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员(memb原创 2020-11-06 20:38:27 · 2238 阅读 · 0 评论 -
Redis - 链表与字典的实现
文章目录1. Redis链表的结构2. Redis字典的结构hash表哈希表结点字典hash函数rehash(渐进式)3. 字典的遍历 *3.1 迭代器遍历(全遍历)普通迭代器安全迭代器3.2 间断遍历Redis为单进程单线程模式1. Redis链表的结构基础是双向链表typedef struct listNode{struct listNode *prev;struct listNode *next;void* value;}listNode;外层还有一层封装typedef st原创 2020-11-05 20:38:24 · 197 阅读 · 0 评论 -
Redis - 简单动态字符串
文章目录1. SDS结构2. SDS与C字符串的区别3. 扩展1. SDS结构简单动态字符串(Simple Dynamic Strings, SDS)是Redis的基本数据结构之一,用于存储字符串和整型数据。SDS兼容C语言标准字符串处理函数,且在此基础上保证了二进制安全。struct sds{int len ;int free;char buf[];}保存空字符的1字节空间不计算在SDS的len属性里面,并且为空字符分配额外的1字节空间,以及添加空字符到字符串末尾等操作,都是由SDS函原创 2020-11-05 15:45:39 · 235 阅读 · 0 评论 -
Redis- jedis&jedispool
文章目录1. pom2 String3. List4. Set5. Hash6. Zet7. JedisPoolJedisPool的使用8. spring-data-redis1. pom <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency&原创 2020-05-26 20:22:52 · 341 阅读 · 0 评论 -
缓存概念入门
本文为读书笔记,<<深入分布式缓存:从原理到实践>>缓存是一种通用设计模式文章目录1. 什么是缓存?todo1. 什么是缓存?缓存:存储在计算机上的一个原始数据复制集,以便于访问。原本出现在计算机主存到CPU之间的那层存储设备,现在,已经远远突破了原有的概念缓存是一种通用的设计模式这种模式利用增加存储空间的方式,实现低速部件与高速部件之间的解耦。换而言之,...原创 2020-05-02 20:20:13 · 355 阅读 · 0 评论 -
Redis-五种数据结构
1.五种数据结构图解如下1.1 String数据结构命令: get 、 set 、 del 、 incr、 decrget 、 set 、 del 、 incr、 decr联想java: map<String,value> value可对应数字,字符串,jpg图片或者序列化的对象。实战场景:1.缓存: 经典使用场景,把常用信息,字符串,图片或者视频等信息放到redis中,r...原创 2020-04-13 12:50:16 · 300 阅读 · 0 评论 -
Redis基础(官方文档总结)
1 .配置主从例如。为MySQL 服务器配置主从。一台者机,另一台可以顶上继续服务,以满足高可用的要求。读写分离配置一主多从。因为一般系统80 % 的请求都是读取操作,将这些操作分发到从服务器上可以有效地提升网站响应速度。分库分表随着数据量的增长,单库单表已经难以满足要求。一些诸如TDDL 、C obar 、MyCAT等的MySQL 分布式数据库中间件应运而生。REmote ...原创 2020-04-12 19:53:13 · 371 阅读 · 0 评论