redis分布式

【redis学习】 RDB和AOF两种持久化机制的介绍及优缺点

心不动则不痛 提交于 2019-11-30 08:16:51
欢迎转载: 攻城狮不是猫 1、RDB和AOF两种持久化机制的介绍 RDB持久化机制,对redis中的数据执行周期性的持久化 AOF机制对每条写入命令作为日志,以append-only的模式写入一个日志文件中,在redis重启的时候,可以通过回放AOF日志中的写入指令来重新构建整个数据集 如果我们想要redis仅仅作为纯内存的缓存来用,那么可以禁止RDB和AOF所有的持久化机制 通过RDB或AOF,都可以将redis内存中的数据给持久化到磁盘上面来,然后可以将这些数据备份到别的地方去,比如说阿里云,云服务 如果redis挂了,服务器上的内存和磁盘上的数据都丢了,可以从云服务上拷贝回来之前的数据,放到指定的目录中,然后重新启动redis,redis就会自动根据持久化数据文件中的数据,去恢复内存中的数据,继续对外提供服务 如果同时使用RDB和AOF两种持久化机制,那么在redis重启的时候,会使用AOF来重新构建数据,因为AOF中的数据更加完整 ------------------------------------------------------------------------------------- 2、RDB持久化机制的优点 (1)RDB会生成多个数据文件,每个数据文件都代表了某一个时刻中redis的数据,这种多个数据文件的方式,非常适合做冷备

Redis Persistent Replication Sentinel Cluster的一些理解

北慕城南 提交于 2019-11-30 06:19:10
Redis Persistent Replication Sentinel Cluster的一些理解 我喜欢把工作中接触到的各种数据库叫做存储系统,笼统地说:Redis、Mysql、Kafka、ElasticSearch 都可以视为存储系统。各个存储系统在持久化刷盘策略、checkpoint机制、事务机制、数据的可靠性保证、高可用性保证的一些实现细节是深入理解背后存储原理的基础,把它们对比起来看,也能更好地理解。在写代码的时候,也许只需要了解它们提供的API就能完成大部分任务了,再加上强大的运维,也许也不用去关注什么安装、配置、维护这些"锁事"了, 但这样当数据量大,出现性能问题的时候,也常常一筹莫展。 由于在工作中使用到Redis的地方也比较简单,心血来潮的时候,看看某个具体的数据结构的底层实现原理,比如REDIS_ZSET,但是对存储原理、键过期机制、集群了解得少。读了《Redis 设计与实现》和官方Documentation后,感觉它背后处处体现着优化:Redis是单线程的(需要放到特定的场景下的讨论)、Redis数据类型的底层实现(object encoding)在数据量少的时候采用一种物理存储结构,在数据量大的时候自动转换成另一种存储结构、还有一些地方用到了为了效率而取近似的思想,这些都让Redis很美好。 Redis Persistent 先从Redis持久化说起

redis储存方式以及储存数据

旧巷老猫 提交于 2019-11-30 04:26:35
redis储存方式以及储存数据 Redis数据类型 string 普通key:value储存 set name xiaoli get name--->xiaolilist 有序可以重复hash string类型 field和value映射set 无序不可重复Sorted set:有序不可重复 Redis具体可以用来储存哪些数据? 1:热点数据,列如,一般首页的整页的数据都进行缓存2:分布式 Session 解决方案(cookie + redis),比如,七天免登陆3:整表数据缓存(使用hash结构)4:简单的发布订阅(list 结构实现),延时队列(sorted set,时间戳score) Redis持久化储存方式有几种? 1:RDB方式,定期保存内存快照,适合大规模的数据恢复,但是他的完整性和一致性较差 说到内存快照保存过程就要先了解fork()函数用法: 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都,复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。 redis正是利用了这个特性

SpringBoot 操作Redis

