什么是 Redis?
Redis是基于C语言开发的开源数据库,与传统数据库不同,Redis数据存储在内存(in-memory database)中,读写速度非常快,在缓存方向上应用广泛。 此外,Redis 还存储 KV 键值对数据。 为了满足不同业务领域的需求,Redis内置了数据类型实现。 此外,Redis 还支持各种开箱即用的集群解决方案的事务和持久化。
为什么要使用 redis?
1.性能。
如果用户是第一次访问数据库中的某些数据,则该过程会较慢,毕竟是从硬盘中读取的。 但是如果。
如果用户访问的数据是高频数据,并且不经常变化,那么我们可以安全地存储用户访问的数据。
在缓存中。 也就是说,为了确保用户下次访问数据时,他们可以直接从缓存中获取数据。 操作缓存。
这是对内存的直接操作,所以它非常快。
2.高并发。
像MySQL这样的数据库,QPS在1W左右(4核8G),但通过Redis缓存很容易实现。
10W+,甚至高达30W+(在单机Redis的情况下,在Redis集群中会更高)。
qps(每秒查询):服务器每秒可以执行的查询数
可以看出,直接操作缓存可以维持的数据库请求数远大于直接访问数据库的数目,因此我们可以考虑这个数字。
数据库中的某些数据被传输到缓存中,因此用户的某些请求直接进入缓存,而无需经过数据库。 然后,我。
这也提高了整个系统的并发性。
除了缓存之外,Redis 还能做什么?
分布式锁:分布式锁是使用 Redis 制作分布式锁的常用方式。
速率限制:一般情况下,您可以使用 Redis + Lua 脚本来限制速率。
消息队列:Redis 内置的列表数据结构可以作为简单的队列使用。 redis 5.添加为 0 的流类型更适合消息队列。 它类似于 Kafka,具有主题和消费者组的概念,支持消息持久化和 ACK 机制。
复杂的业务场景:通过Redis和Redis扩展(如Redisson)提供的数据结构,我们可以轻松完成许多复杂的业务领域,例如通过Bitmap统计活跃用户,通过排序集维护排行榜。
Redis 常用的数据结构有哪些?
5 种基本数据结构:字符串、列表、集合hash (哈希), zset (有序集.
有 3 种特殊数据结构:hyperloglogs、bitmaps 和 geospatial。
redis为缓存数据设置过期时间有什么用?
通常,我们在设置保存的缓存数据时会设置过期时间。 为什么?
由于内存有限,如果缓存中的所有数据都一直保留,则几分钟后就会耗尽内存。
过期时间除了有助于缓解内存消耗之外,是否有其他用处?
在很多情况下,我们的业务需要一定的数据只存在于一定的时间段内,例如,我们的短信验证码可能只有1分。
用户登录的令牌可能仅在 1 天内有效。
如果使用传统数据库来处理,一般会自己判断过期时间,比较繁琐,性能也低很多。
您知道过期数据的删除策略吗?
如果设置了一批密钥仅存活 1 分钟,那么 Redis 如何在 1 分钟后删除密钥?
对于过期数据,有两种常用的删除策略。
1.延迟删除:仅在检索密钥时检查数据是否过期。 这是对 CPU 最友好的,但可能会导致太多。
期间键尚未删除。
2.定期删除:定时提取一批密钥,删除过期密钥。 此外,底层 Redis 将通过限制删除操作来强制执行删除操作。
行的长度和频率,以减少删除操作对 CPU 时间的影响。
常规删除对内存更友好,延迟删除对 CPU 更友好。 两者都各有千秋,所以Redis使用常规删除+懒惰。
性懒惰风格去除。
但是,仅通过设置密钥的到期时间,仍然存在问题。 因为可能仍然有定期删除和延迟删除,错过了很多过期时间。
钥匙。 这会导致大量过期的密钥在内存中累积,然后它们就耗尽了内存。
你了解Redis内存消除机制吗?
相关问题:MySQL中有2000W的数据,Redis只有20W的数据,如何保证Redis中的数据是热数据?
Redis 提供了六种数据消除策略:
1.volatile-lru:从已设置过期时间的数据集中选取最新的数据集。
删除使用最少的数据。
2.volatile-ttl:从数据集设置的过期时间中选择要过期的数据。
3.volatile-random:从数据集中选择已设置过期时间的任何数据。
4.alkeys-r:当没有足够的内存来容纳新写入的数据时,从密钥空间中删除最近使用最少的密钥(这是最常用的密钥)。
5.allkeys-random:从数据集中选择要删除的任何数据。
缓存穿透和缓存击穿有什么区别?
在缓存渗透中,请求的密钥既不存在于缓存中,也不存在于数据库中。
在缓存细分中,请求的密钥对应于热数据,该数据存在于数据库中,但不存在于缓存中(通常是因为缓存中的数据已过期)。
解决方案是什么?对于Redis服务不可用的情况:
1.使用Redis集群是为了避免单机出现问题,不能使用整个缓存服务。
2.限制以避免同时处理大量请求。
对于热点缓存失效:
1.设置不同的过期时间,例如随机设置缓存的过期时间。
2.缓存永不过期(不推荐,使用太差)。
3.设置二级缓存。