Redis

redis实现分布式锁

大兔子大兔子 提交于 2020-08-13 14:09:29
一、分布式锁简介 锁 是一种用来解决多个执行线程 访问共享资源 错误或数据不一致问题的工具。 如果 把一台服务器比作一个房子 ,那么 线程就好比里面的住户 ,当他们想要共同访问一个共享资源,例如厕所的时候,如果厕所门上没有锁...更甚者厕所没装门...这是会出原则性的问题的.. 装上了锁,大家用起来就安心多了,本质也就是 同一时间只允许一个住户使用 。 而随着互联网世界的发展,单体应用已经越来越无法满足复杂互联网的高并发需求,转而慢慢朝着分布式方向发展,慢慢进化成了 更大一些的住户 。所以同样,我们需要引入分布式锁来解决分布式应用之间访问共享资源的并发问题。 为何需要分布式锁 一般情况下,我们使用分布式锁主要有两个场景: 避免不同节点重复相同的工作 :比如用户执行了某个操作有可能不同节点会发送多封邮件; 避免破坏数据的正确性 :如果两个节点在同一条数据上同时进行操作,可能会造成数据错误或不一致的情况出现; Java 中实现的常见方式 上面我们用简单的比喻说明了锁的本质: 同一时间只允许一个用户操作 。所以理论上,能够满足这个需求的工具我们都能够使用 (就是其他应用能帮我们加锁的) : 基于 MySQL 中的锁 :MySQL 本身有自带的悲观锁 for update 关键字,也可以自己实现悲观/乐观锁来达到目的; 基于 Zookeeper 有序节点 :Zookeeper

基于 abp vNext 和 .NET Core 开发博客项目

百般思念 提交于 2020-08-13 13:40:21
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 基于 abp vNext 和 .NET Core 开发博客项目 - 完善与美化,Swagger登场 基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先 基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查 基于 abp vNext 和 .NET Core 开发博客项目 - 统一规范API,包装返回模型 基于 abp vNext 和 .NET Core 开发博客项目 - 再说Swagger,分组、描述、小绿锁 基于 abp vNext 和 .NET Core 开发博客项目 - 接入GitHub,用JWT保护你的API 基于 abp vNext 和 .NET Core 开发博客项目 - 异常处理和日志记录 基于 abp vNext 和 .NET Core 开发博客项目 - 使用Redis缓存数据 基于 abp vNext 和 .NET Core 开发博客项目 - 集成Hangfire实现定时任务处理 基于 abp vNext 和 .NET Core 开发博客项目 - 用AutoMapper搞定对象映射 基于 abp

面试必问之redis

吃可爱长大的小学妹 提交于 2020-08-13 13:26:14
这里是我作为10年面试经验总结的面试中必问问题 问题一 简单介绍下redis redis是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI c语言编写的key-value存储系统(区别于MySQL的二维表格的形式存储。)。和Memcache类似,但很大程度补偿了Memcache的不足。和Memcache一样,Redis数据都是缓存在计算机内存中,不同的是,Memcache只能将数据缓存到内存中,无法自动定期写入硬盘,这就表示,一断电或重启,内存清空,数据丢失。所以Memcache的应用场景适用于缓存无需持久化的数据。而Redis不同的是它会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,实现数据的持久化 问题二 redis有哪几种数据结构 1、string是redis最基本的类型,可以理解成与memcached一模一样的类型,一个key对应一个value。value不仅是string,也可以是数字。string类型是二进制安全的,意思是redis的string类型可以包含任何数据,比如jpg图片或者序列化的对象。string类型的值最大能存储512M。 2、Hash是一个键值(key-value)的集合。redis的hash是一个string的key和value的映射表,Hash特别适合存储对象。常用命令:hget,hset,hgetall等。 3

springSecurity+oauth2实现权限认证系统(资源服务器与授权服务器分离,client信息入库,token存入redis持久化)

