一杯甜酒
金融科技领域技术 & 云基础设施 & 云原生微服务 & 云原生时代标准交付 & PAAS 技术研发 & Kubernetes & 项目与技术管理
展开
-
Redis学习总结(24)—— Redis 集群化方案对比:Codis、Twemproxy、Redis Cluster
前言之前我们提到,为了保证Redis的高可用,主要需要以下几个方面:数据持久化 主从复制 自动故障恢复 集群化我们简单理一下这几个方案的特点,以及它们之间的联系。数据持久化本质上是为了做数据备份,有了数据持久化,当Redis宕机时,我们可以把数据从磁盘上恢复回来,但在数据恢复之前,服务是不可用的,而且数据恢复的时间取决于实例的大小,数据量越大,恢复起来越慢。Redis的持久化过程可以参考:Redis持久化是如何做的?RDB和AOF对比分析。而主从复制则是部署多个副本节点,多个副本节原创 2021-06-08 15:36:56 · 318 阅读 · 0 评论 -
Redis学习总结(23)——Redis如何实现故障自动恢复?浅析哨兵的工作原理
前言Redis是如何实现故障自动恢复的,它的实现正是要基于之前所讲的数据持久化和数据多副本而做的。Redis作为非常火热的内存数据库,其除了具有非常高的性能之外,还需要保证高可用,在故障发生时,尽可能地降低故障带来的影响,Redis也提供了完善的故障恢复机制:哨兵。下面就来具体来看看Redis的故障恢复是如何做的,以及其中的原理。部署模式Redis在部署时,可以采用多种方式部署,每种部署方式对应不同的可用级别。单节点部署:只有一个节点提供服务,读写均在此节点,此节点宕机则数据全部丢失,原创 2021-06-08 15:26:42 · 363 阅读 · 0 评论 -
Redis学习总结(22)——Redis的主从复制是如何做的?复制过程中也会产生各种问题?
前言如果Redis的读写请求量很大,那么单个实例很有可能承担不了这么大的请求量,如何提高Redis的性能呢?你也许已经想到了,可以部署多个副本节点,业务采用读写分离的方式,把读请求分担到多个副本节点上,提高访问性能。要实现读写分离,就必须部署多个副本,每个副本需要实时同步主节点的数据。Redis也提供了完善的主从复制机制,使用非常简单的命令,就可以构建一个多副本节点的集群。同时,当主节点故障宕机时,我们可以把一个副本节点提升为主节点,提高Redis的可用性。可见,对于故障恢复,也依赖Redis的主从复制原创 2021-06-08 15:21:26 · 219 阅读 · 0 评论 -
Redis学习总结(21)——Redis持久化是如何做的?RDB和AOF对比分析
前言Redis要想实现高可用,主要有以下方面来保证:数据持久化 主从复制 自动故障恢复 集群化Redis的高可用保障的基础:数据持久化。因为Redis的主从复制和自动故障恢复,都需要依赖Redis持久化相关的东西。同时,Redis的数据持久化也可以用来做数据备份,用来保障数据的安全性。Redis是一个内存数据库,它的数据都保存在内存中,如果实例宕机,那么数据则全部丢失。如何保证数据的完整性和安全性也是提高服务高可用的重要机制之一。Redis提供了完善的持久化机制,可以把内存中的数据持久化到磁原创 2021-06-08 15:05:26 · 238 阅读 · 0 评论 -
Redis学习总结(20)——Java 开发人员Redis 使用军规
一、缩短键值对的存储长度键值对的长度是和性能成反比的,比如我们来做一组写入数据的性能测试,执行结果如下:从以上数据可以看出,在 key 不变的情况下,value 值越大操作效率越慢,因为 Redis 对于同一种数据类型会使用不同的内部编码进行存储,比如字符串的内部编码就有三种:int(整数编码)、raw(优化内存分配的字符串编码)、embstr(动态字符串编码),这是因为 Redis 的作者是想通过不同编码实现效率和空间的平衡,然而数据量越大使用的内部编码就越复杂,而越是复杂的内部编码存储的原创 2021-03-02 15:25:06 · 349 阅读 · 0 评论 -
Redis学习总结(19)——Redis 5种集群方式对比
一、常用的5种集群方式Redis 的几种常见使用方式包括:Redis 单副本 Redis 多副本(主从) Redis Sentinel(哨兵) Redis Cluster Redis 自研二、各种使用方式的优缺点1、Redis 单副本Redis 单副本,采用单个 Redis 节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。优点:架构简单,部署方便;高性价比:缓存使用时无需备用节点(单实例可用性可以用.原创 2021-03-01 17:41:48 · 411 阅读 · 1 评论 -
Redis学习总结(18)——Redis 常见面试题复习
1.Redis 是一个基于内存的高性能key-value数据库。2.Redis相比memcached有哪些优势:memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 redis的速度比memcached快很多 redis可以持久化其数据3.Redis是单线程redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销4.Reids常用5种数据类型string,list,set,sorted set,hash6.Reids6种淘原创 2020-09-21 08:48:59 · 409 阅读 · 0 评论 -
Redis学习总结(17)——Redis 持久化和过期机制复习
RDBRDB 是 Redis 持久化的第一种方式。有两个 Redis 命令可以用于生成 RDB 文件,一个是 SAVE,另一个是 BGSAVE。SAVE 会阻塞 Redis 服务器进程,执行时 Redis 服务器会阻塞所有客户端发送的命令。redis> SAVEOKBGSAVE 会派生出一个子进程执行,执行时仍可继续处理客户端的命令,但会拒绝客户端 SAVE 和 BGSAVE 的命令,延迟 BGREWRITEAOF 命令。redis> BGSAVEBackground s原创 2020-07-14 20:44:45 · 1013 阅读 · 0 评论 -
Redis学习总结(16)——Redis 集群的5种使用方式,及各自优缺点对比分析
一、常见使用方式Redis 的几种常见使用方式包括:Redis 单副本 Redis 多副本(主从) Redis Sentinel(哨兵) Redis Cluster Redis 自研二、各种使用方式的优缺点1、Redis 单副本Redis 单副本,采用单个 Redis 节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。优点:架构简单,部署方便;高性价比:缓存使用时无需备用节点(单实例可用性可以用 su.转载 2020-06-10 09:02:49 · 761 阅读 · 0 评论 -
Redis学习总结(15)——Redis 基本数据类型使用场景
一、StringStrings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字.常用命令: set,get,decr,incr,mget 等。应用场景:String是最常用的一种数据类型,普通的key/ value 存储都可以归为此类.即可以完全实现目前 Memcached 的功能,并且效率更高。还可以享受Redis的定时持久化,操作日志及 Replication等功能。除了提供与 Memcached 一样的get、set、incr、decr 等操作外,Re.原创 2020-05-25 17:28:02 · 735 阅读 · 0 评论 -
Redis学习总结(14)——图解redis五种数据结构底层实现(动图版)
redis有五种基本数据结构:字符串、hash、set、zset、list。但是你知道构成这五种结构的底层数据结构是怎样的吗? 今天我们来花费五分钟的时间了解一下。 (目前redis版本为3.0.6)动态字符串SDSSDS是"simple dynamic string"的缩写。 redis中所有场景中出现的字符串,基本都是由SDS来实现的所有非数字的key。例如set msg "hel...转载 2020-03-10 11:13:49 · 1937 阅读 · 0 评论 -
Redis学习总结(13)——分布式之数据库和缓存双写一致性方案解析!
一、为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作:但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存?又或者是先删除缓存,再更新数据库?其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析,于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。二、文章结构...转载 2019-06-21 16:00:27 · 717 阅读 · 1 评论 -
Redis学习总结(12)——Redis常见面试题再总结
1、什么是Redis?Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结...原创 2018-11-13 14:24:31 · 1766 阅读 · 0 评论 -
Redis学习总结(11)——从使用角度总结Redis原理
前言Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式...原创 2018-10-17 15:44:20 · 1137 阅读 · 0 评论 -
Redis学习总结(10)——缓存雪崩、缓存穿透、缓存并发、缓存预热、缓存更新、缓存降级、缓存算法的概念及解决思路总结
前言缓存是CPU的一部分,它存在于CPU中 CPU存取数据的速度非常的快,一秒钟能够存取、处理十亿条指令和数据(术语:CPU主频1G),而内存就慢很多,快的内存能够达到几十兆就不错了,可见两者的速度差异是多么的大,缓存是为了解决CPU速度和内存速度的速度差异问题。缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则...原创 2018-10-17 15:15:54 · 1473 阅读 · 0 评论 -
Redis学习总结(9)——Redis常见面试题汇总
1、什么是Redis?简述它的优缺点?Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis的出色之处不仅仅是性能,Redis最大的魅力是支...原创 2018-09-12 17:25:09 · 9535 阅读 · 0 评论 -
Redis学习总结(8)——Redis常见使用场景总结
1、缓存在目前的互联网网站中,缓存几乎是网站都在用的,合理的使用缓存不但可以提升网站访问速度,还可以大大降低数据库的压力。Redis不仅提供了键过期功能,也提供了灵活的键淘汰策略,而且拥有相比memcached更丰富的数据类型。所以,现在Redis用在缓存的场合非常多。2、排行榜很多网站都有排行榜的展示,如天猫的月度销量榜单、商品按时间的上新排行榜等。使用Redis提供的有序集合数据结...原创 2018-09-12 17:14:17 · 7427 阅读 · 0 评论 -
Redis学习总结(7)——怎么保持缓存与数据库一致性?
一、不一致原因分析将不一致分为三种情况:1. 数据库有数据,缓存没有数据;2. 数据库有数据,缓存也有数据,数据不相等;3. 数据库没有数据,缓存有数据。在讨论这三种情况之前,先说明一下我使用缓存的策略,也是大多数人使用的策略,叫做 Cache Aside Pattern。简而言之,就是1. 首先尝试从缓存读取,读到数据则直接返回;如果读不到,就读数据库,并将数据会写到缓存,并返回。2...原创 2018-08-07 15:58:43 · 8185 阅读 · 0 评论 -
Redis学习总结(6)——Redis 高级特性与案例学习
Redis基础类型StringRedis中最基本,也是最简单的数据类型。注意,VALUE既可以是简单的String,也可以是复杂的String,如JSON,在实际中常常利用fastjson将对象序列化后存储到Redis中。另外注意mget批量获取可以提高效率。HashHash结构适用于存储对象,相较于String,存储占用更少的内存。Hash结构可以使你像在数据库中Update一个...转载 2018-07-18 10:21:35 · 3721 阅读 · 0 评论 -
Redis学习总结(5)——阿里云Redis开发规范
一、键值设计1. key名设计(1)【建议】: 可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:idugc:video:1(2)【建议】:简洁性保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:user:{uid}:friends:messages:{mid}简化为u:{uid}:fr:m:{mid}。(3)【强制】:不要包原创 2018-03-17 12:47:22 · 1401 阅读 · 1 评论 -
Redis学习总结(4)——Spring Data操作Redis
Redis是一种NOSQL数据库,Key-Value形式对数据进行存储,其中数据可以以内存形式存在,也可以持久化到文件系统。Spring data对Redis进行了很好的封装,用起来也是十分的得心应手。Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings),散列(hashes),列表(l原创 2017-03-19 20:25:11 · 1380 阅读 · 0 评论 -
Redis学习总结(3)——Redis整合Spring结合使用缓存实例
摘要:本文介绍了如何在Spring中配置redis,并通过Spring中AOP的思想,将缓存的方法切入到有需要进入缓存的类或方法前面。一、Redis介绍什么是Redis? redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted s转载 2015-12-27 15:42:56 · 2432 阅读 · 1 评论 -
Redis学习总结(2)——Java使用Redis
安装开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java。 Java的安装配置可以参考我们的 Java开发环境配置 接下来让我们安装 Java redis 驱动:首先你需要下载驱动包,下载 jedis.jar,确保下载最新驱动包。在你的classpath中包含该驱动包。原创 2015-10-30 17:29:15 · 2360 阅读 · 0 评论 -
Redis学习总结(1)——Redis内存数据库详细教程
1.redis是什么2.redis的作者何许人也3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介8.redis数据结构 – strings9.redis数据结构 – lists10.redis数据结构 – 集合11.redis数据结构 – 有序集合12.redis数据结构 – 哈希13.聊聊redis...原创 2015-10-30 17:19:12 · 3854 阅读 · 0 评论