Redis基础知识综合(针对面试)
Redis基础知识
- 什么是Redis
答:Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。Remote Dictionary Server
- Redis支持集中数据类型
答:字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)
string 类型的值最大能存储 512MB 2) 每个 hash 可以存储 232 -1 键值对(40多亿)
- Redis有哪些特点?
答:1. Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
3.Redis支持数据的备份,即master-slave模式的数据备份
- Redis的优势有哪些?
答:1、性能极高 Redis能读的速度是110000次/s,写的速度是81000次/s 。
2、丰富的数据类型 Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
3、原子 Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。
4、丰富的特性 Redis还支持 publish/subscribe, 通知, key 过期等等特性。
- Redis除了做缓存还有什么作用?
7、手机验证码 8、限制网站访客访问频率 9、监控变量在事务执行时是否被修改 10、特定时间内的特定项目 |
1、最新列表
2、排行榜应用
3、计数器应用
4、数据排重
5、实时的反垃圾系统
6、可以实时发布/订阅消息系统
其他:
- redis相比memcached有哪些优势?
(1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
(2) redis的速度比memcached快很多
(3) redis可以持久化其数据
- Redis 发布订阅
Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
- Redis数据备份和恢复(这块儿研究下)
参考文献: https://www.cnblogs.com/deny/p/11531355.html
- RDB和AOF的优缺点
1、RDB持久化
优点:RDB文件紧凑,体积小,网络传输快,适合全量复制;恢复速度比AOF快很多。当然,与AOF相比,RDB最重要的优点之一是对性能的影响相对较小。
缺点:RDB文件的致命缺点在于其数据快照的持久化方式决定了必然做不到实时持久化,而在数据越来越重要的今天,数据的大量丢失很多时候是无法接受的,因此AOF持久化成为主流。此外,RDB文件需要满足特定格式,兼容性差(如老版本的Redis不兼容新版本的RDB文件)。
2、AOF持久化
与RDB持久化相对应,AOF的优点在于支持秒级持久化、兼容性好,缺点是文件大、恢复速度慢、对性能影响大。
AOP指定更新日志条件,共有 3 个可选值:
no:表示等操作系统进行数据缓存同步到磁盘(快)
always:表示每次更新操作后手动调用 fsync() 将数据写到磁盘(慢,安全)
everysec:表示每秒同步一次(折中,默认值)
十、Redis高级特性
1、redis中键的生存时间(expire)
redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它。
1)expire 设置生存时间(单位/秒) expire key seconds(秒)
2)ttl 查看键的剩余生存时间 ttl key
3)persist 取消生存时间 persist key
4)expireat [key] unix时间戳1351858600 EXPIREAT cache 1355292000
# 这个 key 将在 2012.12.12 过期
A、应用场景:
限时的优惠活动信息
网站数据缓存(对于一些需要定时更新的数据,例如:积分排行榜)
手机验证码
限制网站访客访问频率(例如:1分钟最多访问10次)
2、redis的事务(transaction)
redis中的事务是一组命令的集合。事务同命令一样都是redis的最小执行单元。一组事务中的命令要么都执行,要么都不执行。(例如:转账)
原理:
先将属于一个事务的命令发送给redis进行缓存,最后再让redis依次执行这些命令。
应用场景:
一组命令必须同时都执行,或者都不执行。
我们想要保证一组命令在执行的过程之中不被其它命令插入。
十一、Redis优化策略
redis优化1:精简键名和键值
键名:尽量精简,但是也不能单纯为了节约空间而使用不易理解的键名。
键值:对于键值的数量固定的话可以使用0和1这样的数字来表示,(例如:male/female、right/wrong)
当业务场景不需要数据持久化时,关闭所有的持久化方式可以获得最佳的性能
redis优化2:修改linux内核内存分配策略
redis优化3:关闭Transparent Huge Pages(THP);THP会造成内存锁影响redis性能,建议关闭
redis优化4:修改linux中TCP 监听的最大容纳数量
redis优化5:限制redis的内存大小
通过redis的info命令查看内存使用情况
redis优化6:Redis是个单线程模型,客户端过来的命令是按照顺序执行的,所以想要一次添加多条数据的时候可以使用管道,或者使用一次可以添加多条数据的命令,
集群(直连型)
其他信息
- Redis 的索引数据 就是 keys
- Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf
- Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念。
- 什么是NOSQL?其代表产品有哪些?
答:NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
代表:MongDB、 Redis、Memcache
- CAP理论值的是什么?
答:
Consistency(一致性), 数据一致更新,所有数据变动都是同步的
Availability(可用性), 好的响应性能
Partition tolerance(分区容错性) 可靠性;系统中任意信息的丢失或失败不会影响系统的继续运作。
定理:任何分布式系统只可同时满足二点,没法三者兼顾。
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,
因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:
CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。
而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。
所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。
说明:C:强一致性 A:高可用性 P:分布式容忍性
举例:CA:传统Oracle数据库;AP:大多数网站架构的选择;CP:Redis、Mongodb
- 去IOE化是什么意思?
ps:I 是指 IBM 的小型机,很贵的,好像好几万一台;O 是指 Oracle 数据库,也很贵的,好几万呢;M 是指 EMC 的存储设备,也很贵的
参考文献:
https://www.runoob.com/redis/redis-tutorial.html
https://blog.****.net/weixin_40623736/article/details/98097708
https://www.cnblogs.com/jasontec/p/9699242.html