Redis

Docker安装Redis及Warning解决方法

主宰稳场 提交于 2020-11-30 03:37:36
虚拟机环境:VirtualBox 操作系统:CentOS 7 宿主机: Microsoft Windows 10 家庭中文版 Docker简介 Docker是一个轻量级容器技术。Docker直接运行在Linux上,而不是运行在虚拟机上,实现了虚拟机技术的资源格式,性能高于虚拟机技术。 1)工作流程: Docker支持将软件编译成一个镜像,在这个镜像里做好软件的各种配置,然后发布这个镜像,使用者可以运行这个镜像,运行中的镜像被称为容器。 2)核心概念: 镜像(Image):Docker镜像用于创建镜像的模板,可以自己编译或者从从Docker Hub上pull拉取到机器上 容器(Container):独立运行运行的镜像,每个容器都有唯一的container-id 客户端(Client):客户端通过命令行或者其他工具使用Docker 主机(Host):执行Docker守护进程(后台一直运行)和容器的物理资源。 仓库(Registry):保存镜像的远程仓库,可以搜镜像,官方Docker Hub为 https://hub.docker.com/。 配置镜像加速器 仓库可以申请阿里云Docker代理仓库加速,并且是免费的! 阿里云传送门:容器Hub服务控制台: https://cr.console.aliyun.com/ 1. 安装/升级Docker客户端 推荐安装1.10

打通MySQL架构和业务的任督二脉

匆匆过客 提交于 2020-11-30 03:22:45
目前,在很多OLTP场景中,MySQL数据库都有着广泛的应用,也有很多不同的使用方式。从数据库的业务需求、架构设计、运营维护、再到扩容迁移,不同的MySQL架构有不同的特点,适应一定的业务场景,或者解决一定的业务问题。 DBA作为数据库架构的设计、实施、维护人员,不仅要对各种MySQL架构非常熟悉,还要了解业务,对于不同的业务有一定的划分和认识,并根据业务特点和架构特点,合理选择和使用MySQL,满足业务需求。 本文从MySQL常见架构、业务环境分类、业务与架构结合使用原则三个方面对MySQL数据库和业务场景进行探讨和说明,让大家先分别对MySQL的架构和业务分类有所了解,然后再将两者贯通起来,使得能够在进行业务与MySQL架构设计时纲举目张,让用户可以用合适的技术解决支撑业务需求。 一、MySQL数据库常见架构 为了对MySQL数据库常见架构,能够有进行比较清晰的认识,下面先从MySQL三种通用基础架构、五种特殊需求架构、架构组合与综合使用三个方面进行说明。 1、 MySQL三种常见基础架构 (1)MySQL单实例架构 MySQL单实例,就是在服务器上部署一个MySQL实例来对外提供服务,这是最开始接触MySQL数据库会使用的方式,也是常见学习、研究MySQL数据库的使用方式。 MySQL单实例的使用方式,是MySQL数据库使用的第一阶段,通常这种情况下

《Redis Mysql 双写一致性问题》

陌路散爱 提交于 2020-11-28 14:34:01
一:序   - 最近在对数据做缓存时候,会涉及到如何保证 数据库/Redis 一致性问题 。   - 刚好今天来总结下 一致性问题 产生的问题,和可能存在的解决方案。 二:(更新策略)- 先更新数据库,后更新缓存    - 产生的问题     -     - 由上面流程图可知道, 请求A更新缓存应该比请求B更新缓存早才对,但是因为网络等原因,B却比A更早更新了缓存。     - 这就导致了 脏数据 ,因此不考虑 先更新数据库,后更新缓存 这个更新策略。 三:(更新策略)- 先删除缓存,在更新数据库    - 产生的问题     -     - 如果同时 有一个请求A进行更新操作,另一个请求B进行查询操作 。     - 就会导致不一致的情形出现 。而且,如果不采用给缓存设置过期时间策略,该数据永远都是脏数据。 四:(更新策略)- 先更新数据库,在删除缓存   - FaceBook 也是采用这种方式。   - 当然,这种方式也会产生数据不一致问题。     - (1)缓存刚好失效     -(2)请求A查询数据库,得一个旧值     -(3)请求B将新值写入数据库     -(4)请求B删除缓存     -(5)请求A将查到的旧值写入缓存   - 前提是 写操作耗时一定是低于 读操作的,在一般的条件下,这时不可能得。 五:小结   - 这里只分析了平常可能想到的更新策略的分析。   

mysql和redis双写一致性策略分析

