Redis 你该懂的点
前言
头一次用这种标题哈哈哈感觉有点。。反正这是一篇关于Redis相关知识点的Blog,面试中会问到的(比重会比较大哈),持续收集更新中
什么是Redis?
一般很少会问这个啦,一般都是问你在真实开发中,在哪儿用到了Redis,不过还是该知道的;
Redis是主流的键值对存储数据库(NoSQL),通常全部数据都存在内存中(为什么这么快的主要原因之一!),但也支持持久化策略,支持事务(资源允许的话,可以当作DB了),并且Redis支持丰富的数据类型(能够应对大部分场景),Redis是单线程的(没有线程安全问题,没有锁的烦恼)
Redis支持的数据类型
在了解Redis能做什么之前,我们先了解下Redis支持的数据类型
常用
- Redis Key
二进制安全的 Key
任何二进制序列都可以作为Key,从字符到JPEG文件的内容,可以存空字符
允许的最大值为 512 M - String 字符串
- List 列表
- Zest / Sorted Sets 有序集合
- Set 集合
- Hash 字典
进阶
- Bitmap / 位图
- HyperLogLogs / 计算唯一事物的概率数据结构
Redis 能做什么?
这是最实际的问题,也是面试中Redis的高频问题
缓存 / cache :
加快查询速度,存储热点数据
会话缓存,用户是否在线,通过时效性
记录在线人数,通过incr数据库存储 / Database
没有像 MySQL 等的I/O操作限制,支持事务,支持丰富的数据结构,不做DB存储就太可惜了吧
火热排行榜: Zset
社交列表: Set
全局唯一ID / 计数器(每个IP请求限制等等): String 的 incr信息队列 / message broker
Redis也是 Pub - Sub 服务器(小声bb,一般不会用到,有用到的,请用力喷我,让我清醒)
通过三个命令 SUBSCRIBE(订阅),UNSUBSCRIBE(取消订阅) 和 PUBLISH(发布信息) 实现了信息订阅发布服务
官方有个实践案例多用户高性能的Web聊天,使用EventMachine和Redis:链接
相比 memcached 有哪些优势?
面试中总会问同类型技术的比较,Spring和Spring Boot 的区别,MyBatis 和 Hibernate 的区别啦,Redis 一般都是和 NoSQL 比较
- memcached只支持字符,Redis 支持丰富的数据类型
- Redis 支持持久化数据,而memcached没有,只能存在内存中
- memcached能缓存的内容没有 Redis 那么灵活
默认 Key 最大是250字节,Value 是1MB,不过官方有说明 memcached 本身就是用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。
Redis 持久化策略
Redis 的持久化策略是面试中比较高频的问题,Redis 中提供了两种持久化策略,可以根据业务需求选择其中一种,也支持两个策略都开,当然也可以都禁用
- RDB持久化( Reids 在内存中的数据库记录定时 dump 到磁盘上的 RDB 持久化)
- AOF 持久化( Reids 的操作日志以追加的方式写入文件)
AOF
AOF 持久化以日志的形式记录 Redis 服务所处理的每一个写,删操作,以文本方式保存;Redis重启时,会优先选择 AOF 文件恢复数据,在服务器启动时逐条执行 AOF 日志里的命令
RDB
以指定的时间间隔执行数据集的时间点快照。
Redis将数据集的快照保存在磁盘上,名为dump.rdb的文件。如果数据集中至少有M个更改,则可以将Redis配置为生成一次快照,或者可以手动调用 SAVE 或 BGSAVE 命令。
下面是RDB持久化配置例子:
# 在redis配置文件中配置下面两行,满足其中一项就生成快照
save 60 1000 # 每分钟,如果有1000条写入命令,就生成快照
save 3600 10000 # 每小时,有1w条写入命令,就生成快照
复制代码
SAVE 和 BGSAVE 两个备份(持久化)命令
备份 redis 可以手动使用 SAVE 命令,执行 SAVE 命令会使用主进程执行快照操作,这意味着在 SAVE 的过程中,会阻塞主进程。
使用 BGSAVE 的话,redis 会 fork 出一个子进程来执行快照操作,而不影响主进程。为什么用 RDB 持久化策略
RDB 是 Redis 数据的一个非常紧凑的单文件时间点表示。RDB 文件非常适合备份。例如,您可能希望在最近24小时内每小时归档您的RDB文件。可以在发生灾难时轻松恢复数据集的不同时间段的数据
RDB非常适合灾难恢复,可以将单个压缩文件传输到远端数据中心
与AOF相比,RDB更适合 Redis 数据量大时,更快地重启 Redis(AOF 一条条写命令重新执行,数据量一大,能不慢吗)
参考文献
Redis官网
Redis:WiKi
memcached:GitHub
转载于:https://juejin.im/post/5d5ab07ce51d4561ee1bdf6b
Redis 你该懂的点相关推荐
- 中小型企业Web开发框架
基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录).内容管理.支付中心.用户管理(支持第三方登录).微信平台.存储系统.配 ...
- 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构zhen项目
原项目链接:https://github.com/shuzheng/zheng 目前看过做完整的项目,大家一起学习一下,详情请点击原项目链接的地址 前言 zheng项目创建于2016年10月4日,正在 ...
- 臻识相机对接/华夏相机对接/千熠相机对接/海康相机对接
本人从事车牌识别开发已经有三四年了.对接的相机品牌有 臻识,千熠,华夏,海康. 这些相机的 开闸,显示屏控制 等都是自己一个个摸索出来的,很大卖硬件的根本不懂代码,官方技术人员不会鸟一般开发者了,所以 ...
- 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构---权限管理系统
原文链接: https://github.com/shuzheng/zheng 安利一个GitHub上的项目,见原文链接. 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构, ...
- CSDN日报190805:一线城市or二线城市,该如何抉择?
CSDN日报来啦!给大家奉上当日最新鲜的技术干货! 热门项目|前端技术清单 学习文章的知识往往是碎片化的.而前端涉及到的面很广,这些知识如果不进行有效梳理,则无法相互串联.形成体系.因此,我结合工作体 ...
- 一文读懂Redis常见对象类型的底层数据结构
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 转自:伍 ...
- 程序员,想要彻底弄懂Redis,这15点你一定要明白~(纯干货)
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:Java实现QQ登录和微博登录个人原创+1博客:点击前往,查看更多 作者:耿直的小码农 来源:https://s ...
- 读懂 Redis 源码,我总结了这7点心得
作者|Magic Kaito 来源|水滴与银弹 阅读本文大约需要 8 分钟. 你好,我是 Kaito. 用了这么久的 Redis,也翻了很多次源码,经常有人问我到底怎么读 Redis 源码. 一提到读 ...
- 分布式锁 哨兵模式_手撕redis分布式锁,隔壁张小帅都看懂了!
前言 上一篇老猫和小伙伴们分享了为什么要使用分布式锁以及分布式锁的实现思路原理,目前我们主要采用第三方的组件作为分布式锁的工具.上一篇运用了Mysql中的select -for update实现了分布 ...
最新文章
- Eclipse基本使用
- nginx在CDN加速或使用SLB代理后,获取真实IP,做并发访问限制的方法
- Hello World, S/4HANA for Customer Management 1.0
- neo4j 查询同一节点的两个上级_WhatRoute for Mac(互联网流量诊断查询工具)
- Linux使用cmake编译项目,如何使用cmake在linux中构建Qt项目(How to build Qt project in linux with cmake)...
- c语言自动取款机贴吧,求助 简单atm机的循环操作
- app运行租用服务器,app租用服务器
- Veritas Backup Exec 21还原备份
- 计算机素质教育论文800,关于素质教育的作文800字
- kernel logo 生成方法
- Gossip算法详解
- TCP粘包问题以及解决方法
- 基础//页面布局——三栏布局1
- 【网安神器篇】——enum4linux枚举工具
- 抠图算法:经典的贝叶斯抠图
- 实现图书增删改查和分页显示图书信息
- Linux进程优先级和nice值
- 魔道祖师 (作者:墨香铜臭)mobi格式下载
- VBA基础知识整理(文件操作)
- pyqt_利用ScrollBar控制图片位置(实现滑动效果)
热门文章
- python字典排序取最值总结
- 15 redis-分布式锁
- 报错:org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
- AHOI2009 中国象棋
- salesforce 零基础学习(四十二)简单文件上传下载
- [开源].NET数据库访问框架Chloe.ORM
- 某程序的bug是什么意思?
- SQL Server 2005 Service Broker 初探
- 数组运用_1-19 编程练习
- IOS APP配置.plist汇总(转自coolweather )