redis大全

redis简介

redis就是一个数据库,不过他与传统的数据库不同的是redis的数据存在内存中,所以读写速度非常快,因此,redis被广泛应用与缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。

为什么要用 redis/为什么要用缓存

主要从“高性能”和“高并发”来看待这个问题
高性能:

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

高并发:

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

Redis大全

为什么要用 redis 而不用 map/guava 做缓存?

1.Redis 可以用几十 G 内存来做缓存,Map 不行,一般 JVM 也就分几个 G 数据就够大了

2.Redis 的缓存可以持久化,Map 是内存对象,程序一重启数据就没了

3.Redis 可以实现分布式的缓存,Map 只能存在创建它的程序里

4.Redis 可以处理每秒百万级的并发,是专业的缓存服务,Map 只是一个普通的对象

5.Redis 缓存有过期机制,Map 本身无此功能

6.Redis 有丰富的 API,Map 就简单太多了

redis的线程模型

redis内部是使用文件事件处理器。文件事件处理器是一个单线程的,所以redis是单线程的模型。

文件事件处理器的结构包含 4 个部分:
多个 socket
IO 多路复用程序
文件事件分派器
事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)

多个 socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序会监听多个 socket,会将 socket 产生的事件放入队列中排队,事件分派器每次从队列中取出一个事件,把该事件交给对应的事件处理器进行处理。

redis 和 memcached 的区别
1.redis支持更丰富的数据类型(支持更复杂的应用场景):Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。memcache支持简单的数据类型,String。
2.Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memecache把数据全部存在内存之中。
3.集群模式:memcached没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据;但是 redis 目前是原生支持 cluster 模式的.
4.Memcached是多线程,非阻塞IO复用的网络模型;Redis使用单线程的多路 IO 复用模型。
Redis大全

相关文章:

  • 2022-12-23
  • 2021-07-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-05
猜你喜欢
  • 2021-11-23
  • 2021-04-02
  • 2022-02-08
  • 2021-11-09
  • 2022-12-23
相关资源
相似解决方案