REDIS
2020-02-17 15:54:37 0 举报
AI智能生成
redis知识点图普,仅整理基本知识结构,作为redis知识网络查询和借鉴
作者其他创作
大纲/内容
数据库
切换数据库
select
DB数组
dbnum
RedisDB *db
dict
键空间<br>
键空间操作
添加、删除、更新、取值<br>
flushdb、dbsize、EXISTS、RENAME、keys
EXPIRE、PEXPIRE、SETEX
设置生存时间
EXPIREAT、PEXPIREAT
设置过期时间
PERSIST
移除过期时间
TTL、PTTL
返回剩余生存时间
过期键的删除策略
定时删除
通过定时器定时删除
惰性删除
在取出键时进行过期检查和删除
定期删除
确定删除操作的时长和频率
持久化
RDB
SAVE、BGSAVE
自动间隔性保持<br>
配置:save <br>
根据RDB数据结构序列化<br>
AOF
BGREWRITEAOF
记录写操作命令
命令追加
AOF重写
客户端
REDIS服务器使用单线程单进程处理命令请求
redisClient<br>
套接字描述符
名字
标志值flag
正在使用的数据库指针<br>
当前要执行的命令、命令参数、参数个数、以及指向命令实现函数的指针
输入输出缓冲区
复制状态信息
事务状态及watch命令数据结构
发布订阅时用的数据结构
身份验证标志
创建时间、最后一次通信时间
服务器
复制
SLAVEOF
同步
将从服务器数据库状态更新至主服务器当前的数据库状态
SYNC命令
从服务器向主服务器发送SYNC命令
BGSAVE<br>
主服务器通过不BGSAVE存储当前的记录写到RDB
发送RDB<br>
主服务器将RDB发送给从服务器
从服务器加载RBD
缓存写命令<br>
主服务器记录RDB同时缓存写命令
发送写命令
主服务器持续发送写命令
从服务器执行写命令
命令传播
主服务器将引起主从不一致的命令发送给从服务器,从服务器执行此命令,使数据再次一致
复制偏移量
心跳检测
复制偏移量
链接状态<br>
检测命令丢失<br>
Sentinel
高可用性的解决方案
启动命令<br>
redis-sentinel sentinel.conf<br>
SLAVEOF IP<br>
SLAVEOF no one从机转主机<br>
sentinel是一个特殊模式的REDIS
维护监控主服务器列表
创建连向主服务器的连接
不使用REDIS的基础操作命令
服务器监控
监视任意多个主服务器及主服务器下的所有从服务器<br>
故障转移
在主服务器下线时提升从服务器为主服务器
集群<br>
分布式数据库方案<br>
通过分片进行数据共享
命令
LUSTER MEET (ip) (port)<br>
连接各个节点
槽指派(slot)
共16384个槽<br>
CLUSTER ADDSLOTS<br>
将多个槽指派节点<br>
MOVED错误
数据读写时根据槽值判断是否属于本集群,不属于则返回moved错误并纠正槽服务器
重新分片
重新制定槽所属节点
增加集群节点
设置从节点
REPLICATE (node_id)<br>
数据结构
SDS(Simple dynamics tring)<br>简单动态字符串
struct<br>
len<br>
free
buf<br>
空间预分配
惰性空间释放
二进制安全
链表
列表
发布订阅
慢查询
监视器
字典
数据库
哈希键<br>
哈希表作为底层实现
键的哈希值和索引值做映射
rehash(重新散列)
跳跃表
有序集合
整数集合
集合键
动态升级
压缩列表
列表键
哈希键<br>
对象
基于REDIS数据结构创建的对象系统<br>
REDIS根据对象类型执行对象命令
实现基于引用计数的内存回收和对象共享
字符串对象
列表对象
哈希对象
集合对象
有序集合对象
对象类型与编码
类型<br>
REDIS_STING
REDIS_LIST
REDIS_HASH
REDIS_SET
REDIS_ZSET
编码<br>
REDIS_ENCODING_INT
long类型的整数
REDIS_ENCODING_EMBSTR
embstr编码的简单字符串
REDIS_ENCODING_RAW
简单动态字符串
REDIS_ENCODING_HT
字典
REDIS_ENCODING_LINKEDLIST
双链列表
REDIS_ENCODING_ZIPLIST
压缩列表
REDIS_ENCODING_INTSET
整数集合
REDIS_ENCODING_SKIPLIST
跳跃表和字典
事件
文件事件
服务器对套接字操作的抽象
处理器
连接应答处理器
命令请求处理器
命令回复处理器
时间事件
对给定时间点操作的抽象
定时事件
周期性事件
其他功能
发布与订阅
命令
PUBLISH、SUBSCRIBE、UNSUBSCRIBE、PSUBSCRIBE、PUNSUBSCRIBE
例子<br>
SUBSCRIBE ‘news.it’ <br>
PUBLISH ‘news.it’ ‘hello’<br>
PUBSUB CHANNELS、PUBSUB NUMSUB、PUBSUB NUMPAT<br>
事务
通过MULTI、EXEC、WATCH等命令实现事务功能
通过客户端的事务标识开关实现
步骤<br>
事务开始
MULTI
命令入队
事务执行
EXEC
WATCH
乐观锁
在命令执行前,监视任意数量的数据库键,如果键值被修改,则拒绝执行事务
ACID
原子性
多个操作作为整体执行
不支持回滚
与redis的设计理念有关
一致性
隔离性
多个事务并发执行
持久性
事务执行后数据已保存在存储介质里
需要持久化模式
LUA脚本
命令
SCRIPT FLUSH、SCRIPT EXISTS、SCRIPT LOAD、SCRIPT KILL<br>
SORT
排序
SORT <key><br>
ASC、DESC
慢查询日志
slowlog-log-slower-than
超时时间<br>
slowlog-max-len
慢查询日志条数
命令 <br>
SLOWLOG GET<br>
查询慢查询日志
MONITOR
监视器命令,试试接收并打印服务器处理的请求命令
0 条评论
下一页