Redis入门

why

使用redis,主要是从两个角度去考虑:性能和并发。当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis。因此,这个问题主要从性能和并发两个角度去答。
性能
(一)纯内存操作
(二)单线程操作

并发
在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问数据库。

what

数据类型

(一)String
这个其实没啥好说的,最常规的set/get操作,value可以是String也可以是数字。
在这里插入图片描述
(二)hash
这里value存放的是结构化的对象,比较方便的就是操作其中的某个字段。
在这里插入图片描述
(三)list
使用List的数据结构,可以做简单的消息队列的功能。
在这里插入图片描述
(四)set
因为set堆放的是一堆不重复值的集合。所以可以做全局去重的功能。
在这里插入图片描述
(五)sorted set
sorted set多了一个权重参数score,集合中的元素能够按score进行排列。
在这里插入图片描述

(一)纯内存操作
避免大量访问数据库,减少直接读取磁盘数据,redis 将数据储存在内存里面,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度快;

(二)单线程操作
避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;

(三)采用了非阻塞I/O多路复用机制
IO多路复用模型是建立在内核提供的多路分离函数select基础之上的,使用select函数可以避免同步非阻塞IO模型中轮询等待的问题。
在这里插入图片描述
举个栗子:你是一个老师,你需要检查30个学生的作业
第一种:从1到30一次检查作业,如果其中某个学生没有做完,需要等待其做完后再向后检查作业
第二种:再找其他老师,一个老师检查一个学生
第三种:你在讲台上坐着,哪个学生做完作业之后,举手示意,你去检查,其他没有检查的学生依次排队等待检查(多路复用)

持久化

为什么要做持久化?
因为redis会存在内存里面,而存在内存文件中的数据会因为断点而丢失数据,所以需要做持久化
一、RDB
对内存中的数据做快照,保存的是数据
RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。
二、AOF
对每一条命令进行保存,保存的是命令,对比RDB明显需要保存的内容变少了

内存回收

随着redis的使用,可用内存也会一直减少,Redi s 也会因为内存不足而产生错误 , 也可能因为回收过久而导致系统长期的停顿,因此掌握执行回收策略十分有必要。
过期删除分为两种
消极:被访问时发现过期了,删除
积极:轮询删除,随机抽取20个进行删除。。

导图

在这里插入图片描述
一起交流,共同进步!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值