Redis 一些题目

数据结构

基本类型

string 字符串
list 列表
set 集合
zset 有序集合
hash 哈希表
  • String:如果存储数字的话,是用int类型的编码;如果存储非数字,小于等于39字节的字符串,是embstr;大于39个字节,则是raw编码。
  • List:如果列表的元素个数小于512个,列表每个元素的值都小于64字节(默认),使用ziplist编码,否则使用linkedlist编码
  • Hash:哈希类型元素个数小于512个,所有值小于64字节的话,使用ziplist编码,否则使用hashtable编码。
  • Set:如果集合中的元素都是整数且元素个数小于512个,使用intset编码,否则使用hashtable编码。
  • Zset:当有序集合的元素个数小于128个,每个元素的值小于64字节时,使用ziplist编码,否则使用skiplist(跳跃表)编码

特殊类型

bitmap 位图
hyperloglog 基数统计
geospatial 地理位置
stream 消息队列

优点

  • 在内存操作一切速度快
  • 单线程, 没有上下文的切换

缺点

  • 因为单线程, 不能利用cpu多核性能

持久化

  • RDB

    • 记录快照的方式
    • fork子进程-> 定时并且到达触发修改次数写磁盘->dump.rdb
    • 记录的是二进制数据,快照恢复舒服快,可能丢失数据
  • AOF

    • 记录过程的方式
    • 客户端修改命令->每秒/每个命令/不同步->appendonly.aof
    • 记录的是redis命令,命令过多恢复比较慢,恢复完整性上比RDB高

redis4.0+ 使用混合模式通过,RDB全量持久化内存数据,AOF增量持久化修改命令,以保证数据的完整性


Redis 一些题目
https://maocat.cc/2020/04/14/中间件/Redis/一些题目/
发布于
2020年4月14日
许可协议