Redis基础,认识Redis
为什么要选择Redis,对比Memcache和Redis的优缺点?你们为啥用Redis?
Memcache
先来看看 Memcache 的特点:
Memcache 处理请求时使用多线程异步 IO 的方式,可以合理利用 CPU 多核的优势,性能非常优[……]
先来看看 Memcache 的特点:
Memcache 处理请求时使用多线程异步 IO 的方式,可以合理利用 CPU 多核的优势,性能非常优[……]
分布式锁在以下实际场景中经常需要使用:
缓存同步:在分布式系统中,多个节点共享同一个缓存。当缓存失效时,多个节点可能会同时触发对后端数据源的请求。使用分布式锁可以保证只有一个节点去加载数据到缓存中,避免缓存击穿和缓存雪崩问题,提高系统性能和稳[……]
Redis 的 Bitmap 数据类型是一种位图数据结构,可以表示大量的二进制位,并对这些位进行高效的位操作。Bitmap 在许多实际场景中都有广泛的应用,以下是几个常见的使用场景:
用户在线状态:
Bitmap 可以用于记录用户的在线状态,[……]
消息队列是一种用于在应用程序之间传输数据的软件模式。它允许不同的应用程序通过在共享队列中存储和检索消息来实现异步通信。
消息队列通常包括三个主要组件:消息生产者、消息队列和消息消费者。消息生产者负责将消息发送到消息队列,而消息消费者则从消息队列中接收消息并进行[……]
传家宝级八股文问题:Redis为什么这么快?
简单回答:
1. 基于内存实现
2. 高效的数据结构(动态字符串(SDS)、跳表(skiplist)、哈希表(hashtable)、整数数组(intset)、快速列表(quicklist)、紧凑列表(listpack)、基数树(stream)等[……]
问题:
如何在秒杀环境下保证库存不卖超?
如何在保证整点开抢的优惠券能不多不少的发放完毕?
解决方案:
1. 使用MySQL中的库存字段进行扣减。在高并发的情况下由于业务代码的处理延迟,可能导致卖超,如果数据库还有读写分离,那就更加灾难了。
2. 将库存数据读取到内存中加锁进行[……]
HyperLogLog 是一种基数估算算法, 并非redis独有。
目的是做基数统计,故不是集合,不会保存元数据,只记录数量而不是数值。
消耗空间极小,支持输入非常大体积的数据量。
假[……]
上古面试题:让你实现一个附近的人功能,你有什么方案?
“附近的人” 功能生活中是比较常用的,像外卖app附近的餐厅,共享单车app里附近的车辆。既然常用面试被问的概率就很大,实现方法有很多种,MySQL8之后的空间索引,MongoDB的2d索引,Redis3.2之后的GEO等都可以很高[……]
Redis一个开源的,是高性能的 key-value 数据库,单线程,所有操作均为原子操作。可以用来进行高性能的内存缓存,例如高度重复的数据库查询、秒杀活动中的库存防超卖、消息队列、数据基数统计、距离数据索引/查询等等。本文先从基本的数据结构入手,进[……]