脑图下载地址在文末

String字符串

Redis SDS简单动态字符串 点击查看

应用场景

分布式锁

SETNX key value

当key不存在时,将 key 的值设为 value ,返回1。若给定的 key 已经存在,则setnx不做任何动作,返回0。
当setnx返回1时,表示获取锁,做完操作以后del key,表示释放锁,如果setnx返回0表示获取锁失败,整体思路大概就是这样

计数器

SET key 0
INCR key // incr readcount::{帖子id} 每阅读一次
GET key // get readcount::{帖子id} 获取阅读量

分布式全局唯一id

生成一系列唯一的序列号。

设置序列起始值:
SET sequence "10000"
获取一个序列值:
INCR sequence
直接将返回值作为序列使用即可。
获取一批(如100个)序列值:
INCRBY sequence 100
假设返回值为N,那么[N - 99 ~ N]的数值都是可用的序列值。

常见的k-v存储,可以应对大部分的场景

比如序列化之后的 json 或者其它文本数据。


Hash哈希

底层实现方式

HashTable哈希表

  • siphash算法

ZipList压缩列表

  • 哈希对象保存的所有键和值得字符串长度小于64字节
  • 哈希对象保存的键值对数量小于512

常见问题

解决哈希冲突

  1. 使用链地址法,将相同的key使用链表连接

负载因子

  1. 负载因子 = 哈希表已保存节点数量 / 哈希表大小
  2. 是哈希表的一个重要参数,它反映哈希表的装满程度

Rehash

  1. 扩容

    • 服务器目前没有执行 BGREWRITEAOF 或者 BGSAVE 命令,且哈希表的负载因子大于等于 1
    • 服务器目前正在执行 BGSAVE 或者 BGREWRITEAOF 命令, 并且哈希表的负载因子大于等于 5
  2. 缩容

    • 哈希表的负载因子小于 0.1 时, 程序自动开始对哈希表执行收缩操作

在执行 BGREWRITEAOF 或者 BGSAVE 命令 时,Redis 会为当前服务器进程创建一个子进程,所以在子进程存在期间,会提高执行扩容的负载因子,因为这样可以避免在子进程存在期间进行哈希表的扩容操作,从而避免不必要的内存写入操作,最大限度的节约内存,提高效率。

应用场景

  1. hash 类型十分适合存储对象类数据,相对于在 string 中介绍的把对象转化为 json 字符串存储,hash 的结构可以任意添加或删除‘字段名’,更加高效灵活。

List 列表

底层实现方式

  1. ZipList压缩列表

应用场景

  1. 简单的消息队列的功能
  2. 可以利用range命令,做基于redis的分页功能
  3. BLPOP/BRPOP 等待有元素弹出,实现阻塞队列

Set 集合

底层实现方式

  1. intset

    • 结合对象保存的所有元素都是整数值,开辟空间高效
    • 集合对象保存的元素数量不超过512个
    typedef struct intset {// 编码方式uint32_t encoding;// 集合包含的元素数量uint32_t length;// 保存元素的数组int8_t contents[];
    } intset;
    
  2. hashtable

应用场景

  1. 好友/关注/粉丝/感兴趣的人集合
  2. 随机展示
  3. 黑名单/白名单

Sorted Set 有序集合

底层实现方式

  1. ZipList压缩列表

    • 有序集合保存的元素数量小于128个
    • 有序集合保存的所有元素的长度小于64字节
  2. SkipList 跳表

    • 效率可比拟于二叉查找树
    • 通过“空间来换取时间”的一个算法,通过在每个节点中增加了向前的指针,从而提升查找的效率

应用场景

  1. 游戏排名、微博热点话题等使用场景

脑图下载地址