大兔子大兔子 提交于 2020-11-28 12:48:11
mysql和redis双写一致性策略分析 一.什么是双写一致性 当我们更新了mysql中的数据后也可以同时保证redis中的数据同步更新; 数据读取的流程: 1.读取redis,如果value!=null,直接返回; 2.如果redis中value=null,读取mysql中数据对应的value,将key-value保存在redis中; 双写一致性策略: 策略1:先更新缓存,再更新数据库; 策略2:先更新数据库,再更新缓存; 策略3:先删除缓存,再更新数据库; 策略4:先更新数据库,再删除缓存; 二.四种策略存在的问题和优势 1.先更新缓存,再更新数据库 问题:这种策略如果redis更新成功,mysql更新失败,这时造成redis脏数据问题,这种策略是绝对不能使用的; 2.先更新数据库,再更新缓存 问题:这种策略的主要问题就是发生在并发场景下,当线程ThreadA更新mysql后由于某种原因并没有立刻更新redis缓存,这时线程ThreadB立即将数据库和缓存都更新成功,最后ThreadA将redis中的数据进行更新,这时就会造成ThreadB对缓存的更新丢失,这是一个很严重的问题; 3.先删除缓存,再更新数据库 问题:这种策略的主要问题也是发生在并发场景下,当ThreadA更新数据库之前先将redis中的数据进行删除,在更新数据库;但是在并发场景下回有一个问题

JAVA高级-面试题总结

