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 单线程能扛大量客户端的底层核心。)

相关推荐
KaMeidebaby1 小时前
卡梅德生物技术快报|单 B 细胞抗体筛选服务:技术架构、流程实现与数据验证
前端·数据库·其他·百度·新浪微博
2401_867623981 小时前
如何管理应用锁_DBMS_LOCK申请自定义锁控制并发逻辑
jvm·数据库·python
yzs871 小时前
SQL Sever Pragmatic Bitmap过滤技术解析
数据库·sql
woxihuan1234561 小时前
SQL数据分析如何剔除极端异常值_配合窗口函数检测偏离度
jvm·数据库·python
2303_821287381 小时前
Go 中通过指针实现变量名的“间接引用”与原地修改
jvm·数据库·python
ClouGence2 小时前
TiCDC 够用吗?聊聊 TiDB 同步的几个关键问题
数据库·分布式·后端
iuvtsrt2 小时前
SQL如何高效提取大表前几行:分页查询与OFFSET优化
jvm·数据库·python
彳亍1012 小时前
如何用 Dask 替代 Pandas 实现高效 Excel 数据处理
jvm·数据库·python
音符犹如代码2 小时前
Docker 一键部署带有 TimescaleDB 插件的 PostgreSQL
java·运维·数据库·后端·docker·postgresql·容器