面试篇之Redis

什么是Redis?

  1. Redis是完全免费开源的,遵守BSD(Berkeley Software Distribution)协议,是一个高性能的key-value数据库
  2. Redis支持数据的持久化(如何实现数据的持久化?请点击),可以将内存中的数据保存到磁盘中,重启的时候可以再次加载使用。
  3. Redis支持数据的备份,即master-slave模式的数据备份。

Redis的优势?

  • 性能极高,Redis能读的速度是110000次/s,写的速度是81000次/s。
  • 丰富的数据类型,Redis支持二进制案例的Strings、Lists、Hashes、Sets及Ordered Sets数据类型操作。
  • 原子,Redis所有的操作都是原子性(要么成功执行,失败则完全不执行)的。单个操作是原子性的,多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性,Redis还支持publish/subscribe,通知,key过期等等特性。

Redis的数据类型?

Redis支持五种数据类型,string,list,set,hash,zset(有序集合)。

Redis与Memcached的区别?

  • Memcached的读写速度高于Redis。
  • Redis可以对数据进行持久化。
  • Memcached不支持复制,Redis支持主从复制。
  • Redis的密钥长度最大为2GB,而Memcached的密钥长度最大为250字节。
  • Redis使用单线程的多路IO复用面模型,Memcached使用多线程的非阻塞IO模式。
  • Memcached只支持简单的数据类型,Redis有复杂的数据类型。

一个字符串类型的值能存储的最大容量是多少?

512M。

Redis持久化机制是什么?各自的优缺点?

Redis提供两种持久化机制:RDB和AOF
1.RDB(Redis DataBase)持久化方式:记录Redis数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替代上次持久化的文件,达到数据恢复。

优点:
1.只有一个文件dump.rdb,方便持久化。
2.容灾性好,一个文件可以保存到安全的磁盘。
3.性能最大化,fork子进程来完成写操作,主进程继续处理命令,保证了Redis的高性能。
4.相对于数据集大时,比AOF启动效率更高。
缺点:
1.数据安全性低,RDB是间隔一段时间进行数据的持久化,如果此时Redis发生故障,会发生数据丢失。

2.AOF(Append-Only File)持久化方式:所有的命令行记录以Redis命令请求协议的格式完全持久化存储为aof文件。

优点:
1.数据安全,aof持久化可以配置appendfsync属性,设置为always,即每进行一次命令操作就记录到aof文件。
2.通过append模式写文件,即使中途服务器宕机,可以通过 redis-check-aof --fix aof文件 指令对原来的aof文件进行修复,确保数据的一致性。
缺点:
1.AOF文件比RDB文件大,且恢复速度慢。
2.数据集大的时候,比RDB启动效率低。

为什么要使用Redis做缓存?

  • 从高并发角度:
    直接操作缓存能够承受的请求是远远大于直接访问数据库的,所以可以考虑将数据库中的部分请求转移到缓存中去,降低数据库的压力。
  • 从高性能角度:
    用户第一次访问数据库中的某些数据,因为是从硬盘上读取的所以过程会比较慢,将该用户访问的数据存到缓存中,下一次再访问就可以直接从缓存中拿,速度较快。

Redis的常见应用场景有哪些?

1.缓存
合理的利用缓存不仅能提升网站访问速度,还能大大降低数据库的压力。除此之外,Redis还提供了键过期功能,也提供了灵活的键淘汰策略,所以,现在Redis用在缓存的场合非常多。
2.排行榜
Redis提供的有序集合数据结构能实现各种复杂的排行榜应用,如京东的月销量榜单、商品按时间的上新排行榜等。
3.计数器
计数器功能应用很广泛,如商品的浏览量、视频的播放数等。为了保证数据的实时性,每次浏览都需要+1,高并发时如果每次都请求到数据库中去无疑是种挑战和压力。Redis提供的incr命令可以实现计数器功能,内存操作,性能非常好。
4.社交网络
点赞、踩、关注/被关注、共同好友等是社交网站的基本功能,访问量通常来说会比较大,而且传统型的关系型数据库不适合存储这种类型的数据。Redis提供的哈希、集合等数据结构能很方便地实现这些功能。如微博的共同好友,通过Redis的set能够方便得出。
5.消息系统
消息队列是大型网站必用中间件,如ActiveMQ、RabbitMQ、Kafka等流行的消息队列中间件,主要用户服务解耦、流量削峰及异步处理实时性低的业务。Redis提供了发布/订阅及阻塞队列功能,能实现一个简单的消息队列系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值