简单来说redis就是一个使用c语言开发的数据库,不过与传统的数据库不同的是,Redis的数据是存在内存中的,也就是说它是内存数据库,所以读写速度非常快。
另外,Redis除了做缓存外,Redis也经常被用来做分布式锁,甚至是消息队列。
Redis提供了多种数据类型来支持不同的业务场景。Redis还支持事务、持久化、Lua脚本、多种集群方案。

分布式缓存的话,使用的比较多的主要是Memcached和Redis。不过,现在基本没有看多还有项目在用Memcached来做缓存,都是直接使用Redis.

Memcached是分布式缓存最开始兴起的那会,比较常用的。后来,随着Redis的发展,大家慢慢都开始使用更为强大的Redis。

分布式缓存主要解决的问题是单机缓存的容量容易受服务器限制并且无法保证通用的信息。因为,本地缓存只在当前服务器下有效,比如如果你部署了两个相同的服务,他们两者之间的缓存数据是无法共同的。

现在公司基本都是用Redis来实现缓存,而且Redis自身也越来越强大了!
共同点:

  • 都是基于内存的数据库,一般都用来当缓存使用。
  • 都有过期策略
  • 两者的性能都非常高

区别:

  • Redis支持更加丰富的数据类型(支持更复杂的应用场景)。Redis不仅仅支持简单的K/V类型数据,同时还提供list,zet,zset,hash等数据结构的存储。Memcached只支持最简单k/v数据类型。
  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载使用,而Memcached只能把数据存储在内存中。
  • Redis有灾难恢复机制。因为可以把缓存中的数据持久化到磁盘中。
  • Redis在服务器内存使用完之后,可以将不用的数据放到磁盘上。但是Memcached在服务器内存用完之后,就会直接报异常。
  • Memcached没有原生集群模式,需要依靠客户端来实现往集群中分片写入数据;但是 Redis 目前是原生支持 cluster 模式的.
  • Memcached 是多线程,非阻塞 IO 复用的网络模型;Redis 使用单线程的多路 IO 复用模型。 (Redis 6.0 引入了多线程 IO )
  • Redis 支持发布订阅模型、Lua 脚本、事务等功能,而 Memcached 不支持。并且,Redis 支持更多的编程语言。
  • Memcached过期数据的删除策略只用了惰性删除,而 Redis 同时使用了惰性删除与定期删除。


简单来说就是:

1.如果用户请求的数据在缓存中就直接返回。
2.缓存中不存在的话就看数据库中是否存在。
3.数据库中存在的话就更新缓存中的数据。
4.数据库中不存在的话就返回空数据。

简单,来说使用缓存主要是为了提升用户体验以及应对更多的用户。

下面我们主要从“高性能”和“高并发”这两点来看待这个问题。

**高性能 : **
对照上面

版权声明:本文为xhj928675426原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xhj928675426/p/14475413.html