rdb

redis(一)内部机制的介绍和启动过程

允我心安 提交于 2020-12-06 18:18:11
redis(一)内部机制的介绍和启动过程 redis的基本介绍 redis服务端 redis客户端 redis的持久化 redis中的文件事件和时间时间 redis的启动过程 redis的基本介绍 redis是一种非关系型数据库,采用=key,value的形式来存储数据。key是二进制数据,对于value的数据类型,redis支持string、hash、list、set、sorted set五种类型。 对于单个redis实例,内部使用多线程通信,但是对外采用RESP单线程通信协议 ,在TCP层通过二进制方式进行传输数据,单线程采用同步的请求方式 。 redis服务端 redis服务端内部结构为struct redisServer和struct redisDb。redis中默认16个数据库,可以通过配置来修改数据库数量,每一个数据库对应一个redisDb。数据库之间的数据是相互独立的。查询数据的时候,可以通过select指定具体某个数据库。 1 struct redisServer { 2 int dbnum; // 服务器的数据库数量,值由服务器配置的“databases”选项决定,默认为16 3 redisDb *db; // 数组,保存着服务器中的所有数据库 4 5 list *clients; // 一个链表,保存了所有客户端状态,每个链表元素都是“redisClient

跟我一起学Redis之Redis持久化必知必会

◇◆丶佛笑我妖孽 提交于 2020-12-06 12:08:07
前言 Redis是出了名的速度快,那是因为在内存中进行数据存储和操作;如果仅仅是在内存中进行数据存储,那就会导致以下问题: •数据随进程退出而消失:当服务器断电或Redis Server进程退出时,内存肯定随之释放,最后数据也会丢失;可能有些小伙伴认为只是作为缓存,数据没有了,重新从数据库中读取放在里面即可,试想,如果是高并发场景,数据库岂不是压力很大;•重要数据无法恢复:数据丢失之后无法进行恢复,对于一些重要的数据,只是存在Redis中,而没有存在关系型数据库,如果数据丢失便不可恢复;比如刷礼品排行榜,如果数据丢失,用户肯定不愿意的; 对于Redis持久化在工作中和面试过程中是一个很重要的技术点,必用必考,接下来详细说说Redis持久化; 正文 Redis针对数据持久化有两种方案,如下: • RDB(Redis DataBase) :快照形式,即指定 时间间隔 将Redis内存中的快照数据保存在物理磁盘上,数据保存在*.rdb文件中,以二进制的形式进行存储,恢复数据直接加载即可;• AOF(Append Only File) :日志形式,即将每条 写命令 以append-only模式记录在*.aof文件中,不能修改文件,只能进行追加;后续恢复数据自动执行日志文件中的命令即可恢复数据;•混合就是RDB和AOF的结合;以上方式都可以通过配置文件轻松搞定,来,咱们先从RDB开始;

redis基本操作和 过期时间设置以及持久化方案

冷暖自知 提交于 2020-12-06 02:37:45
Redis是NOSQL阵营中的一种数据库,主要用于存储缓存 五大数据类型:字符串(String)、散列(hash)、列表(list)、集合(set)、有序集合(SortedSett 、zset) String:    set key value    键值对存储值       get key      通过键获取值       keys *         查看所有键       incr key      key的值加1,只能为数值       deci key      key的值减1,只能为数值       del key       根据键删除键值对 Hash    hset   key  key  value  key-map,map中为key-value         例如:hset 1605 01 zhangsan  1605班里01号张三       hget  key    通过key获取Map       keys *     查看所有大key       hget   1605  01  通过两个key获取值       hkeys  1605  通过一个key获取小key       hvals  1605  通过小key获取值       hgetall  1605  获取所有key-value       hdel  1605  01 

Redis,就是这么朴实无华

泪湿孤枕 提交于 2020-12-05 02:55:12
http://xjjdog.cn 对200+原创文章进行了细致的分类,阅读更流畅,欢迎收藏。 原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。任何不保留此声明的转载都是抄袭。 Redis是2009年发布的,到今天已经超过10岁了。作为必备技能之一,关于它也有聊不完的话题。本文中的任何一个点,都可以展开,完成一篇中等规模的文章。 交流和面试时,你需要用最精准的语言进行描述,那么本文比较适合你。 redis能力: 1 0W/s QPS (redis-benchmark) 1w+ 长链接 (netstat / ss) 最复杂的Zset 6kw数据 写入1k/s 读取5k/s 平均耗时5ms 持久化 (rdb) 1. 基本概览 学习一门新语言,重要的是掌握它的基本数据结构,以及这些数据结构的API。redis的这些数据结构,就类似一门语言。 Redis数据结构 常用5种,一共10种。面试时一般回答5种即可,但其他5种是加分项。 String 字符串 Hash 字典 List 列表 Set 集合 ZSet 有序集合。性能参考: 《redis的zset有多牛?请把耳朵递过来》 Pubsub 发布订阅 (不推荐使用,坑很多) Bitmap 位图 GEO 地理位置 (有限使用,附近的人) Stream 流(5.0) (与Kafka非常像) Hyperloglog

Redis系列(四):Redis持久化和主从复制原理

血红的双手。 提交于 2020-12-04 17:00:25
一、持久化   所谓的持久化就是把内存中的数据写到磁盘中去,防止服务宕机后内存数据丢失。Redis4.0之前提供了两种持久化方式:RDB(默认) 和AOF,Redis4.x之后新增了一种混合持久化(本文所用的Redis版本是 redis‐5.0.2 )   1、RDB   RDB是Redis Database缩写,在默认情况下,Redis将内存数据库快照保存在名字为dump.rdb的二进制文件中。可以对Redis进行设置,让它在 “ N秒内至少有M个键值改动 ” 这一条件被满足时,自动保存一次数据。比如下图,900秒内有1个键值或者300秒内有10个键值或者60秒内有10000个键值改动,自动保存一次数据;关闭RDB只需要将所有的save保存策略注释掉即可。   还可以手动执行命令生成RDB快照,进入Redis客户端执行命令save或bgsave可以生成dump.rdb文件,每次命令执行都会将所有Redis内存快照到一个新的rdb文件里,并覆盖原有rdb快照文件。save是同步命令,bgsave是异步命令,bgsave会从redis主进程fork(fork()是linux函数)出一个子进程专门用来生成rdb快照文件。Redis配置自动生成rdb文件后台使用的是bgsave方式。 save与bgsave对比 命令 save bgsave IO类型 同步 异步

Redis大全这些你都会吗

橙三吉。 提交于 2020-12-03 15:26:01
Redis总结 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 支持数据格式 key-value类型的数据,同时还提供list,set,zset,hash、sorted set等数据结构的存储 分布式锁实现 setnx 命令来实现,通过lua脚本来保证加锁是原子性的。 持久化方式 Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File) 1.RDB RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。 优点: 适合大规模的数据恢复。 如果业务对数据完整性和一致性要求不高,RDB是很好的选择。 缺点: 数据的完整性和一致性不高,因为RDB可能在最后一次备份时宕机了。 备份时占用内存,因为Redis 在备份时会独立创建一个子进程,将数据写入到一个临时文件(此时内存中的数据是原来的两倍哦),最后再将临时文件替换之前的备份文件。所以Redis 的持久化和数据的恢复要选择在夜深人静的时候执行是比较合理的。 2.AOF Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性)

