Redis

cgb2008-京淘day10

大兔子大兔子 提交于 2020-12-09 15:41:16
1.数据库高可用(HA) 1.1 实现数据库读写分离/负载均衡 1.1 Mycat代理 1.1.1 Mycat 介绍 1.1.2 Mycat代理 1.2 MyCat配置 1.2.1 上传安装包 1.2.2 解压Mycat 1).解压Mycat [root@localhost src]# tar -xvf Mycat-server-1.7.0-DEV-20170416134921-linux.tar.gz 2).移动Mycat文件 1.2.3 编辑Server.xml 说明: 用户与代理数据库之间的链接,通过Server.xml进行配置. 1).默认端口 2).编辑server.xml 1.2.4 编辑schemas.xml 说明:该文件表示代理与数据库的配置 HOST:PORT:用户名:密码:数据库名称 <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!--name属性是自定义的 dataNode表示数据库的节点信息 jtdb表示逻辑库--> <schema name="jtdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="jtdb"/> <!-

2020年5月中旬面试总结,至今最全的Java程序员高频面试知识点解析笔记!

不羁岁月 提交于 2020-12-09 13:10:56
就目前大环境来看,跳槽成功的难度比往年高很多。总结一下面试的感受:无论一面还是二面,都很考验Java程序员的技术功底!! 最近我整理了一份复习用的面试题及面试高频的考点题及技术点梳理成一份“Java程序员高频面试解析及知识点体系笔记.pdf(实际上比预期多花了不少精力),包含 集合,JVM,并发编程、Spring,MyBatis,微服务,Redis,Dubbo,设计模式,数据结构,分布式等!,由于篇幅有限,为了方便大家观看,这里以图片的形式给大家展示每部分的目录和答案截图,完整学习文档在文末有免费领取方式! 这份Java面试解析和知识点体系文档内容包括: Java 篇主要包含 Java集合 Hashmap、JVM、GC、锁、多线程、并发、代理、NIO 等。 MySQL数据库主要包含索引、B+ 树、SQL 优化相关。 分布式存储篇主要包含 Redis 架构相关、MongDB 分布式中间件主要包含 Kafka,RabbitMQ相关面试题 微服务Spring Boot、Spring Cloud、Dubbo 篇。 系统架构设计篇,根据几个开放性题目来设计系统。 框架篇主要包含 Spring MyBatis、SpringMVC,netty与RPC 设计模式篇 数据结构与算法篇 相信它会给大家带来很多收获。 Java程序员高频面试解析及知识点体系笔记 JVM篇——JVM知识点体系笔记 JVM篇

Redis面试题汇总(附答案),面试突击专用

早过忘川 提交于 2020-12-09 00:58:41
本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Redis 集群方案应该怎么做?都有哪些方案? 有没有尝试进行多机redis 的部署?如何保证数据一致的? 对于大量的请求怎么样处理 Redis 常见性能问题和解决方案? 讲解下Redis线程模型 为什么Redis的操作是原子性的,怎么保证原子性的? Redis事务 Redis实现分布式锁 总结 小编在这里整理了一套大厂Redis高频面试题 需要的朋友关注公众号:程序员白楠楠 Redis 持久化机制 Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。 实现:单独创建fork()一个子进程,将当前父进程的数据库数据复制到子进程的内存中,然后由子进程写入到临时文件中,持久化的过程结束了,再用这个临时文件替换上次的快照文件,然后子进程退出,内存释放。 RDB是Redis默认的持久化方式

如何迅速分析出系统I/O的瓶颈在哪里?

