基础概念
定义
Redis(Remote Dictionary Server)是一个使用 C 语言编写的,高性能非关系型的键值对数据库。
特点
-
- 基于内存操作
- 单线程,高并发
- 支持多种数据类型
- 支持持久化
访问速度比对:
Q:什么样的代码容易命中缓存? https://blog.csdn.net/Murphy_CoolCoder/article/details/89478391
io模型
数据类型
SDS:
dict:
解决哈希冲突:渐进式rehash
skiplist:
跳表可以看成多层链表,它有如下的性质:
-
- 多层的结构组成,每层是一个有序的链表
- 最底层的链表包含所有的元素
- 跳跃表的查找次数近似于层数,时间复杂度为O(logn),插入、删除也为 O(logn) (类似二分查找)
ziplist:
、
quicklist:
链表+压缩列表
使用场景
string:1、常规key-value缓存应用。常规计数。2、分布式锁。
hash:存放结构化数据
list:热门列表、消息队列系统。
set:1、好友关系 2、利用唯一性,统计访问网站的所有独立ip 。
zset:1、排行榜;2、优先级队列。
RDB:
RDB 是 Redis 默认的持久化方案。RDB持久化时会将内存中的数据写入到磁盘中,在指定目录下生成一个dump.rdb文件。Redis 重启会加载dump.rdb文件恢复数据。
AOF:
AOF(append only file)持久化:以独立日志的方式记录每次写命令,Redis重启时会重新执行AOF文件中的命令达到恢复数据的目的。AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式。
其他优点:
1.支持主从复制。从而实现读写分离,降低负载均衡
2.提供哨兵机制。达到高可用的故障转移。
标签:AOF,持久,redis,Redis,链表,概念,RDB,数据结构 From: https://www.cnblogs.com/Duikerdd/p/17004157.html