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中:
- noeviction 当内存不足时,新写入操作会报错
- allkeys-lru 当内存不足时,在键空间中,移出最近最少使用的key,即 LRU(Least Recently Used)
- allkeys-random 当内存不足时,在键空间中,随机移除某个key
- volatile-lru 当内存不足时,在设置了过期时间的键空间中,移出最近最少使用的key
- volatile-random 当内存不足时,在设置了过期时间的键空间中,随机移除某个key
- volatile-ttl 当内存不足时,在设置了过期时间的键空间中,有更早过期时间的key优先移除
具体配置方法,在Redis.conf中我们可以进行配置
# maxmemory-policy allkeys-lru
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。