这一生的挚爱 提交于 2019-11-30 04:14:45
一、Spring Boot 和 Redis 常用操作 Redis 是目前使用最广泛的缓存中间件,相比 Memcached,Redis 支持更多的数据结构和更丰富的数据操作 ,另外 Redis 有着丰富的集群方案和使用场景,这一课我们一起学习 Redis 的常用操作。 1、Redis 介绍 Redis 是一个速度非常快的非关系数据库(Non-Relational Database),它可以存储键(Key)与 5 种不同类型的值(Value)之间的映射(Mapping),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能。 为了满足高性能,Redis 采用内存(in-memory)数据集(Dataset),根据使用场景,可以通过每隔一段时间转储数据集到磁盘,或者追加每条命令到日志来持久化。持久化也可以被禁用,如果你只是需要一个功能丰富、网络化的内存缓存。 数据模型 Redis 数据模型不仅与关系数据库管理系统(RDBMS)不同,也不同于任何简单的 NoSQL 键-值数据存储。Redis 数据类型类似于编程语言的基础数据类型,因此开发人员感觉很自然,每个数据类型都支持适用于其类型的操作,受支持的数据类型包括: String(字符串) Hash(哈希) List(列表) Set(集合) Zset(Sorted Set:有序集合)

【Redis】01.Redis

◇◆丶佛笑我妖孽 提交于 2019-11-30 03:22:27
一、NoSql 入门 1. 入门概述(架构演变) 1. 单机MySQL 一个网站的访问量不大,用单个数据库可以轻松实现。一般架构为: APP-> DAL ->MySQL 瓶颈 数据量逐渐增多,单机不够存放 数据的索引,内存不够时,存放不下 访问量(读写等操作)一个实例(一个数据库)不能承受 2. Memcached(缓存) + MySQL + 垂直拆分 随着访问量的增加,大部分单机MySQL的网站在数据库上都出现了性能问题。开始使用缓存技术来缓解数据库的压力,优化数据库的结构和索引,此时开始使用Memcached缓存。此时的技术架构为: APP -> DAL ->Cache-> 多个MySQL数据库(垂直拆分->表示将一个数据库拆分为多个数据库来实现) 3.MySQL主从读写分离(Master/Slave) 由于数据库的写入压力增加,缓存只能缓解数据库的读取压力,读写集中在一个数据库上让数据库的不堪重负,开始使用主从复制技术来达到读写分离。其架构为: APP->DAL->Cache ->读数据库则去从数据库(Master)获取数据 ---------------------------->写数据库则去主数据库(Slave)获取数据,从数据库根据规则复制主数据内容到从数据库 4. 分表分库 + 水平拆分 + MySQL集群 在Memcached的高速缓存,MySQL的主从复制

redis的总结笔记

核能气质少年 提交于 2019-11-30 02:19:43
# Redis 1. 概念: redis是一款高性能的NOSQL系列的非关系型数据库 1.1.什么是NOSQL NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。 随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。 1.1.1. NOSQL和关系型数据库比较 优点: 1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。 2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。 3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。 4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。 缺点: 1)维护的工具和资料有限,因为nosql是属于新的技术

MySQL数据库初识

非 Y 不嫁゛ 提交于 2019-11-30 02:13:01
一 数据库概述 1. 数据库???   什么是数据库呢?   先来看看百度怎么说的 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。   百度的貌似不好理解啊,让我说啊,数据库是存储数据的地方,超哥,你这不是废话么?这位同学,你你你你你说的对,哈哈,存数据的地方是存在哪里呢,存在硬盘上,为什么不是存在内存里面,因为内存无法永久保存。之前我们存数据都是使用的文件,在一个word文档里面写一些羞羞的网址,然后保存,就存储到硬盘上了。有同学就会说了,超哥,我这通过文件不是也将数据保存上了吗?是的,没毛病,但是你想,通过文件来操作数据,效率是不是很低,首先打开关闭就比较慢,其次是我们操作起来也比较麻烦,对不对,如果我想记录一条关于我个人信息的数据,我使用文档来存,是不是很不友好,并且我们要查数据的时候,看图1:图1是一个word里面记录的信息,如果我想查询出所有人的名字,这个操作是不是就很难搞定了,来来来,配合起来~~,你应该说是的,那我就接着说,有同学可能就会说了,老师我用excel啊,看图2,一列就搞定了,没毛病,但是你想打开操作excel效率低不低。并且通过你自己写的程序来操作这些文件是不是很麻烦

Redis学习笔记八(缓存设计)

