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

   

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