美文网首页
Redis知识点整理

Redis知识点整理

作者: 咖啡机an | 来源:发表于2020-04-11 00:27 被阅读0次

知识点

Redis 是什么?

Redis 是 C 语言开发的一个开源的高性能键值对(key-value)的 NoSQL数据库,可以用作数据库、缓存、消息中间件等。


redis核心对象.png

丰富的数据类型,支持字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。支持数据持久化。主从复制,哨兵,高可用。可以用作分布式锁。可以作为消息中间件使用,支持发布订阅。

Redis 为什么快?

  • 使用单线程模型能带来更好的可维护性,方便开发和调试,避免线程上下文切换;
  • I/O多路复用;
  • Redis 服务中运行的绝大多数操作的性能瓶颈都不是 CPU;。

redis中的多线程

对于 Redis 中的一些超大键值对,几十 MB 或者几百 MB 的数据并不能在几毫秒的时间内处理完,Redis 可能会需要在释放内存空间上消耗较多的时间,这些操作就会阻塞待处理的任务,影响 Redis 服务处理请求的 PC和可用性。然而释放内存空间的工作其实可以由后台线程异步进行处理,这也就是 UNLINK 命令的实现原理,它只会将键从元数据中删除,真正的删除操作会在后台异步执行。

redis的淘汰策略(设置过期时间集合 未设置过期时间集合)

noeviction: 不删除策略, 达到最大内存限制时, 如果需要更多内存, 直接返回错误信息。
allkeys-lru: 所有key通用; 优先删除最近最少使用(less recently used ,LRU) 的 key。
volatile-lru: 只限于设置了 expire 的部分; 优先删除最近最少使用(less recently used ,LRU) 的 key。
allkeys-random: 所有key通用; 随机删除一部分 key。
volatile-random: 只限于设置了 expire 的部分; 随机删除一部分 key。
volatile-ttl: 只限于设置了 expire 的部分; 优先删除剩余时间(time to live,TTL) 短的key。

redis删除策略

1,定时删除:在设置键的过期时间的同时,创建一个timer,让定时器在键的过期时间到达时,立即执行对键的删除操作。
优缺点:对内存友好,但是对cpu时间不友好。
2,定期删除:每隔一段时间就对数据库进行一次检查,删除里面的过期键。
优缺点:选择一个好的策略来设置删除操作的时长和执行频率。
3,惰性删除:获取键时,如果过期就删除,如果没过期就返回该键。
优缺点:对cpu时间友好,对内存不友好。

redis缓存一致性

注:强一致性同步成本太高,如果追求强一致,那么没必要用缓存了,直接查数据库即可。通常考虑的,都是最终一致性
方案一
通过key的过期时间,mysql更新时,redis不更新。
这种方式实现简单,但不一致的时间会很长。如果读请求非常频繁,且过期时间比较长,则会产生很多长期的脏数据。
方案二
在方案一的基础上扩展,通过key的过期时间兜底,并且,在更新mysql时,同时更新redis。
方案三
针对方案二的同步写redis进行优化,增加消息队列,将redis更新操作交给kafka,由消息队列保证可靠性,再搭建一个消费服务,来异步更新redis。
方案四
通过订阅binlog来更新redis,把我们搭建的消费服务,作为mysql的一个slave,订阅binlog,解析出更新内容,再更新到redis。

相关文章

  • Redis知识点整理

    优势 性能极高 – 内存操作,单线程,非阻塞I/O多路复用机制 丰富的数据类型 – String、List、Has...

  • Redis知识点整理

      Redis无论在实际运用中和面试提问中都十分重要,本文将带大家一起整理一下Redis的重要知识点和常用方法。 ...

  • Redis知识点整理

    知识点 Redis 是什么? Redis 是 C 语言开发的一个开源的高性能键值对(key-value)的 NoS...

  • Redis知识点整理

    1、zset实现?

  • 你可能不知道的redis

    前言 以下是针对redis的知识点整理,用于复习,主要以罗列为主,详细具体讲解可以参考书《Redis设计与实现》,...

  • redis知识点整理(3)redis进阶

    上两篇文章从为什么用NoSQL,NoSQL分类简单概述,redis的基本情况(单线程),redis五大数据类型和三...

  • Redis分片知识点整理

    上图是Redis分片话题的笔记整理:Partitioning: how to split data among m...

  • 每周阅读(8/22/2016)

    Redis消息队列性能测试及知识点整理还是Redis入门 从优化性能到应对峰值流量:微博缓存服务化的设计与实践微博...

  • Redis教程(二)——Redis的持久化

    ok,今天我们来整理下Redis持久化这个知识点,Redis的持久化对于分布式缓存来说是必不可少的一个部分,试想,...

  • Redis 学习笔记

    Redis 学习笔记 原文:硬核!16000 字 Redis 面试知识点总结,建议收藏! Redis 基础知识 R...

网友评论

      本文标题:Redis知识点整理

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