Redis入门

一.Redis(以键值对组织数据库)

作用:内存中存储数据

注:Redis是在分布式系统中才能发挥出真正的威力

二.浅谈分布式系统:

1.单机架构:

是什么:单机架构就是即有一台服务器,这台服务器负责所有工作

2.分布式系统:

是什么:多台服务器

3.负载均衡:

是什么:负责分均用户请求

作用:用算法平均公正讲用户请求分到多台应用服务器

4.数据库读写分离:

服务器遵从"一主(写)多从(读)"--------"从节点"需要从"主节点"同步数据

5.引入缓存(Redis)

数据分类:1.冷数据. 2.热点数据

即在内存存数据:遵循二八原则(20%的数据能支持80%的访问量)

6.数据库分表分类:

作用:应对更大的数据量

7.微服务:

作用:1.使用微服务,可便于功能的复用.

2.给不同服务进行不同部署

3.解决了团队协作与组织问题

三.环境搭建-redis客户端介绍

1.Redis是一个客户端-服务器结构的程序

四.Redis实战操作(Redis常见命令)

1.Redis中最核心的两个命令:get(查)和set(存)

Redis里存的是键值对:key-value

key是String类型,而value类型有多种(字符串,哈希表,列表,集合,有序集合)后续展开

2.Redis全局命令:就是能够搭配任意一个数据结构来使用的命令

1)keys命令:用来查询当前服务器上匹配的key

语法:keys pattern

例如:keys * (慎用)

注:在生产环境上,一般会禁止用keys命令,尤其是大杀器keys *

2)exists命令:判定key是否存在

语法:exists key key...

3)del命令:删除key

语法:del key key...

4)expire命令:给指定key设置过期时间,到时就删

语法:expire key seconds ,单位:秒(s)

pexpire key milliseconds ,单位:毫秒(ms)

5)ttl命令:查看指定key的过期时间

语法:ttl key ,一般与expire搭配使用,单位(s)

pttl key ,单位(ms)

返回值N: >=0-->还有N秒key过期

-1 -->key存在,永不过期(没设置过期时间)

-2 -->key不存在

6)type命令:返回key对应的value 的数据类型(五大数据类型)

语法:type key

⭐️3.Redis经典面试题

问:redis的key的过期策略是怎么实现的?

答:redis整体的策略有二:1.定期删除 2.惰性删除 (二者结合来进行)

1.定期删除:Redis 每隔一段时间,随机抽一批 key(包含过期与没过期)检查有没有过期,过期就删掉.

2.惰性删除:假设这个key已经到过期的时间了,但是暂时没有访问到这个过期的key,key仍存在,在后续,在下一次被访问到这个key时,检查到过期了,于是这次访问就会让redis服务器除法删除这个key的操作,同时返回一个null.(若仍需要这个key,则需手动取数据库里查再重新设置)

总结**:二者删过期的key的方式一样,都是检测到key过期了就删,只是删key的时机不一样**

4.定时器的实现原理:(了解)

定时器是在某个时间到达之后,执行指定任务的功能

1)基于优先级队列/堆

2)基于时间轮实现的定时器:把时间划分成很多歌小段,每个小段挂着一个链表,每个链表代表一个任务

注:redis并未采取这两种方案,redis的定时器就是他对key 的过期的策略(定期删除和惰性删除)

五.常用数据结构:

  1. key(string): "abcd" --->字符串(String)

:field value --->哈希表 (Hash)

:a,b,甲,乙 --->列表(List)

:苹果,香蕉,西瓜 --->集合(Set)

:99.0-关羽 98.0-刘备 97.0张飞--->有序集合

2.编码方式:同一个数据类型,背后可能的编码实现方式是不同的,会根据特定场景优化,比如根据value的大小,使用不同的编码方式

六.关于单线程模型:

单线程模型的工作流程:redis只使用一个线程,处理所有的命令请求

⭐️七.Redis必考面试题:

问:redis为什么相较于MySQL等数据库跟快?

答:

1.redis访问内存,数据库访问硬盘

2.redis核心功能,比数据库的核心功能跟简单

3.redis 是单线程模型,避免了不必要的线程竞争开销

4.处理网络IO时,使用了epoll这用的IO多路复用机制

(IO 多路复用机制就是单个线程借助内核,同时监听多个网络连接,有事件就处理、无事件就阻塞等待,实现单线程高并发,是 Redis 单线程能扛大量客户端的底层核心。)

相关推荐
今天也是元气满满的一天呢5 小时前
计算机底层存储、CPU 运行与程序执行原理详解
缓存
素材积累5 小时前
博士后出站来深可申请的项目补贴等
数据库
_1_77 小时前
SQL Server 磁盘满了 收缩日志
数据库·sqlserver
basketball6167 小时前
Redis基础:1. Redis介绍
数据库·redis·缓存
李可以量化7 小时前
成交量的终极量化策略:价量共振指标完整实现(下篇)
前端·数据库·人工智能
汽车仪器仪表相关领域8 小时前
南华 NHAT-610 柴油车排放测试仪 产品详解
数据库·功能测试·汽车·压力测试·可用性测试
我滴老baby10 小时前
工业时序数据实战:基于 DolphinDB 流计算引擎的实现与调优
数据库
睡不醒男孩03082310 小时前
TiDB数据库调研
数据库·tidb
珠***格10 小时前
实操落地|防逆流装置的安装规范、调试标准与故障处置
网络·数据库·人工智能·分布式·能源·边缘计算
Omics Pro11 小时前
3种蛋白结构输入方式!已申报欧洲发明专利
数据库·人工智能·python·机器学习·plotly