百般思念 提交于 2020-08-13 13:01:21
文章目录 一、前言 二、oAuth2授权码模式认证流程 三、权限认证系统的三个角色 四、demo实现的功能 五、技术点 1.SpringSecurity自定义登录页面,账密信息入库 配置自定义登录页面 账密信息入库 2.集成通用Mapper 六、认证服务器 1.配置client信息入库存储 2.配置access_token等令牌信息持久化到redis中 3.授权服务器提供的一些访问接口 七、资源服务器 1.受保护资源有关配置 2.资源服务器与授权服务器分离配置 八、客户端 1.访问授权服务器获取令牌 2.使用access_token来访问资源服务器 3.实现客户端访问指定接口完成资源服务器登录 九、完整流程演示 1.客户端登录: 2.跳转授权认证页面 3.完成授权认证 4.访问受保护资源 5.客户端访问指定接口完成资源服务器登录 十、项目地址 一、前言 本文章侧重实战,是为线上系统做的一个demo。适合对oauth2有一定理解后再阅读。 如果对oauth2理解还不够深入,建议先阅读 芋道 Spring Security Oauth2入门 来夯实一下基础。 这个demo主要实现了资源服务器与授权服务器分离,client信息入库,token信息在redis中持久化,demo的github地址会在文末贴出。 二、oAuth2授权码模式认证流程 首先来看授权码认证模式的一个流程图:

解决ServiceStack.Redis的6000次限制问题

