redis的底层原理-redis的核心(7-2-48)

更新时间:2024-12-01 分类:Redis 浏览量:2

Redis本文目录一览:

  • 1、redis八种淘汰策略是什么
  • 2、redis是多线程的
  • 3、redis是多线程的吗

redis八种淘汰策略是什么

redis.conf中的maxmemory参数配置了redis的最大内存,maxmemory-policy配置了内存淘汰策略,当redis内存达到最大后,会根据内存淘汰策略淘汰部分数据。

然后在选到的key中选择.volatile-random:从已设置过期时间的哈希表(server.db[i].expires)中随机挑选key淘汰掉allkey-random:从所有的key的哈希表server.db[i].dict)中随机挑数据淘汰。

当Redis内存超出物理内存限制时,内存数据会开始和磁盘产生频繁的交换,使得性能急剧下降。

Redis 内存淘汰机制有以下几种策略:noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。(Redis 默认策略)allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 Key。

内存淘汰管理机制Memory Management 当内存占满之后,redis提供缓存淘汰机制。

redis是多线程的

1、redis不是多线程。redis是单线程的原因在于redis用单个CPU绑定一块内存的数据,然后针对这块内存的数据进行多次读写的时候,都是在一个CPU上完成的。

2、Redis采用的是单进程单线程模型的KV数据库,由C语言编写。官方提供的数据是可以达到100000+的qps。这个数据不比采用单进程多线程的同样基于内存的KV数据库Memcached差。

3、Redis 0的多线程并未将事件处理改成多线程,而是在I/O上。

redis是多线程的吗

1、redis不是多线程。redis是单线程的原因在于redis用单个CPU绑定一块内存的数据,然后针对这块内存的数据进行多次读写的时候,都是在一个CPU上完成的。

2、Redis在处理客户端请求时采用单线程模型,但在某些特定功能(如持久化操作)上采用了多线程。Redis在处理客户端的请求时,采用的是单线程模型。

3、Redis采用的是单进程单线程模型的KV数据库,由C语言编写。官方提供的数据是可以达到100000+的qps。这个数据不比采用单进程多线程的同样基于内存的KV数据库Memcached差。

4、Redis的高并发和快速原因redis是基于内存的,内存的读写速度非常快;redis是单线程的,省去了很多上下文切换线程的时间;redis使用多路复用技术,可以处理并发的连接。

5、Redis 0的多线程并未将事件处理改成多线程,而是在I/O上。