春招修仙系列 —— Redis基础

在这里插入图片描述

概述:

Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,Redis支持很多特性,例如可以将内存的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能等。

数据类型:

Redis中键的类型只能为字符串
Redis中值得类型可以为:字符串,集合,有序集合,散列表(使用两个哈希表,便于扩容操作,采用渐进的方式),列表(双端队列)

Redis的使用场景:

1 会话缓存(单点登录)2 缓存(缓存热点数据)3 计数器
4 查找表 5 消息队列 6 分布式锁

Redus快的主要原因

  • 完全基于内存
  • 数据结构简单,操作也很简单
  • 使用多路I/O复用模型
  • 单进程、单线程

数据的淘汰策略:

  • volatile - lru :从已设置过期时间的数据集中,选取最近最少未使用的数据淘汰。
  • volatile-ttl:从已设置过期时间的数据集中,选取将要过期的数据淘汰
  • volatile-random: 从已设置过期时间的数据集中淘汰任意数据
  • allKeys-lru:从所有数据集中选择最近最少未使用的数据淘汰
  • alKeys-random:从所有数据集中任意选取数据进行淘汰
  • noeviction: 禁止驱逐数据
  • lfu 通过统计访问的频率,将访问频率最少的数据淘汰(redis 4.0新增)

数据持久化策略:

1 RDB:
将某个时间点的所有数据都放到硬盘上,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本,如果发生故障,将丢失最后一次创建快照之后的数据,如果数据量很大,保存快照的时间会很长
2 AOF:
将写命令添加到AOF文件的末尾。
对硬盘的文件进行写入的时候,写入的内容会先被存储到缓冲区,然后由操作系统决定什么时候将该内容同步到硬盘,有三种频率选择:

  • always 每个写命令都同步
  • everysec 每秒同步一次,系统崩溃时只会丢失一秒左右的数据,并且redis每秒执行一次同步对服务器性能几乎没有任何影响
  • no 让操作系统决定何时同步

假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?

可以使用keys指令,问题是redis是单线程的,keys指令会阻塞一段时间,线上业务会受到影响,可以使用scan,scan指令以无阻塞的提取出指定模式的key列表

猜你喜欢

转载自blog.csdn.net/Kirito19970409/article/details/86571108
今日推荐