目录
常规问题
- 什么是redis,为什么要使用它
redis是一种支持key-value等多种数据结构的存储系统,提供字符串、哈希、列表、队列、集合结构直接存取,可以在多个应用程序之间共享数据,支持持久化存储和数据备份,可以在应用程序和数据库之间起到缓存的作用。Redis 还提供了其他功能,如发布/订阅、事务、Lua 脚本等。Redis 的优点是速度快,支持复杂的数据结构,可以用于各种数据存储和消息传递的需求。
redis有点:
1、 读写性能优异;
2、数据类型丰富
3、原子性;
4、持久化
5、发布订阅
6、分布式
- redis一般有哪些使用场景
1、热点数据的缓存
2、限时业务的运用
3、计数器相关问题(想想h名单计数限流)
4、分布式锁(这个需要再了解一下)
5、延时操作(监听key的实效)
6、排行榜相关问题(sortedset)
7、简单队列
- redis为什么快
数据类型和数据结构
- redis有哪些数据类型
字符串、列表、set集合、hash散列、Zset有序集合
特殊类型:HyperLogLogs 基数统计、Bitmap位存储、geospatial地理位置
- redis数据类型有哪些命令
- 谈谈redis的对象机制(redisObject)
- redis数据类型有哪些底层数据结构
- 为什么要设计sds?
sds中文名“简单动态字符串”,simple dynamic string 是一种存储二进制数据的一种结构,具有动态扩容的特点;具体来说,有以下5个优点:
1. 常数复杂度获取字符串长度;(时间复杂度为O(1),通过strlen key命令可以获取key的字符长度)
2. 杜绝缓存溢出;(SDS数据类型,在进行字符修改的时候,会首先根据记录的len属性检查内存空间是否满足需求,如果不满足,会进行相应的空间扩展,然后进行修改操作,所以不会出现缓冲区溢出)
3.减少修改字符串的内存重新分配次数;
1)策略1:空间预分配,对字符串进行空间扩展的时候,扩展的内存会比实际需要的多,这样可以减少连续执行字符串增长操作所需的内存重新分配次数;
2)策略2:惰性空间释放。
4.二进制安全;
5.兼容部分C字符串函数。
- 一个字符串类型的值能存储最大容量是多少?512M
- 为什么会设计Stream
- Redis 消息队列 Stream_redis stream_激流丶的博客-CSDN博客
- Stream用在什么样场景
- 消息ID的设计是否考虑了时间回拨的问题
持久化和内存
- Redis 的持久化机制是什么?各自的优缺点?一般怎么用?
持久化机制包括 RDB持久化 和 AOF.
RDB中文名:快照,RDB持久化就是把当前进程数据生成快照保存到磁盘上的过程,由于是某一时刻的快照,那么快照中的值要早于或者等于内存中的值。包含“手动触发”和“自动触发”两种方式。
优点:
1. RDB是某个时间节点的快照,默认使用LZF算法(需要了解一下)进行压缩,压缩后的文件体积远远小于内存大小,适用于备份】全量复制等场景;
2.Redis加载RDB文件恢复数据要远远快于AOF方式;
缺点:
1.RDB实时性较差,无法做到秒级的持久化;
2.每次调用bgsave都需要fork子进程,fork子进程属于重量级操作,频繁执行成本较高;
3.RDB文件是二进制,没有可读性;
4.版本兼容RDB文件问题
- Redis 过期键的删除策略有哪些
- Redis 内存淘汰算法有哪些
- Redis的内存用完了会发生什么? 如果达到设置的上限,Redis的写命令会返回错误信息(但是读命令还可以正常返回。)或者你可以配置内存淘汰机制,当Redis达到内存上限时会冲刷掉旧的内容。
- Redis如何做内存优化?
- Redis key 的过期时间和永久有效分别怎么设置?
EXPIRE 和 PERSIST 命令
- Redis 中的管道有什么用?
一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应,这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。
这就是管道(pipelining),是一种几十年来广泛使用的技术。例如许多 POP3 协议已经实现支持这个功能,大大加快了从服务器下载新邮件的过程。
# 事务
著作权归@pdai所有 原文链接:https://pdai.tech/md/db/nosql-redis/db-redis-z-mianshi.html
著作权归@pdai所有 原文链接:https://pdai.tech/md/db/nosql-redis/db-redis-z-mianshi.html