Redis-初步认识Redis

一.简介

1、究竟什么是Reids? Redis是基于key-value的NoSql数据库,他的数据类型有五种,包括string,hash,list,set,zset。它具有一下几个特点:速度快、支持主从复制、支持事务、支持持久化、支持分布式和高可用等等特点。
2、我们程序元在日常中有什么场景会使用到Redis? (1)我们经常拿Redis用作缓存(2)用来做排行榜系统(3)也可以用来做计数器,类似的用来统计播放阅读数等等(4)可以用来做消息中间件,Redis具有发布订阅的功能

二.分析和使用Redis里面的数据类型

1、Redis一共有五种的数据类型: string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)。这些只是Redis对外部的数据类型,他对应的每一种数据类型至少都有两种的内部编码,使用object encoding可以查看使用的是哪一种内部编码具体的如下图:
在这里插入图片描述
2、为什么需要有这么多种的内部编码? 因为有一下两个原因:(1)使用内部编码,可以在对外的数据类型不变的情况下,修改和优化内部编码
(2)使用不同的内部编码是为了适应不同的场景。
3、string(字符串)
(1)简介:string类型是Redis最基本数据类型,他是其他几种数据类型的基础,string类型可以用来存储字符串(短字符串、复杂的长长字符串)、数字(整型、浮点型)、二进制等。但是他的最大值不能查过512M
(2)可以拿来当做计数器使用:incr key,有3种的情况,不是整数的时候会报错,是整数的时候,返回自增后的数,当键值不存在的时候,返回的是1
(3)内部编码:内部编码有3中:int(8个字节的长整型)、emdstr(小于等于39个字符的时候使用)、raw(大于39个字符的时候使用)
(4)使用场景:可以用来做缓存、可以拿来做计数器
4、hash(哈希)
(1)简介:在Redis里面,hash类型的的值本身又是键值对,形式为field-value
(2)hash的内部编码:当哈希类型元素的个数小于hash-max-ziplist-entries(默认512),且所有值都小于hash-max-ziplist-value(默认64个字节)时,使用ziplist、当无法满足条件一的时候,就会转换为hashtable,
(3)使用场景:哈希类型是稀疏的,可以用来存储具有多个竖向的对象。
5、list(列表)
(1)简介:列表是用来存储有序的数据的,一个列表最多可以存2的32次方-1个数据。在Redis里面,可以在两端进行插入和弹出,也可以获取指定下表的元素。
(2)内部编码:当list类型元素的个数小于list-max-ziplist-entries(默认512),且所有值都小于list-max-ziplist-value(默认64个字节)时,使用ziplist、无法满足条件一的时候,就会转而使用linkedlist
(3)使用场景:做消息队列了。
6、set(集合)
(1)简介:集合使用存储多个元素的,但是他是不允许里面有重复的元素出现的。而且集合里面的元素是无序的。
(2)内部编码:当集合类型元素都是整数且个数小于set-max-ziplist-entries(默认512),使用inset,不满足第一种情况下使用hashtable
7、zset(有序集合)
(1)简介:他既保留了集合不允许元素重复的特性,同时又添加了排序的新特性。他给每一个元素设置一个分数,作为排序的依据
(2)内部编码:当zset类型元素的个数小于zset-max-ziplist-entries(默认128),且所有值都小于zset-max-ziplist-value(默认64个字节)时,使用ziplist、当不满足于条件一的时候,使用内部编码为skiplist.
(3)使用场景:有序集合是根据分数来进行排序的,可以用来做排行榜比较多。

三.分析Redis的架构

1、Redis使用了什么样的架构? Redis使用的架构为单线程、I/O多路复用的架构模型。
2、因为是单线程的架构,所以当客服端发送命令道Redis服务器端的时候,命令并不会马上被执行,而是先到一个队列里面排队进行等候。
3、为什么使用单线程的架构还能这么快? 原因有一下几点:
(1)Redis是一个内存型的数据库,他一切的高读写都是建立这个基础之上的。
(2)Redis使用的I/O多路复用的模型,非阻塞的I/O
(3)Redis使用单线程,他很好的避免了线程的切换带来的开销
4、使用单线程的架构,带来的确定是什么? 当一个命令执行很久的时候,会阻塞其他命令执行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值