redis
文章平均质量分 84
lqadam
这个作者很懒,什么都没留下…
展开
-
缓存的使用模式
缓存的使用模式最近在看公司的库存编年史,看到公司在库存上的架构演变,看到关于缓存的地方,发现对于缓存的设计有点忘了,整理总结一下。cache aside 最常见就是最常见的有缓存读缓存,没缓存读db,回写缓存,更新db需要失效缓存问题这里需要注意的是并发情况下的顺序问题先更新db,后更新缓存:后更新,而不是失效缓存的问题是 如果有并发的写的话,因为回写缓存的网络延迟不好控制,会存在先...原创 2019-12-08 16:14:15 · 348 阅读 · 0 评论 -
redis 排序
sort命令可对集合、列表和有序集合排序,对有序集合排序,默认使用集合的key而不是score作为排序依据命令格式:SORT <key> [ALPHA] [ASC|DESC] [BY <by-pattern>] [LIMIT <offset> <count>] [GET <get-pattern> [...<get-patte...原创 2018-03-03 13:03:22 · 1059 阅读 · 0 评论 -
redis 慢查询、位数组和事务
慢查询日志配置慢查询日志慢查询日志查看慢查询日志实现monitor位数组命令实现BITCOUNT的实现事务事务的执行流程实现watch命令慢查询日志配置慢查询日志选项slowlog-log-slower-than用于配置执行时间大于多少毫秒的命令会记录慢查询日志 选项slowlog-max-len用于配置服务器最多保存多少条慢查询...原创 2018-03-03 13:02:43 · 253 阅读 · 0 评论 -
redis lua脚本相关知识点
redis的lua环境实现流程EVAL执行原理命令对于脚本的复制redis的lua环境实现流程服务器调用C的API创建一个Lua环境将一些基础函数库导入到Lua环境中,并删除能载入外部文件的函数loadfile创建redis函数的全局表格。函数包含了redis.call和redis.pcall、redis计算has值的函数,redis日志函数和返回错误的函数使...原创 2018-03-03 13:00:39 · 243 阅读 · 0 评论 -
redis 发布与订阅
命令列举SUBSCRIBE <channel [channel]>:订阅频道,以接收发送到这个频道的消息PUBLISH <channel> <message>: 该命令会向频道发送消息,所有订阅频道的订阅者都会收到消息PSUBSCRIBE <channel_pattern>:这是接受正则表达式的SUBSCRIBE命令,可以订阅符合某个模式的...原创 2018-03-03 12:58:40 · 207 阅读 · 0 评论 -
redis 集群 相关知识点
节点clusterNode结构体clusterLink结构体clusterState结构体集群分片槽信息存储计算键属于哪个槽集群分片后键值的操作集群分片后,数据库使用的不同重新分片:使用redis-trib redis集群管理软件重新分片期间的键值对操作ASK错误和MOVED错误集群复制和故障转移集群的复制集群的故障检测集群的故障转移集群的消息...原创 2018-03-03 12:57:59 · 336 阅读 · 0 评论 -
redis sentinel(哨兵)
Sentinel原理Sentinel 监视流程sentinel检查下线主观下线:客观下线:故障转移:选举领头sentinel:故障转移 Sentinel是redis高可用的方案,通过设立一个或多个Sentinel监视服务器,可以在主服务器下线的时候及时选举切换到从服务器,保证可用性。 Sentinel本身也是服务器,只是运行在特殊模式下,监听其他...原创 2018-03-03 12:56:47 · 329 阅读 · 0 评论 -
redis 复制
复制的问题复制流程redis的复制,主要是两步: 1. 同步:全量复制RDB文件。从服务器发送SYNC命令,主服务器生成RDB文件,传输给从服务器 2. 命令传播:增量同步新的写命令。主服务器将新的写命令发送给从服务器,从而一直保持二者的数据同步 复制的问题复制如果一直正常最好,如果出现掉线的问题,那么重新连接之后,如何再次同步呢? 在旧版(2.8以前),每次...原创 2018-03-03 12:55:33 · 394 阅读 · 0 评论 -
redis 服务器
redis服务器服务器启动初始化过程初始化redis Server结构体的状态:initServerConfig函数内。包括设置运行Id,设置默认运行频率,设置配置文件路,设置端口号,设置RDB和AOF持久化条件,初始化lru时钟和创建命令表(即客户端传来的命令字符串和实际执行命令的函数等信息结构体之间的哈希表,字符串不区分大小写)。载入配置项:通过终端输入和配置文件的内容,替换s...原创 2018-03-03 12:54:34 · 368 阅读 · 0 评论 -
redis 客户端
redis客户端客户端通用属性(即不为特别功能设置的属性)客户端何时关闭redis客户端redis连接到服务器的客户端会在redisServer结构体内形成一个redisClient的链表保存客户端通用属性(即不为特别功能设置的属性)名字:默认为空,只起别名标识的作用套接字描述符fd:客户端正在使用的套接的描述符,如果是伪客户端(AOF和lua脚本客户端)...原创 2018-03-03 12:52:56 · 1155 阅读 · 0 评论 -
redis 事件
redis 事件文件事件要点时间事件时间事件 结构时间事件的实现:文件事件和时间事件的协同处理redis 事件redis分为文件事件和时间事件两类事件,其中,文件事件为socket产生的相应事件,与客户端对数据的读写有关系,时间事件是定时触发的事件,与服务器的定时任务,过期键值对的删除有关。 文件事件基于reactor模式(主线程轮训多个请求...原创 2018-03-03 12:51:21 · 202 阅读 · 0 评论 -
redis 数据库结构、RDB备份和AOF备份
数据库结构键空间 字典过期字典redis备份和复制机制中过期键值对的行为RDB持久化RDB持久化的保存手动持久化自动持久化RDB持久化的恢复RDB文件的格式databases结构:key_value_paires结构:AOF持久化AOF持久化的实现:命令追加、文件写入、文件同步命令追加文件写入与同步AOF文件的载入AOF文件重写AO...原创 2018-03-03 12:50:24 · 289 阅读 · 0 评论 -
redis 数据结构 redis对象
对象结构type取值encondig取值和对应的ptr类型对象和编码的对应关系(一对多)对象共享对象的空转时长部分对象实现要点各个对象encoding选择的策略字符串对象列表对象哈希对象集合对象有序集合内存回收策略对象redis将内部的数据结构封装,包含在redis对象中,redis有五种对象:字符串对象、列表对象、哈希对象、集合...原创 2018-03-03 12:25:22 · 297 阅读 · 0 评论 -
redis 数据结构 整数集合和压缩列表
整数集合结构:encoding 说明要点redis内的使用压缩列表结构一个压缩列表包含entry结构要点:redis内使用整数集合结构:typedef struct intset{ uint32_t encoding;//编码,表明content内保存的整型的类型 uing32_t length;//数组的...原创 2018-03-03 12:14:15 · 470 阅读 · 0 评论 -
redis 数据结构 跳表
跳表结构:要点:redis内的使用跳表要先有跳表的数据结构基础: 跳表是链表的一个变种,通过增加多余的指针,将单向链表变成多向链表,进而使跳表的查询效率和平衡二叉树看齐(平均o(logN),最坏o(N)),而且较之二叉树实现方便。 而跳表本身,有一些比较迷的实现策略:比如,新增节点的层次是通过随机数(抛硬币)指定的,存在一个随机概率,这在redis内,概率...原创 2018-03-03 12:12:55 · 706 阅读 · 0 评论 -
redis 数据结构 字典
哈希表和字典结构:要点rehash时机redis内的使用哈希表和字典我就不明白了,c里面没有,c++的stl里有啊,redis为什么要自己实现结构:/** * 哈希节点**/typedef struct dictEntry{ void *key;//键,任意类型 union{//值,三选一,或者是自定义val,或者是无符...原创 2018-03-03 12:11:57 · 243 阅读 · 0 评论 -
redis 数据结构 简单动态字符串和链表
假期在家,看了《Redis 设计与实现》,将其整理成了md。 想来,有两个月左右没有写博客了,将笔记作为一个系列更上来简单动态字符串(simple dinamic string,即sds) 用来替代c的字符串实现结构:要点:buf[]的大小使用sds,而不使用string的好处redis内的使用链表结构:要点redis内使用简单动...原创 2018-03-03 12:10:59 · 209 阅读 · 0 评论