隐身守侯 提交于 2020-08-13 11:48:33
找到项目中ServiceStack.Text.dll文件的版本,比如我的版本是5.0.0,到GitHub上下载对应的源码( https://github.com/ServiceStack/ServiceStack.Text/tags ) 打开解决方案,重新生成ServiceStack.Text项目,如果嫌弃生成速度太慢,可以先卸载另外两个项目,如图: 找到LicenseUtils.cs文件修改RedisRequestPerHour对应的值,默认值是6000我这里修改成了600000。重新生成项目,将生成的文件替换到项目中。 来源: oschina 链接: https://my.oschina.net/u/4354530/blog/4340131

php进阶面试题总结

*爱你&永不变心* 提交于 2020-08-13 09:53:16
php进阶面试题总结 一、总结 一句话总结: 工作之后,一定要及时总结深入学习,别被温水煮青蛙了 1、mysql_real_escape_string mysql_escape_string有什么本质的区别,有什么用处,为什么被弃用? a、mysql_real_escape_string需要预先连接数据库,并可在第二个参数传入数据库连接(不填则使用上一个连接) b、两者都是对数据库插入数据进行转义,但是mysql_real_escape_string转义时,会考虑数据库连接的字符集。 c、它们的用处都是用来能让数据正常插入到数据库中,并防止sql注入,但是并不能做到100%防止sql注入。 再问:为什么不能100%防止? 答;因为客户端编码以及服务器端编码不同,可能产生注入问题,但是其实这种场景不多见。 继续答:被弃用的原因是官方不再建议使用mysql_xx的数据库操作方式,建议使用pdo和mysqli,因为不管从性能跟安全来看,mysqli都比mysql要好。 衍生出来的问题是mysqli的连接复用(持久化)问题,这一块我并没有答好。 2、什么是内存泄漏,js内存泄漏是怎么产生的? 内存泄漏是因为一块被分配内存既不能被使用,也不能被回收,直到浏览器进程结束。 产生泄漏的原因是闭包维持函数内局部变量,不能被释放,尤其是使用闭包并存在外部引用还setInterval的时候危害很大。

Github的高级使用

给你一囗甜甜゛ 提交于 2020-08-13 09:31:00
in seckill in:name 名字包含seckill seckill in:description 描述包含seckill seckill in:readme readme中包含seckill seckill in:name,description,readme 三个都包含seckill star/fork springboot stars:>=5000 点赞数超过5000的 springcloud forks:>=500 fork数超过500的 scala forks:100..200 stars:8000:10000 forks在100到200之间,stars数在8000到10000之间的scala项目 awesome awesome redis 搜索redis相关的学习书籍、工具 高亮标记 https://github.com/superhj1987/awesome-config/blob/master/redis/redis.conf#L5 https://github.com/superhj1987/awesome-config/blob/master/redis/redis.conf#L5-L20 项目内搜索 t 主分支搜索 参考地址:help.github.com 来源: oschina 链接: https://my.oschina.net

勇攀监控高峰-EMonitor之根因分析 背景

℡╲_俬逩灬. 提交于 2020-08-13 08:27:06
背景 阿里集团针对故障处理提出了“ 1/5/10 ”的目标-- 1 分钟发现、5 分钟定位、10 分钟恢复,这对我们的定位能力提出了更高的要求。 EMonitor 是一款集成 Tracing 和 Metrics ,服务于饿了么所有技术部门的一站式监控系统,其覆盖了 前端监控、接入层监控; 业务 Trace 和 Metric 监控; 所有的中间件监控; 容器监控、物理机监控、机房网络监控。 每日处理总数据量 近 PB ,每日写入指标数据量 上百 T ,日均几 千万 的指标查询量,内含 上万个 图表、 数千个 指标看板,并且已经将所有层的监控数据打通并串联了起来。但是在故障来临时,用户仍然需要花费大量时间来查看和分析 EMonitor 上的数据 比如阿里本地生活的下单业务,涉及到诸多应用,每个应用诸多 SOA 服务之间错综复杂的调用关系,每个应用还依赖 DB、Redis、MQ 等等资源,在下单成功率下跌时,这些应用的负责人都要在 EMonitor 上查看指标曲线以及链路信息来进行人肉排障以自证清白,耗时耗力,所以自动化的根因分析必不可少。 根因分析建模 业界已经有好多在做根因分析的了,但是大都准确率不高,大部分还在 40% 到 70% 之间,从侧面说明根因分析确实是一个难啃的骨头。 根因分析看起来很庞大,很抽象,无从下手,从不同的角度(可能是表象)去看它,就可能走向不同的路

96年/离职8个月/拒绝华为offer/目前自由职业-记这大半年来的挣扎与迷茫

帅比萌擦擦* 提交于 2020-08-13 06:05:01
仅以此文,记录自己这大半年来的挣扎与迷茫。 2019 年 11 月 在公司工作七个月之后,我被裁员了。 回忆自己这七个月的经历,不管是遇到的人和事,更多感到的是收获和感恩,于是我写下了: 「应届毕业生工作7个月小结」 ,当做对于这七个月的小小总结。 本想好好休息几天,不料第二天还在睡梦中,就有 HR 和猎头找上门来了.. 既然来了,就好好准备复习面试吧.. 2019 年 12 月 疯狂面试ing... 然后 12 月开始了疯狂面试,包括华为 (口头 Offer) 、字节跳动 (一面挂,面试官说很久没问过应届生了..) 等,一下子就面到了 12 月中旬了。 说实话,那段时间好怕面试官问: 「你对 HashMap 了解多少?」 这种问题。 从「基础结构」到「 1.7 到 1.8 版本变化」; 从「与其他 Map 结构对比和区别」到「 HashMap 具体的 put/resize/hash 等的具体过程」; 从「为什么 String/Integer 适合做 HashMap 的 K 」到「 HashMap 为什么不直接使用 hashCode() 处理后的哈希值直接作为 table 下标」; 从「什么是哈希,什么是哈希冲突」到「 HashMap 如何解决哈希冲突」; 再从 HashMap 延伸的其他 Java 常用集合.... 这些教科书式回答我都快说吐了.. 疯狂面试的生活

redis 博文

丶灬走出姿态 提交于 2020-08-13 05:56:50
关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁 https://www.cnblogs.com/JJJ1990/p/10496850.html 来源: oschina 链接: https://my.oschina.net/u/3391025/blog/4428381