loviezhang 2018-10-08
简单来说 Redis 就是一个数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的,所以存写速度非常快,因此 Redis 被广泛应用于缓存方向。
另外,Redis 也经常用来做分布式锁。Redis 提供了多种数据类型来支持不同的业务场景。
除此之外,Redis 支持事务 、持久化、LUA 脚本、LRU 驱动事件、多种集群方案。
下面小编主要从以下几个方面来解读 Redis:
这里我们主要从“高性能”和“高并发”这两点来看待这个问题。
高性能
假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。
将该用户访问的数据存在缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。
操作缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变了之后,同步改变缓存中相应的数据即可!
高并发
直接操作缓存能够承受的请求是远远大于直接访问数据库的,所以我们可以考虑把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。
缓存分为本地缓存和分布式缓存。以 Java 为例,使用自带的 map 或者 guava 实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着 JVM 的销毁而结束。
并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。
使用 Redis 或 Memcached 之类的称为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。
缺点是需要保持 Redis 或 Memcached 服务的高可用,整个程序架构上较为复杂。
现在公司一般都是用redis来实现缓存了,为什么比较少用memcached呢?
Redis 和 Memcached 的区别:
来自网络上的一张对比图,这里分享给大家:
小编记得在最近的数据库排行榜,redis还是在前十名,这个本身就很说明问题了,真心推荐大家用redis来做缓存,也可以做集群。
PS:后期会分享更多底层的内容,感兴趣的朋友可以点下关注哦~