随笔分类 - Redis
关于redis的理解
摘要:Redis服务器 由多个redisDb对象组成,一个redisDb就是一个数据库,一般默认16个,可通过select index切换,数量可配置。 redisDb中用一张字典表保存数据库中的所有键值对。 键都是字符串对象。 值是五种对象之一。 取值时通过键值获取值对象,再返回值对象嵌套的字符串对象值
阅读全文
摘要:字符串对象 字符串对象的编码可以是int,raw,embstr 如果是整型且可以用long表示则encoding -> int,且直接将整数值保存在ptr里。 如果字符串长度 > 32字节,则encoding -> raw,redisObject的ptr属性指向一个SDS对象地址。 如果字符串长度
阅读全文
摘要:简单动态字符串 redis字符串底层并不是直接拿c字符串来处理的。 redis字符串底层存储结构是SDS SDS包含三个属性 len 字符串长度 好处 传统c字符串遍历长度的时候会去遍历字符串,而SDS保留了长度空间,将获取长度的时间复杂度控制在O(1)。 避免缓冲区溢出,c字符串在将AB两个字符串
阅读全文
摘要:redis文件事件 定义:redis服务器通过套接字socket与其他redis服务或者客户端进行通信,每次通信会产生文件事件而redis通过监听和处理这些事件来完成一系列网络通信操作。 实现:redis基于unix网络通信模型的I/O复用模型,一个线程监控多个套接字,当某个套接接收到信息,由事件分
阅读全文
摘要:RDB RDB是通过直接将K-V键值对保存在硬盘文件来持久化。 通过两个命令可以让服务器执行rdb操作(tips:SAVE和BGSAVE底层都是调用的rdbSave) SAVE:SAVE命令由主进程执行,所以当执行SAVE命令后,服务器将进入阻塞状态,只有当RDB文件生成完成后,才开始处理请求。 B
阅读全文
摘要:事务命令: multi 开启事务,此时输入的命令会入队FIFO。 exec 依次执行队列中的命令,即使遇到执行错误的命令,也不会影响其他命令,redis没有事务回滚机制。 discard 放弃事务 watch CAS乐观锁,用法是在multi命令之前执行,监控某个key值,如果在命令输入完成后执行e
阅读全文
摘要:redis高可用的集群模式 使用集群,只需要将每个数据库节点的cluster-enable配置打开即可。每个集群中至少需要三个主数据库才能正常运行。即使使用哨兵,redis每个实例也是全量存储,每个redis存储的内容都是完整的数据,浪费内存且有木桶效应。为了最大化利用内存,可以采用集群,就是分布式
阅读全文
摘要:主从模式 redis提供了复制功能,可以实现当一台数据库中的数据更新了,自动同步到其他数据库中,主节点支持读写,从节点只能读,并且接收主节点同步过来的数据,主从是一对多的关系。从节点在启动的时候加参数 --slaveof ip port (ip port对应主节点),也可以在运行时执行slaveof
阅读全文
摘要:Redis为什么这么快? I/O复用模型。 单线程操作没有切换线程开销。 基于内存操作,快。 Redis数据结构 String 最基本的KV结构 hash 类似于java对象 list 集合可重复 set 不可重复 zset 有序集合score排序 基于redis的分布式锁实现 加锁 方式一:使用l
阅读全文

浙公网安备 33010602011771号