中高级开发面试必问的Redis面试题,看这篇就够了!

在这里插入图片描述

hset hash-key sub-key1 value1

(integer) 1

hset hash-key sub-key2 value2

(integer) 1

hset hash-key sub-key1 value1

(integer) 0

hgetall hash-key

  1. “sub-key1”

  2. “value1”

  3. “sub-key2”

  4. “value2”

hdel hash-key sub-key2

(integer) 1

hdel hash-key sub-key2

(integer) 0

hget hash-key sub-key1

“value1”

hgetall hash-key

  1. “sub-key1”

  2. “value1”

ZSET


在这里插入图片描述

zadd zset-key 728 member1

(integer) 1

zadd zset-key 982 member0

(integer) 1

zadd zset-key 982 member0

(integer) 0

zrange zset-key 0 -1 withscores

  1. “member1”

  2. “728”

  3. “member0”

  4. “982”

zrangebyscore zset-key 0 800 withscores

  1. “member1”

  2. “728”

zrem zset-key member1

(integer) 1

zrem zset-key member1

(integer) 0

zrange zset-key 0 -1 withscores

  1. “member0”

  2. “982”

需要更多大厂面试资料的话也可以点击直接进入,免费获取!暗号:CSDN

三、数据结构


字典


dictht 是一个散列表结构,使用拉链法保存哈希冲突。

/* This is our hash table structure. Every dictionary has two of this as we

  • implement incremental rehashing, for the old to the new table. */

typedef struct dictht {

dictEntry **table;

unsigned long size;

unsigned long sizemask;

unsigned long used;

} dictht;

typedef struct dictEntry {

void *key;

union {

void *val;

uint64_t u64;

int64_t s64;

double d;

} v;

struct dictEntry *next;

} dictEntry;

Redis 的字典 dict 中包含两个哈希表 dictht,这是为了方便进行 rehash 操作。在扩容时,将其中一个 dictht 上的键值对 rehash 到另一个 dictht 上面,完成之后释放空间并交换两个 dictht 的角色。

typedef struct dict {

dictType *type;

void *privdata;

dictht ht[2];

long rehashidx; /* rehashing not in progress if rehashidx == -1 */

unsigned long iterators; /* number of iterators currently running */

} dict;

rehash 操作不是一次性完成,而是采用渐进方式,这是为了避免一次

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值