試著忘記壹切 提交于 2019-11-30 02:03:30
目录: 缓存更新策略 缓存粒度 缓存穿透 缓存雪崩 缓存击穿 缓存更新策略: 1、内存溢出淘汰策略 当redis的使用内存超过 maxmemory 时会触发相应的策略,具体策略由 maxmemory-policy 参数控制 淘汰策略分为六种: )noeviction: 默认策略 ,此策略不会删除任何数据;当客户端还进行写操作时将返回OOM(内存溢出) )volatile-lru:根据LRU算法删除设置了过期时间的key,如果没有可删除的key,回退到noevication策略 )volatile-random:随机删除过期的key )allkeys-lru:根据LRU算法从所有的key里删除 )allkeys-random:随机算出所有的key )volatile-ttl:根据对象ttl属性删除最近将要过期的key,若没有回退到noevication策略 不推荐使用noevication、allkeys-lru 2、过期删除 )惰性删除:redis有一个专门存储设置了过期时间的过期字典,每当客户端要访问一个key时,先回去这个过期字典里查,若已过期则返回空;但仅只有这一个删除策略的话就会导致一些长期未使用的key也占用这内存,故有了一个定时删除的策略 )定时删除:redis内部维护了一个job,默认每10秒运行一次;它会根据key的过期比例,使用快慢两种模式回收key 3

SpringBoot集成Redis缓存

﹥>﹥吖頭↗ 提交于 2019-11-29 23:32:50
关于Redis缓存 为什么使用缓存? 提升重复访问数据的访问效率。 Redis的三个用途 数据库, 缓存 ,消息中间件 Redis的应用场景(针对被重复访问的数据) 页面缓存(图片,CSS,html等静态数据)——热点数据 最新列表 排行榜 计数器 session存储 使用建议 Redis 速度快是建立在内存数据库基础上的,但是一台服务器的内存要比磁盘金贵许多,所以在项目初期不要想什么都往 Redis 里放,这样当数据量上来后很快内存就会不够用,反而得不偿失。合理的利用有限的内存,将读(写)频繁的热数据放在 Redis 中才能更好感受到它带来的性能提升。 Redis 虽然提供了 RDB 和 AOF 两种持久化方式,但是普遍还是认为 Redis 的持久化并不是很靠谱。非常重要的数据不要依赖 Redis 来开发,或者最起码不要只在 Redis 中持久化 MySQL 经过不断优化性能已经非常好,所以 MySQL 提供的数据结构和访问效率能满足的需求的情况下不要引入 Redis,多引入一个组件就多一个可能的故障节点,尤其在保持数据一致性的场景中数据(比如用户余额)应该只放在数据库中,除非你知道怎么解决考系统的分布式事务。 Redis数据类型 文档参考:http://doc.redisfans.com/ string(一个键最大能存储 512MB) hash(适合存储对象)每个 hash

Redis简介以及命令操作

青春壹個敷衍的年華 提交于 2019-11-29 23:19:23
Redis简介 什么是Redis Redis是用C语言开发的一个开源的高性能键值对 key-value 数据库,官方提供测试数据, 50 个并发执行 100000 个请求,读的速度是 110000次/s ,写的速度是 81000次/s ,且 Redis 通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis 支持的键值数据类型如下: 1) 字符串类型 string 2) 哈希类型 hash : map格式 3) 列表类型 list : linkedlist格式。支持重复元素 4) 集合类型 set : 不允许重复元素 5) 有序集合类型 sortedset:不允许重复元素,且元素有 Redis的应用场景 缓存(数据查询、短连接、新闻内容、商品内容等等) 聊天室的在线好友列表 任务队列。(秒杀、抢购、12306等等) 应用排行榜 网站访问统计 数据过期处理(可以精确到毫秒 分布式集群架构中的session分离 Nosql NoSQL(NoSQL = Not Only SQL) ,意即“不仅仅是 SQL ‘’,是一项全新的数据库理念,泛指非关系型的数据库。 主流的Nosql数据库: 键值 (Key-Value) 存储数据库 相关产品: Tokyo Cabinet / Tyrant 、 Redis 、 Voldemort 、 Berkeley DB 典型应用: 内容缓存