(1)为什么要用Redis做缓存

高并发:直接操作缓存能够承受的请求是远远大于直接访问数据库的,所以可以把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。

高性能:用户第一次访问数据库中的某些数据。因为是从硬盘上读取的,所以这个过程会比较慢。将该用户访问的数据存在缓存中,下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据。

(2)Redis常用应用场景有哪些?

1、缓存:Redis因其高效的内存操作和键过期功能,常被用于构建缓存系统,减轻数据库压力。应用程序可以将热点数据存储在Redis中,当数据被请求时,先从Redis缓存获取,如果缓存未命中再从数据库读取,有效提升了数据访问速度。

2、排行榜:Redis的有序集合(Sorted Set/Zset)的结构非常适合实现各类排行榜功能。通过有序集合,既能存储元素又能为其设置分数(如商品销售量、评论数等),进而根据分数对元素进行排序,轻松实现动态更新的排行榜应用。

3、计数器:对于需要频繁增删改查且要求实时性的计数场景(如浏览量、点击量统计等),Redis提供了原子性的INCR和DECR命令,能在高并发下快速进行计数,无需担心并发问题,大幅提高系统的性能和响应速度。

4、分布式会话:当系统扩展为分布式环境时,Redis可用于统一管理分布式环境下的用户会话信息,替代传统基于本地存储的session管理方式。通过Redis集中存储和管理session,能够更好地解决分布式环境下session共享的问题。(Session,用户与服务器之间一次连续的互动过程,从用户打开浏览器开始访问应用直至关闭浏览器结束。在这个过程中,服务器需要记住用户的相关状态信息,如用户身份、权限、个性化设置等,这些信息就被存储在一个称为Session的对象或数据结构中)

5、分布式锁:Redis的SETNX命令(Set if Not Exists)可用于实现分布式锁。在高并发场景下,通过Redis进行锁的获取和释放,比直接依赖数据库锁更加高效,能够有效控制对同一资源的并发访问,从而避免不同线程或进程在争夺同一资源时可能产生的冲突和不确定性。(分布式系统,是由多个独立的计算机通过网络互相连接起来,共同协作完成一个或多个任务的软件系统。)(分布式锁,是一种在分布式系统中用于同步和协调多个节点对共享资源访问控制的机制。分布式锁的作用在于模拟单机环境下的互斥锁效果,确保在分布式部署的应用中,任何时刻只有一个节点能够获得对某项共享资源的访问权和修改权,从而保证数据一致性、事务的隔离性和系统的正确性。)

6、社交网络:Redis丰富的数据结构如哈希(Hash)、集合(Set)等,特别适合处理社交网络中的关系数据,例如用户之间的关注关系、共同好友计算、点赞和踩等功能。通过Redis,可以快速进行此类数据的增删查改操作。

7、最新列表:Redis的列表(List)结构可用来维护最新列表。通过LPUSH将新内容ID添加到列表头部,结合LTRIM限制列表长度,始终保持列表中存储的是最新的N个ID,方便快捷地展示最新内容。

8、消息队列:虽然Redis不是专业级的消息中间件,但它提供了发布/订阅(Pub/Sub)和阻塞队列功能,能满足部分轻量级消息系统的需求。例如,在小型项目或者特定场景下,可以利用Redis实现简单的消息发布、订阅以及异步任务处理。但需要注意的是,对于大规模、高吞吐量的消息传递场景,更适合采用专业的消息队列中间件如RabbitMQ、Kafka等。