redis了解

2020-08-28  本文已影响0人  格林哈

1 数据结构

1.1 层次结构(key 通常以“:”作为分隔符)

- 一个实例:n个db
- 一个db:n个key:value对啊
- 常用5个value类型:
    - string
    - list
    - map
    - set
    - sorted-set

1.2 value对象的通用结构

typedef struct redisObject {
//unsigned 无符号数
    // String ,list 的结构类型
    unsigned type:4;
    // 实现方式 如list, ziplist还是linkedlist
    unsigned encoding:4;
    // 对象的空转时长(当前时间-lru ),用于有限内存下长久不访问对象的清理
    // 最后一次被命令程序访问的时间
    unsigned lru:REDIS_LRU_BITS;
    // 引用计数 
    int refcount;
    // 以encoding方式实现这个对象实际地址, 如 string 对于sds 地址
    void *ptr;
} robj;

1.3 String

typedf struct sdshdr {
   // 实际长度
   unsigned int len;
   // 剩余可用长度  如 buf 实际长度为8 存入 hello , len 为 5,free 为2
   unsigned int free;
   // 存储字符串内容 '\0'结尾
   char buf;
};

1.4 List

1.5 Map

1.6 Set

1.7 SortSet

2 过期键删除策略

2.1 定时删除

2.2 惰性删除

2.3 定期删除

3 缓存穿透,缓存击穿,缓存雪崩解决方案分析

可参考

3.1 缓存穿透

3.2 缓存雪崩

3.3 缓存击穿

3.4 如何保证缓存与数据库双写的一致性

4 集群与高可用

4.1 集群方案

4.2 cluster 方案

4.2 高可用

基本原理

5 事务

5.1 命令

multi #开始事务 
lpush xxp 1 2 3
lindex xxp 0
lrange xxp 0 2

exec/discard # 提交事务/取消整个事务

5.2 事务的ACID原则

6 持久化

6.1 RDB

6.2 AOF

7 复制

7.1 命令

7.2 同步

7.3 完整重同步

7.4 部分重同步

上一篇 下一篇

猜你喜欢

热点阅读