妖精的绣舞 提交于 2020-12-08 14:07:29
性能指标 老规矩,我们先来回顾一下,描述 I/O 的性能指标有哪些?你可以先回想一下文件系统和磁盘 I/O 的原理,结合下面这张 Linux 系统的 I/O 栈图,凭着记忆和理解自己写一写。或者,你也可以打开前面的文章,挨个复习总结一下。 说了这么久的 I/O 性能知识,一说起 I/O 指标,你应该首先会想到分类描述。我们要区分开文件系统和磁盘,分别用不同指标来描述它们的性能。 文件系统I/O性能指标 我们先来看文件系统的情况。 首先,最容易想到的是存储空间的使用情况,包括容量、使用量以及剩余空间等 。我们通常也称这些为磁盘空间的使用量,因为文件系统的数据最终还是存储在磁盘上。 不过要注意,这些只是文件系统向外展示的空间使用,而非在磁盘空间的真实用量,因为文件系统的元数据也会占用磁盘空间。 而且,如果你配置了 RAID,从文件系统看到的使用量跟实际磁盘的占用空间,也会因为RAID 级别的不同而不一样。比方说,配置 RAID10 后,你从文件系统最多也只能看到所有磁盘容量的一半。 除了数据本身的存储空间,还有一个 容易忽略的是索引节点的使用情况,它也包括容量、使用量以及剩余量等三个指标 。如果文件系统中存储过多的小文件,就可能碰到索引节点容量已满的问题。 其次,你应该想到的是前面多次提到过的缓存使用情况,包括页缓存、目录项缓存、索引节点缓存以及各个具体文件系统(如 ext4、XFS

MySQL数据库简介

好久不见. 提交于 2020-12-08 14:02:48
MySQL数据库简介 一、数据库介绍 (一)数据库相关概念 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。 1.数据库系统:DBS (DataBase System)通常由数据库、数据库管理系统和数据管理员组成。 2.数据库管理系统:DBMS (Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。 3.数据库管理员:DBA (Database Administrator),是从事管理和维护数据库管理系统(DBMS)的相关工作人员,一般是由业务水平较高、资历较深的人员担任。 4.数据库:DB (Database )是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。 (二)数据库分类 关系型数据库 概述:简单理解就是以二维表格的形式存储数据,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。 常见的关系型数据库: Oracle:IBM公司的商业数据库。 SQLServer:微软旗下的一款开源数据库。 DB2:商业银行使用较多。

Redis Cluster

我的梦境 提交于 2020-12-08 10:25:11
Redis3.0以后,节点之间通过去中心化的方式提供了完整的 sharding(数据分片)、replication(复制机制、Cluster具备感知准备的能力)、failover解决方案 。 拓扑结构 Redis Cluster由多个Redis节点组构成。不同节点组服务的数据无交集, 每一个节点组对应数据sharding的一个分片。 节点组内分为 主备 两类节点,两者数据准实时一致,通过 异步化的主备复制机制 。 master节点对用户提供读写服务,slave节点对用户提供读服务。 Redis Cluster总共有16384个slot,每一个节点负责一部分slot。 Redis Cluster中所有的几点之间两两通过Redis Cluster Bus交互,主要交互以下关键信息: 数据分片(slot)和节点的对应关系 集群中每个节点可用状态 集群结构发生变更时,通过一定的协议对配置信息达成一致。数据分片的迁移、故障发生时的主备切换决策、单点master的发现和其发生主备关系的变更等场景均会导致集群结构变化 publish和subscribe(发布/订阅)功能在cluster版的内容实现所需要交互的信息。 Redis Cluster Bus通过单独的端口进行连接,bus是节点间的内部通信机制,交互的是字节序列化信息,而不是client到Redis服务器的字符序列化以提升交互效率。

灰度发布浅析

╄→尐↘猪︶ㄣ 提交于 2020-12-08 09:57:25
定义 灰度发布就是已一种平滑过渡的方式来发布,通过切换线上新旧版本之间的路由权重,逐步从旧版本切换到新版本;比如要上线新功能,首先只是更新少量的服务节点,通过路由权重,让少部分用户体验新版本,如果没有什么问题,再更新所有服务节点;这样可以在出现问题把影响面降到最低,保证了系统的稳定性。 灰度发布 一个系统往往有接入层比如nginx(Openresty),网关层比如zuul,以及服务层比如各种rpc框架;在这几层都有路由功能,也就是说这几层都可以做灰度;接入层可以使用nginx+lua来实现灰度,网关层zuul可以结合ribbon来实现灰度,rpc框架如dubbo本身提供了路由功能可以直接做灰度处理;下面看看具体如何去实现; 接入层灰度 接入层我们这里使用功能更强大的Openresty,然后使用lua进行路由转发,相关的路由策略可以配置在分布式缓存redis里面,当然也可以持久化到数据库里面; 准备 准备一台Openresty,两台web服务器tomcat(端口分别是8081,8082),以及redis;为了方便模拟在redis里面配置白名单,如果在白名单里面就走8082,不在则走8081; Openresty配置 需要在Openresty中配置支持lua,以及相关路由的lua脚本,nginx.conf配置如下: http { ... lua_package_path "

Redis的浅入门

孤者浪人 提交于 2020-12-08 07:48:46
<center><font size=8>Redis的浅入门</font></center> # 缓存的思想 问题提出:我们的用户数量上亿,如果登录,访问数据库user特别耗时,该怎么办?——提出缓存 方法:怎样从缓存在获取数据? *有数据: 直接返回 *无数据: (1)从数据库查询 (2)将数据放入缓存 (3)返回数据 认识redis 特点:-属于NOSQL,数据之间没有关联关系,数据存储在内存。 对比一下关系型数据库(MYSQL..)数据之间有关联,数据存储在硬盘的文件上。 数据结构-[key,value] key - 字符串 value - 5种不同 value数据结构: 字符串类型 String 哈希类型 hash 列表类型 list 集合类型 set 有序集合类型 sortedset 五种数据结构命令 https://www.redis.net.cn/ 可以看一个学习redis的中文网 1. 字符串类型 string 1. 存储: set key value 2. 获取: get key 3. 删除: del key 2. 哈希类型 hash 1. 存储: hset key field value 2. 获取: * hget key field: 获取指定的field对应的值 * hgetall key:获取所有的field和value 3. 删除: hdel key

理解 redis 中的 哈希对象类型

微笑、不失礼 提交于 2020-12-08 06:26:48
redis中的hash也是我们使用中的高频数据结构,它的构造基本上和编程语言中的HashTable,Dictionary大同小异,如果大家往后有什么逻辑需要用Dictionary存放的话,可以根据场景优先考虑下redis哦,起码可以装装嘛,现在我默认你已经有装的冲动了,打开redis手册,看看有哪些我们用得到的装方法。 一:常用方法 只要是一个数据结构,最基础的永远是CURD,redis中的insert和update,永远只需要set来替代,比如下面的Hset,如下图: 前面几篇文章我都没有挑选一个方法仔细讲解,其实也没什么好讲解的,就好似C#中的一个类的一个方法而已,知道传递一些啥参数就OK了,就比如要说的HSet,它的格式如下: 接下来我在CentOS里面操作一下, [administrator@localhost redis-3.0.5]$ src/redis-cli 127.0.0.1:6379> clear 127.0.0.1:6379> hset person name jack ( integer ) 1 127.0.0.1:6379> hset person age 20 ( integer ) 1 127.0.0.1:6379> hset person sex famale ( integer ) 1 127.0.0.1:6379> hgetall person

秒杀系统架构的分析与实战!

こ雲淡風輕ζ 提交于 2020-12-08 03:56:42
今天跟大家分享下秒杀系统架构的分析与实战的知识。 1 秒杀业务分析 正常电子商务流程 (1)查询商品; (2)创建订单; (3)扣减库存; (4)更新订单; (5)付款; (6)卖家发货; 秒杀业务的特性 (1)低廉价格; (2)大幅推广; (3)瞬时售空; (4)一般是定时上架; (5)时间短、瞬时并发量高; 2 秒杀技术挑战 假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有: 2.1 对现有网站业务造成冲击 秒杀活动只是网站营销的一个附加活动,这个活动具有时间短,并发访问量大的特点 如果和网站原有应用部署在一起,必然会对现有业务造成冲击,稍有不慎可能导致整个网站瘫痪。 解决方案:将秒杀系统独立部署,甚至使用独立域名,使其与网站完全隔离。 2.2 高并发下的应用、数据库负载 用户在秒杀开始前,通过不停刷新浏览器页面以保证不会错过秒杀,这些请求如果按照一般的网站应用架构,访问应用服务器、连接数据库,会对应用服务器和数据库服务器造成负载压力。 解决方案:重新设计秒杀商品页面,不使用网站原来的商品详细页面,页面内容静态化,用户请求不需要经过应用服务。 2.3 突然增加的网络及服务器带宽 假设商品页面大小200K(主要是商品图片大小),那么需要的网络和服务器带宽是2G(200K×10000)