什么样的数据适合放入Redis?

sql执行耗时特别久,且结果不频繁变动的数据,适合放入Redis。

Redis是单线程的,为什么会这么快?

  • 纯内存操作
  • 单线程操作,避免频繁的上下文切换
  • 采用了非阻塞I/O多路复用机制

Redis数据类型及使用场景

Redis只能存5G数据,可你写了10G,如何删除多余的5G数据?

Redis采用定期删除+惰性删除策略:

定期删除,redis每过一段时间(默认100ms)进行随机抽取检查,有过期key则删除;

惰性删除,放任过期键不管,在每次获取键时检查是否过期,过期则删除。

采用定期删除+惰性删除策略其实也会出现其他问题

如果定期删除没删除掉key,也没有及时去获取key(及惰性删除也没生效),那么该策略就不灵了。

补救措施是采用淘汰机制:

redis.conf中有一个配置 #maxmemory-policy allkeys-random

划线位置就是内存淘汰策略,有如下配置:

noeviction:当内存不足以容纳新写入数据时,新写入操作报错。

allkeys-lru:当内存不足以容纳新写入数据时,移除最近最少使用的Key(推荐)

allkeys-random:当内存不足以容纳新写入数据时,随机移除某个key(不推荐)

Redis数据结构和使用场景,redis内存淘汰策略的更多相关文章

  1. Redis的内存淘汰策略(八)

    一:Redis的AOF是什么? 以日志的形式来记录每个写操作(读操作不记录),将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构 ...

  2. 面试官:Redis 过期删除策略和内存淘汰策略有什么区别?

    作者:小林coding 计算机八股文网站:https://xiaolincoding.com 大家好,我是小林. Redis 的「内存淘汰策略」和「过期删除策略」,很多小伙伴容易混淆,这两个机制虽然都 ...

  3. Redis数据结构以及应用场景

    1. Redis数据结构以及应用场景 1.1. Memcache VS Redis 1.1.1. 选Memcache理由 系统业务以KV的缓存为主,数据量.并发业务量大,memcache较为合适 me ...

  4. redis六种内存淘汰策略学习

    当客户端会发起需要更多内存的申请,Redis检查内存使用情况,如果实际使用内存已经超出maxmemory,Redis就会根据用户配置的淘汰策略选出无用的key; 当前Redis3.0版本支持的淘汰策略 ...

  5. redis过期策略、内存淘汰策略、持久化方式、主从复制

    原文链接:https://blog.csdn.net/a745233700/article/details/85413179 一.Redis的过期策略以及内存淘汰策略:1.过期策略:定期删除+惰性删除 ...

  6. 选择合适Redis数据结构,减少80%的内存占用

    redis作为目前最流行的nosql缓存数据库,凭借其优异的性能.丰富的数据结构已成为大部分场景下首选的缓存工具. 由于redis是一个纯内存的数据库,在存放大量数据时,内存的占用将会非常可观.那么在 ...

  7. LRU工程实现源码(一):Redis 内存淘汰策略

    目录 内存淘汰是什么?什么时候内存淘汰 内存淘汰策略 Redis中的LRU淘汰算法 源码剖析 第一步:什么时候开始淘汰key 配置读取 检查时机 getMaxmemoryState 第二步:淘汰哪些k ...

  8. Redis的过期策略和内存淘汰策略(转)

    Redis的过期策略 我们都知道,Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间.Redis的过期策略就是指当Redis中缓存的key过期了,Redis如何处理. ...

  9. Redis的过期策略和内存淘汰策略

    Redis的过期策略:通常有三种,Redis中同时使用惰性过期和定期过期两种过期策略组合. 定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除.该策略可以立即清除过期的数据 ...

随机推荐

  1. 第2课第6节_Java面向对象编程_包和权限_P【学习笔记】

    摘要:韦东山android视频学习笔记  1.使用package定义编译的时候存放的位置 package a.b.c.d; public class Package { public static v ...

  2. mysql union all limit的使用

    To apply ORDER BY or LIMIT to an individual SELECT, place the clause inside the parentheses that enc ...

  3. Char.IsDigit与Char.IsNumber的区别

    需要判断Char是否为数字,查看了下MSDN,发现有三种方法: Char.IsDigit (aChar)              指示指定字符串中位于指定位置处的字符是否属于十进制数字类别 Char ...

  4. Tomcat Response encode

    Character Encoding - Apache Tomcat - Apache Software Foundation https://cwiki.apache.org/confluence/ ...

  5. Oracle:Pivot 转多列并包含多个名称

    SELECT * FROM (SELECT l.DISTRIBUTOR_ID, d.SKU_CODE, d.WH_CODE, d.ORDER_PACKAGES, d.PRICE, d.YEARLY|| ...

  6. 【Git】.git/FETCH_HEAD: Permission denied 的解决方法

    背景: 用webhook去拉取代码.报错 .git/FETCH_HEAD: Permission denied 原因分析:.git/FETCH_HEAD的这个文件所属组和所属主是root权限,而我用w ...

  7. Excel如何输入负数

    一般红字发票很少开,以前都是单独把红字发票摘出来放到一行里,然后加减一下,前段时间有个客户因为普票无法报销,改要了专票,因为是电子发票,无法作废,开了张红字.虽然红字很少开,但是想着百度一下如何在ex ...

  8. [LeetCode] 803. Bricks Falling When Hit 打击砖块掉落

    We have a grid of 1s and 0s; the 1s in a cell represent bricks.  A brick will not drop if and only i ...

  9. 思维导图Xmind8

    Xmind——一款强大的思维导图工具,方便记忆和理清思路,同时思维导图特殊的记录方式也便于捕捉跳跃思考. 五款思维导图软件:MindManager.iMindMap.XMind.MindMapper. ...

  10. Python 安装 MySQL-python ImportError: No module named 'ConfigParser'

    系统: CentOS-6.4-x86_64 Python : Python 3.4.5 和 Python 3.5.2 安装 MySQL-python ,结果出错: ImportError: No mo ...