redis是什么

Remote Dictionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI 、C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

这里引用了Redis教程里对Redis的描述,很官方,但是很标准。

Redis具有丰富的特性,比如可以用作分布式锁;可以持久化数据;可以用作消息队列、排行榜、计数器;还支持publish/subscribe、通知、key过期等等。当我们要用中间件来解决实际问题的时候,Redis总能发挥出自己的用处。

redis为什么这么快?

Redis单机qps(每秒的并发)可以达到110000次/s,写的速度是81000次/s。主要概括为4个方面:

  • 绝大部分请求是纯粹的内存操作,非常快速
  • 使用了很多查找操作都特别快的数据结构进行数据存储(String、List、Hash、set、zset),Redis中的数据结构是专门设计的。如HashMap,查找、插入的时间复杂度都是O(1)
  • 采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁、释放锁操作,没有因为可能出现死锁而导致的性能消耗
  • 用到了非阻塞I/O多路复用机制

redis内存淘汰机制

redis的内存淘汰机制一共有6中:

  1. noeviction 当内存不足时,新写入操作会报错
  2. allkeys-lru 当内存不足时,在键空间中,移出最近最少使用的key,即 LRU(Least Recently Used)
  3. allkeys-random 当内存不足时,在键空间中,随机移除某个key
  4. volatile-lru 当内存不足时,在设置了过期时间的键空间中,移出最近最少使用的key
  5. volatile-random 当内存不足时,在设置了过期时间的键空间中,随机移除某个key
  6. volatile-ttl 当内存不足时,在设置了过期时间的键空间中,有更早过期时间的key优先移除

具体配置方法,在Redis.conf中我们可以进行配置

# maxmemory-policy allkeys-lru

skyarthur
1.6k 声望1.3k 粉丝

技术支持业务,技术增强业务,技术驱动业务