美文网首页
redis--内存型key-value型数据库

redis--内存型key-value型数据库

作者: 繁华落尽又是一年春 | 来源:发表于2018-09-01 13:53 被阅读0次

一、什么是redis?

redis是c语言编写的内存型key-value高性能的数据库,遵从BSD协议

二、redis有哪些优点?

1、性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

2、丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

3、原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

4、丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

三、为什么使用redis?redis的使用场景?

1.性能

    我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存。

2.并发

    在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问数据库。

四、redis的工作模式及原理

1、redis是单线程工作模型。

(一)纯内存操作

(二)单线程操作,避免了频繁的上下文切换

(三)采用了非阻塞I/O多路复用机制

2、redis的线程模型

五、redis的过期策略以及内存淘汰机制

redis采用的是定期删除+惰性删除策略。

定期删除+惰性删除是如何工作的呢?

定期删除,redis默认每个100ms检查,是否有过期的key,有过期key则删除。需要说明的是,redis不是每个100ms将所有的key检查一次,而是随机抽取进行检查(如果每隔100ms,全部key进行检查,redis岂不是卡死)。因此,如果只采用定期删除策略,会导致很多key到时间没有删除。

于是,惰性删除派上用场。也就是说在你获取某个key的时候,redis会检查一下,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除。

内存淘汰机制

在redis.conf中有一行配置

# maxmemory-policy volatile-lru

1)noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。应该没人用吧。

2)allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key。推荐使用,目前项目在用这种。

3)allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key。应该也没人用吧,你不删最少使用Key,去随机删。

4)volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。这种情况一般是把redis既当缓存,又做持久化存储的时候才用。不推荐

5)volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key。依然不推荐

6)volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。不推荐

ps:如果没有设置 expire 的key, 不满足先决条件(prerequisites); 那么 volatile-lru, volatile-random 和 volatile-ttl 策略的行为, 和 noeviction(不删除) 基本上一致。

链接:https://redis.io/documentation  redis文档

相关文章

  • redis--内存型key-value型数据库

    一、什么是redis? redis是c语言编写的内存型key-value高性能的数据库,遵从BSD协议 二、red...

  • Redis操作命令与知识点整合

    1.Redis概念 1.基于内存的key-value数据库(内存型数据库、非关系型数据库) 2.基于c语言编写的,...

  • Redis

    Remote DIctionary Server 是key-value非关系型数据库,通常运行在内存中。redis...

  • 非关系型数据库

    分类:键值型【key-value】(代表数据库软件:redis、riak) 文档型【document】(代表数据库...

  • redis总结

    Redis Redis是什么 开源免费,key-value的非关系型数据库 关系型数据库与非关系型数据库的区别? ...

  • redis基础

    简介: C语言编写、支持网络、可基于内存亦可持久化的日志型、key-value内存数据库,读写速度快, value...

  • Redis学习笔记-1

    Redis是什么,为什么这么快 Redis 是key-value型数据库 Redis是内存的数据库,这样可以避免磁...

  • Redis 持久化的方法

    介绍 Redis 做为一款内存型的 key-value 数据库,对于数据的永久保存只有将数据存放于硬盘中,而将内存...

  • redis笔记

    Redis redis简介 redis是一个基于key-value的内存型数据库。数据的存储方式是key-valu...

  • 面试官:你能说一下Redis的常见应用场景吗?

    1. 基础 内存数据库 Redis是一个key-value型的数据库(相比较之下,MySQL是关联数据库),也就是...

网友评论

      本文标题:redis--内存型key-value型数据库

      本文链接:https://www.haomeiwen.com/subject/nngywftx.html