旧时模样 提交于 2020-11-28 07:11:23
最近面试了一些公司,针对面试中遇到的问题在此记录,提升自己,造福大家 以下所有java源码相关展示均为jdk1.8版本中内容 一、java源码相关 ArrayList创建和add等各种api使用原理 ArrayList 是一种变长的集合类,基于定长数组实现。 ArrayList 允许空值和重复元素 ,当往 ArrayList 中添加的元素数量大于其底层数组容量时,其会通过 扩容 机制重新生成一个更大的数组。 ArrayList 是非线程安全类 ,并发环境下,多个线程同时操作 ArrayList,会引发不可预知的异常或错误。 ArrayList创建源码 带有初始容量的构造方法 /** * Shared empty array instance used for empty instances. */ private static final Object[] EMPTY_ELEMENTDATA = {}; /** * Constructs an empty list with the specified initial capacity. * * @param initialCapacity the initial capacity of the list * @throws IllegalArgumentException if the specified initial

session跨域共享问题解决方案

大城市里の小女人 提交于 2020-11-28 04:12:29
在讨论 session 跨域共享问题之前,我们首先要了解 session 做了什么,没做什么 1. HTTP 是 无状态 的,也就是说服务器不知道谁访问过他,但是有时间,又需要我们去保留这个状态比如说用户的登录信息,如果每次访问都要登录,这个用户体验实在是太糟糕了,session 就解决了这个问题,他把用户登录信息维护在服务端,会生成一个JSessionID给客户端,客户端下次访问的时候就带着这个JSessionID,服务端根据这个IP去查找用户信息。 2.当然,session 的缺点也很明显,session 是存在服务器的 内存 中的,如果 session 过多会 影响服务器的性能 。因为 session 只在一台服务器里,当有多台服务器的时候,访问别的服务器肯定会失败。 明确了 session所做的事以及它的缺陷之后,解决 session 存在的问题就容易多了,下面我简要说一下5种解决方案 Session Sticky Session复制 Session集中存储 Cookie Token Session Sticky:是指让 同一客户端 的请求,落在 同一台服务器 上,因为不会落在别的服务器上,所以自然就不会出现跨域问题。但是这个方案的 缺点 也是非常明显的。就是 不管比采用什么算法 ,用户的请求落在那一台服务器上都是由 用户来决定的 ,可能会造成 单点压力

揭秘程序员面试潜规则,我悄悄告诉你

早过忘川 提交于 2020-11-28 03:55:06
https://segmentfault.com/a/1190000022233501 1.大纲 潜规则1:面试的本质不是考试,而是告诉面试官你会做什么 很多刚入行的小伙伴特别容易犯的一个错误,不清楚面试官到底想问什么,其实整个面试中面试官并没有想难道你的意思,只是想通过提问的方式来知道你会什么 比如: 面试官提问在实际项目中你们是怎么样使用缓存的? 初入行回答:使用redis,key-value存放 但是面试官可能是想知道:一般在业务中缓存什么样的数据,为什么要缓存这些数据,缓存数据如何保证实时性,如果缓存失效会对正常业务流程有什么影响,为什么要选择redis,redis的实现原理等等; 围绕着这个话题只要你能在某一方面回答得很深入很透彻,基本上面上的可能性会大大提高; 如果当你听到这个话题时,感觉不知道如何回到,或者说感觉很简单,几句换就说完了,那么基本上你很难面上,因为你的知识储备不够,说不出来关于技术相关的内容。 潜规则2:薪水要求高一点录取概率就大一点 我曾经面试一个刚毕业的大学生,简历上写的精通java,精通mysql,精通spring,然后我就问他你期望的薪水是多少呢? 他的回答是4K,先不说他简历上写的是真是假,但是有一点很明确,如果你在市场上去肉,别人都是卖30元一斤,而路边有个摆摊的只买10元一斤,那么你们会去买么? 另外,我想告诉大家的是

面试阿里被问:“你的项目是如何处理重复请求/并发请求的?”

纵然是瞬间 提交于 2020-11-28 00:57:25
来源:jaskey.github.io/blog/2020/05/19/handle-duplicate-request/ 利用唯一请求编号去重 业务参数去重 计算请求参数的摘要作为参数标识 继续优化,考虑剔除部分时间因子 请求去重工具类,Java实现 总结 对于一些用户请求,在某些情况下是可能重复发送的,如果是查询类操作并无大碍,但其中有些是涉及写入操作的,一旦重复了,可能会导致很严重的后果,例如交易的接口如果重复请求可能会重复下单。 重复的场景有可能是: 黑客拦截了请求,重放 前端/客户端因为某些原因请求重复发送了,或者用户在很短的时间内重复点击了。 网关重发 …. 本文讨论的是如何在服务端优雅地统一处理这种情况,如何禁止用户重复点击等客户端操作不在本文的讨论范畴。 利用唯一请求编号去重 你可能会想到的是,只要请求有唯一的请求编号,那么就能借用Redis做这个去重——只要这个唯一请求编号在redis存在,证明处理过,那么就认为是重复的 代码大概如下: String KEY = "REQ12343456788";//请求唯一编号 long expireTime = 1000;// 1000毫秒过期,1000ms内的重复请求会认为重复 long expireAt = System.currentTimeMillis() + expireTime; String val =

永久免费!国产操作系统 Deepin V20 Beta版发布(附安装教程)

霸气de小男生 提交于 2020-11-27 19:27:30
永久免费!国产操作系统 Deepin V20 Beta版发布(附安装教程) 收录于话题 #打怪升级进阶之路 30个 「 点击图片获取最近两年爆款好文 」 深度操作系统(DEEPIN)是武汉深之度科技有限公司致力于为全球用户提供美观易用、安全可靠的Linux发行版。经过一段时间的测试,这款操作系统的Beta版终于今天和大家见面了。这次Deepin v20操作系统带来了全新的Deepin桌面和全家桶软件,基于Linux 5.3内核,并宣布将永久免费使用。 深度操作系统 20 Beta采取统一的设计风格,从桌面环境和应用重新进行设计,其中底层仓库、内核分别升级到Debian 10、Kernel 5.3,全新的设计带来不一样的交互体验,同时不断优化系统各个方面,带来更加丰富的应用生态和系统稳定性,本次深度应用家族也带来全新的设计和新的应用。 Deepin V20 Beta测试版镜像下载: 64位版: http://cdimage.deepin.com/releases/20Beta/ 文件名称:deepin-20Beta-desktop-amd64.iso SHA-256:77ba059a49756eb1c95f1f4f9f3c45d161762269977c520b115d548799eb01d 今天,就带大家一起来安装这一款操作系统,一起来尝尝鲜。 1、下载镜像文件

华为员工发文:如果华为倒下了,无人扛得起国内通信和芯片的大旗!

假装没事ソ 提交于 2020-11-27 17:01:42
华为员工发文:如果华为倒下了,无人扛得起国内通信和芯片的大旗! 「 读者福利!2 TB 各类技术资源免费赠送 」 华为,一家国内在舆论中不断起浮的科技公司,这是我对华为这家企业第一眼的理解。不管什么时候,总有说好的,说不好的一家企业。 去年开始,这种现象是更加的明显,对于华为的消息是一条接一条,有种“一波未平,一波又起的意思。 1、2018年12月1日孟晚舟在加拿大被捕,之后事件一直持续发酵,到目前为目,虽然经历过庭审等,但一直也没能有一个明确的结果。 2、既而华为在5g的开展方面,就遭遇了美国的阻扰,高通、英特尔终止与华为的业务,其目的就是为了阻碍华为5g部署。 3、去年5月20日,谷歌母公司发言人称,已按照总统特朗普的要求,停止与华为的相关业务及服务。其中包含了硬件、技术、以及软件等方面,还包括谷歌旗下的手机操作系统:安卓。 4、去年的“鸿蒙”系统事件,也是一直是业界的一个焦点。 5、再到年底11月的离职员工事件,又让华为一度成了众人眼中的“坏企业” 6、2020年2月13日,美国政府宣布再延长华为临时许可45天,允许与美国公司继续开展业务。华为表示,不管临时许可与否延期,对华为经营产生的实质性影响有限,也不会改变华为一直遭受的不公平对待。 不管怎么样,还是有很多网友表示支持华为! 对于,美国制裁华为这一事件来说,无疑还是说明我们国家的科技力量需要进步,而且进步的空间巨大