被Redis虐的日子,太惨了...

有些话、适合烂在心里 提交于 2020-12-03 14:38:26
互联网面试题更新了!随便呈上几道,看看大家能否答出来: redis为什么是key,value的,为什么不是支持SQL的? redis是多线程还是单线程?(回答单线程的请回吧,为什么请回,请往下看) redis的持久化开启了RDB和AOF下重启服务是如何加载的?(10个人9个回答错误) redis如果做集群该如何规划?AKF/CAP如何实现和设计? 10万用户一年365天的登录情况如何用redis存储,并快速检索任意时间窗内的活跃用户? redis的5种Value类型你用过几种,能举例吗? 100万并发4G数据,10万并发400G数据,如何设计Redis存储方式? 有几道题果真有难度啊... 不要小看一个redis 任何一家公司的招聘信息都包含一段redis的需求。 不要小看一个redis 你能在互联网搜索到的很多文章都讲错了,面试会有很多坑。 不要小看一个redis 搞懂它是你通向分布式、微服务的第一扇大门。 不要小看一个redis 它让你看到这里,是的,马士兵教育准备的一套【直播】课《redis终极训练营》。 很多内容是全网首发,现场与老师互动答疑。 限时福利,本号粉丝免费加入 马士兵教育是由马士兵老师创办 他,99年清华毕业,从程序员干到CTO,一直致力于推动Java、大数据、AI生根中国,其一套java基础广受欢迎,有千万次播放学习。 开营时间:12月2日-12月3日 晚20

