扫码关注公众号

java开源框架之redis
09-29
391观看
01

Redis是什么?

Redis是一个key-value存储系统,它支持存储的value类型相对更多,包括string、list、set、zset(sortedset--有序集合)和hash。这些数据结构都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中,Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

来自:学习方法类-学习技术的方法、渠道或平台
02

Redis为什么是单线程的?

1.代码更清晰,处理逻辑更简单;2.不用考虑各种锁的问题,不存在加锁和释放锁的操作,没有因为可能出现死锁而导致的性能问题;3.不存在多线程切换而消耗CPU;4.无法发挥多核CPU的优势,但可以采用多开几个Redis实例来完善;

来自:数据库基础-数据库数据类型
03

使用 Redis 有哪些好处?

1、速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O1)2、支持丰富数据类型,支持string,list,set,Zset,hash等 3、支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行4、丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

来自:数据库基础-数据库数据类型
04

Redis 常见性能问题和解决方案

1、Master最好不要写内存快照,如果Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务2、如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次。3、为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内。4、尽量避免在压力很大的主库上增加从库。5、主从复制不要用图状结构,用单向链表结构更为稳定,即:Master<-Slave1<-Slave2<-Slave3…这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。

来自:数据库基础-数据库数据类型
05

redis 过期键的删除策略?

1、定时删除:在设置键的过期时间的同时,创建一个定时器timer.让定时器在键的过期时间来临时,立即执行对键的删除操作。2、惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键。3、定期删除:每隔一段时间程序就对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定。

来自:数据库基础-数据库数据类型
06

Redis主从同步如何实现

思想:只有一台主服务器,只负责写入数据,不负责读取数据。多台从服务器,不写入数据,只负责同步主服务器的数据,提供外部程序读取。主服务器写入数据后,将命令发送到从服务器,使主从数据同步。应用程序可以读取某一台从服务器的数据,负载均衡。当某些从服务器瘫痪时,系统影响不大。当主服务器瘫痪时,选举某一台从服务器成为主服务器。步骤:(1)无论如何要先保证主服务器的开启,开启主服务器后,从服务器通过命令或者重启配置项可以同步到主服务器。(2)当从服务器启动时,读取同步的配置,根据配置决定是否使用当前数据响应客户端,然后发送SYNC命令。当主服务器接收到同步命令的时候,就会执行bgsave命令备份数据,但是主服务器并不会拒绝客户端的读/写,而是将来自客户端的写命令写入缓冲区。从服务器未收到主服务器备份的快照文件的时候,会根据其配置决定使用现有数据响应客户端或者拒绝。(备注:bgsave命令,是一个异步保存命令,也就是系统将启动另外一个进程,把Redis的数据保存到对应的数据文件中。bgsave和save命令最大的不同是它不会阻塞客户端的写入,也就是在执行bgsave的时候,允许客户端继续读/写Redis)(3)当bgsave命令被主服务器执行完后,开始向从服务器发送备份文件,这个时候从服务器就会丢弃所有现有的数据,开始载入发送的快照文件。(4)当主服务器发送完备份文件后,从服务器就会执行这些写入命令。此时就会把bgsave执行之后的缓存区内的写命令也发送给从服务器,从服务完成备份文件解析,就开始像往常一样,接收命令,等待命令写入。(5)缓冲区的命令发送完成后,当主服务器执行一条写命令后,就同时往从服务器发送同步写入命令,从服务器就和主服务器保持一致了。而此时当从服务器完成主服务器发送的缓冲区命令后,就开始等待主服务器的命令了。

来自:redis-redis
课程
专栏
【校招VIP】SpringBoot如何整合Redis?
csdn
redis
整合
【校招VIP】一口气说出 Redis 16 个常见使用场景
知乎
redis
【校招VIP】Redis高性能、高可用、可扩展的生产级架构如何设计?
高频面试题
知乎
redis
开源框架-redis-redis
3专栏
1课程
6 试题