暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Redis底层实现 1

叶归林 2021-12-09
870

1.前言

redis支持多种数据结构(String,List,Set,Zset,Hash),其中redis的命令不区分大小写,但是Key严格区分大小写。

2.string数据类型

string是基本类型,可以存储任何数据。value最大长度512M。

  • 常用命令

  • 常用功能

  1. 一般存储数据使用

  2. setnx可以用于实现分布式锁

  3. mset和mget这种批量处理命令,能够极大的提高操作效率。

    因为一次命令执行所需要的时间=1次网络传输时间+1次命令执行时间,n个命令耗时=n次网络传输时间+n次命令执行时间,而批量处理命令会将n次网络时间缩减为1次网络时间,也就是1次网络传输时间+n次命令处理时间。
    但是需要注意的是,Redis是单线程的,如果一次批量处理命令过多,会造成Redis阻塞或网络拥塞(传输数据量大)。
  4. 计数

      由于Redis单线程的特点,我们不用考虑并发造成计数不准的问题,通过 incrby 命令,我们可以正确的得到我们想要的结果。

  5. 限制次数

      比如登录次数校验,错误超过三次5分钟内就不让登录了,每次登录设置key自增一次,并设置该key的过期时间为5分钟后,每次登录检查一下该key的值来进行限制登录。

3.Hash数据类型

hash 是一个键值对集合,是一个 string 类型的 key和 value 的映射表,key 还是key,但是value是一个键值对(key-value)。对应Java里面的 Map<String,Map<String,Object>> 集合

  • 常用命令

  • 常用功能

  1. 缓存一些需要经常查询的数据,查询复杂度O(1)

4.List数据类型

简单列表,有序,可重复。可以作为队列和栈使用。底层是链表实现(下章节介绍)

  • 常用命令

  • 常用功能

  1. 栈  lpush+lpop

  2. 队列 lpush+rpop

  3. 有限集合 lpush+ltrim

  4. 消息队列 lpush+rpop

5.Set数据结构

无序列表,不重复

  • 常用命令

  • 常用功能

  1. 大数据交集取共同爱好,习惯

6.Zset数据结构

Set的有序版本

  • 常用命令

  • 常用功能

  1. 排行榜等

7.系统相关命令

8.针对KEY操作的命令

9.结语

介绍一个命令,用来查询这五种数据结构之下,在底层的数据结构实现。

OBJECT ENCODING   key  

留言板

文章转载自叶归林,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论