Redis大全这些你都会吗

徘徊边缘 提交于 2020-12-03 14:34:09
原创 java金融 java金融 3月7日 Redis总结 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 支持数据格式 key-value类型的数据,同时还提供list,set,zset,hash、sorted set等数据结构的存储 分布式锁实现 setnx 命令来实现,通过lua脚本来保证加锁是原子性的。 持久化方式 Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File) 1.RDB RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。 优点 : 适合大规模的数据恢复。 如果业务对数据完整性和一致性要求不高,RDB是很好的选择。 缺点 : 数据的完整性和一致性不高,因为RDB可能在最后一次备份时宕机了。 备份时占用内存,因为Redis 在备份时会独立创建一个子进程,将数据写入到一个临时文件(此时内存中的数据是原来的两倍哦),最后再将临时文件替换之前的备份文件。所以Redis 的持久化和数据的恢复要选择在夜深人静的时候执行是比较合理的。 2.AOF Redis 默认不开启。它的出现是为了弥补RDB的不足

Redis基础用法、高级特性与性能调优以及缓存穿透等分析

时光怂恿深爱的人放手 提交于 2020-12-02 10:25:00
目录 一、Redis介绍 二、Redis数据结构及常用的命令 三、Redis持久化策略选择 四、内存管理与数据淘汰机制 五、Redis过期策略及实现原理 1 说明 2 设置过期时间 3 三种过期策略 4 Redis采用的过期策略 六 Redis事务实现 七 Redis分布式锁实现 八 缓存穿透、缓存击穿、缓存雪崩、热点数据失效 1、缓存穿透 2、缓存击穿 3、缓存雪崩 4、解决热点数据集中失效问题 九 Redis如何快速删除1.2亿+指定前缀的key 1 事故产生原因 2 原因分析 3 解决方案 4 如何执行删除 参考: 回到顶部 一、Redis介绍   Redis是一个开源的,基于内存的结构化数据存储媒介,可以作为数据库、缓存服务或消息服务使用。Redis支持多种数据结构,包括字符串、哈希表、链表、集合、有序集合、位图、Hyperloglogs等。Redis具备LRU淘汰、事务实现、以及不同级别的硬盘持久化等能力,并且支持副本集和通过Redis Sentinel(哨兵)实现的高可用方案,同时还支持通过Redis Cluster(集群)实现的数据自动分片能力。   Redis的主要功能都基于单线程模型实现,也就是说Redis使用一个线程来服务所有的客户端请求,同时Redis采用了非阻塞式IO,并精细地优化各种命令的算法时间复杂度,这些信息意味着: Redis是线程安全的

《Redis基础》笔记

狂风中的少年 提交于 2020-12-02 05:53:36
同步自 https://gitee.com/Corvey/note 数据类型 strings set key value 和 get key ,注意set操作会覆盖已有的key/value,若不希望覆盖可使用 set key value nx mset key1 value1 key2 value2 ... 和 mget key1 key2 ... 一次性完成多个key/value关系 incr key 加一, incrby key increment 加increment decr key 减一, decr key decrement 减decrement Lists lpush key value... 将多个value依次插入到key的最左边, rpush 最右 lrange key start stop 输出key的start到stop范围,负数表示倒数 lpop key 和 rpop key 弹出key的最左或最右 lset key index value 将key的index位置元素 修改 为value Hashes hset key field value 和 hmset key field1 value1 field2 value2... hget key field 和 hmget key field1 field2... hincrby key field