Redis之bigkey

191 阅读1分钟

1、提出问题:

1、什么是bigkey呢?

2、bigkey的存在会有哪些潜在的风险?

3、如何查找bigkey?

4、那么我们要如何避免bigkey的产生呢?

2、针对上面的问题,我们还是从源码中试着寻找一下答案。

1、涉及到的结构体
typedef struct {
    char *name;
    char *sizecmd;
    char *sizeunit;
    unsigned long long biggest;
    unsigned long long count;
    unsigned long long totalsize;
    sds biggest_key;
} typeinfo;

typedef struct redisReply {
    int type; 
    long long integer; 
    double dval; 
    size_t len; 
    char *str; 
    char vtype[4]; 
    size_t elements; 
    struct redisReply **element; 
} redisReply;

typedef struct redisContext {
    const redisContextFuncs *funcs;   
    int err; 
    char errstr[128]; 
    redisFD fd;
    int flags;
    char *obuf; 
    redisReader *reader; 
    enum redisConnectionType connection_type;
    struct timeval *timeout;
    struct {
        char *host;
        char *source_addr;
        int port;
    } tcp;
    struct {
        char *path;
    } unix_sock;
    struct sockadr *saddr;
    size_t addrlen;
    void *privdata;
} redisContext;