1、redis的数据类型有哪些?
String字符串 、 Hash 、List 、 Set 、Sorted Set
2、什么是Redis持久化?
持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失;
Redis提供了两种持久化方式:RDB(默认)和AOF
3、RDB和AOF的区别
ROB:将内存中的数据以快照的方式写进二进制文件中.优势是数据恢复快,方便备份,缺点是比较耗内存,可能会造成数据丢失。
A0F:以独立日志记录写命令方式存储日志,重启时再重新执行日志中记录的数据即可完成恢复。优势是数据安全,不容易丢数据,缺点占用存储空间大,数据恢复较。
4、AOF文件过大怎么处理?
可以重复执行aof命令----Bgrewriteaof,执行后会触发重写aof文件,会将aof中的重复命令进行压缩,即使 Bgrewriteaof 执行失败,也不会有任何数据丢失,因为旧的 AOF 文件在 Bgrewriteaof 成功之前不会被修改。
5、redis的事务
redis的事务先以MULTI开启事务,将多个命令入队到事务中,然后通过EXEC命令触发执行队伍中的所有命令,如果想取消事务可以执行discard命令;WATCH命令为redis事务提供check-and-set行为,可以监控一个或多个键,一旦其中有一个键被修改(删除),之后的事务就不会执行,监控一直持续到EXEC命令。
6、缓存雪崩
缓存数据的过期时间再同一时间内由于过期而失败,此时请求会全部进入数据库,这就是雪崩。
如何避免:对缓存的过期时间设置一个随机值,避免缓存在同一时间内过期。
7、缓存穿透
在查询一个一定不存在的数据时,缓存会不命中,如果从数据库中查询不到则不防护乳缓存,则每次请求实际都会进数据库进行查询,失去了缓存的意义。
如何避免:可以采用布隆过滤,也就是将数据库中所有可能存在的数据哈希放到一张足够大的bitmap中,一定不存在的数据就会被bitmap过滤掉,从而减轻数据库的压力。
8、redis通讯协议(RESP)
RESP是redis客户端和服务端之间使用的一种通讯协议;
特点:实现简单,快速解析,可读性好。
9、redis的架构模式,特点及问题
单机版:简单,但内存容量有限,处理能力有限,无法高可用;
主从复制:读写分离,数据相同,但无法保证高可用,没有解决master写的压力;
哨兵:可监控,可提醒,保证高可用,自动故障迁移;但主从模式切换需要时间,会丢数据,没有解决master写的压力。
10、redis分布式锁是如何实现的?
先拿setnx来争抢锁,抢到之后,在用expire给锁加一个过期时间防止锁忘记释放。
11、若在setnx之后执行expire之前进程意外crash或要重启维护了,那会怎么样?
set指令有非常复杂的参数,这个应该是可以同时把setnx和expire合成一条指令来用的
12、如何用redis做异步队列,有什么缺点?
一般使用list结构作为队列,rpush生产消息,lpop消费消息,当lpop没有消息的时候,要适当sleep一会再重试;
缺点:在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如rabbitMQ等。
13、如何生产一次消费多次?
使用pub/sub主题订阅者模式,可以实现1:N的消息队列。
14、redis有哪些适用场景?
session共享(单点登录)、页面缓存、队列、 排行榜/计数器、发布/订阅
15、redis如何做内存优化?
尽量使用敞列表,敞列表(是说表里存储的较少)使用的内存非常小,所以你应该尽可能的将你的数据模型抽象到一个敞列表中;比如你的web系统中有一个用户对象,不要为这个用户的名称、姓氏、邮箱、密码设置单独的key,而是应该把这个用户的所有信息存储到一张敞列表中。
16、redis主要有哪些功能?
哨兵(Sentinel)和复制(Replication)、事务、LUA脚本、持久化、集群
17、redis的优势
速度快,因为数据存在内存中;
支持丰富的数据类型;
支持事务,操作都是原子性;
丰富的特性:可用于缓存,消息,按key设置过期时间,过期后会自动删除。

Redis是一种内存数据存储系统,支持多种数据结构如字符串、哈希、列表、集合和有序集合。它提供持久化功能,包括RDB和AOF,以防止数据丢失。RDB是快照方式,而AOF记录写命令。AOF过大可通过`BGREWRITEAOF`压缩。Redis事务以MULTI开始,EXEC执行,DISCARD取消。缓存雪崩和穿透分别通过设置随机过期时间和使用布隆过滤器避免。Redis使用RESP协议,常见架构有单机、主从复制和哨兵,哨兵提供高可用性。分布式锁通过SETNX和EXPIRE实现,避免丢失可使用`SET`的复杂参数。Redis可作为异步队列,但消费者下线可能导致数据丢失。此外,Redis适用于session共享、缓存、队列等场景,内存优化考虑使用敞列表。其优势包括高速度、原子性事务和丰富数据类型。
1270

被折叠的 条评论
为什么被折叠?