【面试】Redis 基础数据类型以及常见面试问题相关推荐

  1. redis 基础数据类型及应用 1

    redis 基础数据类型及应用 1 redis简介 一. string 数据类型与结构(字符串) 1 string类型简介 2 常用命令 1.set 命令 2.get 命令 3.getset 命令 4 ...

  2. 【面试重点系列】操作系统常见面试重点题(万字图解)

    [面试重点系列]操作系统常见面试重点题

  3. redis基础数据类型set(无序不重复集合)

    redis基础数据类型set(无需不重复集合) 常用命令 命令 说明 Sadd setName element 往set集合中添加1个元素 Smembers setName 查看指定set集合的所有元 ...

  4. 【Java从0到架构师】Redis 基础 - 数据类型

    Redis 原理与实战 Redis 基础 为什么 Redis 这么快? Redis 安装.启动 Redis 常用配置 Redis 数据类型 通用命令 String - value 可以是字符串.数值. ...

  5. Redis基础——数据类型详解

    命令参考:http://doc.redisfans.com/ 简介 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - valu ...

  6. Redis的那些最常见面试问题

    作者:回首笑人间 链接:www.cnblogs.com/Survivalist 公众号注:更多Java面试题,点击文末阅读原文直达 1.什么是redis? Redis 是一个基于内存的高性能key-v ...

  7. Redis的那些最常见面试问题[精校版]

    Address: https://www.cnblogs.com/Survivalist/p/8119891.html Name: 回首笑人间 1.什么是redis? Redis 是一个基于内存的高性 ...

  8. mysql数据库优化面试redis持久化_【大厂面试06期】谈一谈你对Redis持久化的理解?...

    Redis持久化是面试中经常会问到的问题,这里主要通过对以下几个问题进行分析,帮助大家了解Redis持久化的实现原理. 1.Redis持久化是什么? 2.Redis持久化有哪些策略?各自的实现原理是怎 ...

  9. Redis五大数据类型及常见命令

    1. Redis字符串(String) String是Redis最基本的value类型,一个key对应一个value. String类型是二进制安全的,所有Redis的String对象可以包含任何数据 ...

  10. Redis 基础 -- 数据类型实践案例(限制每个用户每分钟最多发起10次调用、微信接收消息顺序)

    文章目录 1. 数据类型实践案例 1.1 实践案例1:限制每个用户每分钟最多发起10次调用 1.2 实践案例2:微信接收消息顺序 1. 数据类型实践案例 1.1 实践案例1:限制每个用户每分钟最多发起 ...

最新文章

  1. Atitit.js模块化 atiImport 的新特性javascript import
  2. 最长回文子串 hihocode 1032 hdu 3068
  3. 浅谈一下这个所谓的特殊算法——动态规划?
  4. P3352-[ZJOI2016]线段树【dp】
  5. java实现动态验证码源代码——接受ajax的jsp
  6. Python正则表达式如何进行字符串替换
  7. vue开发手机页面闪烁_Vue页面加载闪烁问题的解决方法_婳祎_前端开发者
  8. MySQL Replication Error 处理一例
  9. Linux学习总结(13)——在阿里云的ubuntu上部署个人服务
  10. oracle12.2 redo 进程,【Oracle Database 12c新特性】TTnn TMON新的redo传输后台进程
  11. 每天只睡 4 小时!大佬们都这么拼吗?
  12. linux中quota信息查看,Linux quota命令参数及用法详解---Linux磁盘配额限制设置和查看命令...
  13. Python【每日一问】27
  14. 猴子数据让你深刻了解微信富媒体
  15. Android动画之属性动画
  16. 关于电子计算机的热点,电脑如何变热点?8款电脑wifi热点软件推荐
  17. 计算机硕士论文难写吗,写不出论文该放弃吗_硕士研究生论文速成法_硕士研究生论文 计算机...
  18. Cadence-Allegro(一)----安装
  19. 计算机可以怎样做游戏,如何制做游戏 怎么制做游戏
  20. 传统手绘建模与次世代建模技术与流程的区别,在未来游戏行业中作为建模人如何做出职业规划

热门文章

  1. MATLAB2018a解压文件损坏,文件解压失败与压缩文件文件已经损坏的解决办法
  2. Mac OS X磁盘重新分区后 BootCamp Windows启动项丢失
  3. java播放mp3/ogg/ape/flac音乐
  4. 工业相机和镜头主要参数解释
  5. 第七十五章 SQL命令 START TRANSACTION
  6. DOM操作简易年历案例
  7. excel白屏未响应_EXCEL2016经常卡死,白屏,经常使用过程中卡住,然后显示office正在尝试恢复...
  8. Navicat无法导入excel文件的异常处理
  9. 最全的smarty‘总结~耿兴隆老师著作,学子zyf献上
  10. 聚宽macd底背离_什么是MACD顶背离和底背离?