Redis

阿里云服务器被挖矿攻击,redis无密码访问进入

不打扰是莪最后的温柔 提交于 2020-12-12 12:56:45
1.查找进程 top,并删除挖矿进程 top kill -9 Pid 2. 查询文件所在位置 find / -name 'processname' 3.进入到文件目录 按时间顺序查找文件 ls -lt //按时间排序 4.删除植入文件 rm -rf newbat.sh //报错 rm: cannot remove ‘newdat.sh’: Operation not permitted 5.即使你是root权限,但是你仍然也无法删除,需要进行操作 lsattr newdat.sh chattr -i newdat.sh rm -rf newdat.sh //经过上两步操作即可删除root无法删除的文件。 6.修改redis配置文件 vi redis.conf //查找requirepass,修改requirepass后内容,保存 requirepass 123456 ps -ef|grep redis kill -9 pid #redis进程 7.重新启动redis 8.(后续跟踪) 后面又出现问题,我将0.0.0.0注释掉,修改阿里云登录密码,重新删除上面找到的可疑脚本任务文件,还在观察。 完。 来源: oschina 链接: https://my.oschina.net/u/4303145/blog/4793944

一文让你彻底了解Redis基础,史上最全【建议新手收藏】

时间秒杀一切 提交于 2020-12-12 12:49:44
一、Redis简介 redis简介(Remote dictionary Server 远程字典服务器): 是完全开源免费的,由C语言编写的,一个高性能的(key/value)分布式内存数据库,基于内存运行, 并支持持久化的Nosql数据库,也被称为" 数据结构服务器 "。 提前剧透、redis关于key-value的三大特点: redis是支持持久化的! 我们可以控制 数据 何时,用何种方式 保存到磁盘中,每次重启再次加载该文件,可以完成数据恢复 redis不单单支持简单的key-value数据类型,同时还可以提供list,set,hash,zset等数据类型的存储 支持数据的备份,mater-slave模式,即,当下时髦的主从复制读写分离 应用场景: 内存存储的持久化: 虽然redis是单线程实现的,但是支持异步将数据持久化到硬盘上,同时不影响继续服务 发布订阅 定时器,计时器: 我们可以把这个特性用到发短信的服务中,每次发送完短信后,就进入倒计时,在指定的时间内,决绝发送第二次,有效的缓解短信服务的压力,节流 取出最新的N个数据的操作: 比如新浪微博的评论系统,他要展示最新的10条评论,就是把最新的10条评论的id放到redis的list里面 二、安装 去官网下载压缩包 : https://redis.io/download 安装依赖、编译、安装: [ root

Restful api 防止重复提交

梦想的初衷 提交于 2020-12-12 10:31:13
当前很多网站是前后分离的,前端(android,iso,h5)通过restful API 调用 后端服务器,这就存在一个问题,对于创建操作,比如购买某个商品,如果由于某种原因,手抖,控件bug,网络错误,可能导致一次操作实际上购买了多次同一个产品。所以,我们要考虑防止重复提交。这个重复提交我们只限定于创建操作,对于修改和删除操作,原则上是幂等的,不用担心,查询操作更不用担心重复操作。 方案一,前端在提交时候生成一个基于时间的sequence,将这个参数传到后端,后端根据uriPath+userId+sequence作为key,采用redis分布式锁,setNX,防止重复提交 方案二,前端不用传递sequence,后端根据请求的payload和其他参数来确定唯一,uriPath+userId+MD5(JsonString(所有参数))作为key,用redis分布式锁 具体实现: 对于方案一,防止重复提交交给了前端控制,sequence的生成可以是时间戳。后端可以做在servlet filter 中或者在restful 框架的filter中比如resteasy 的ContainerRequestFilter中 对于第二种方案,防止重复提交完全由后端控制,前端无感,不能做在filter中,因为request payload只能被消费一次。可以用spring aop来实现

Redis高可用集群搭建

断了今生、忘了曾经 提交于 2020-12-12 10:01:30
绪论 redis 集群需要至少要三个 master 节点,下面将搭建三个 master 节点,并且给每个 master 再搭建一个 slave 节点,总共 6 个 redis 节点,这里用三台机器部署 6 个 redis 实例,每台机器一主一从。设备为 192.168.137.11、192.168.137.12和192.168.137.13 1. 下载redis http://www.redis.cn/download.html 2.上传并解压 tar -zxvf /redis-5.0.4.tar.gz 需要将redis分别上传到三台设备上执行编译安装,下面以192.168.137.11设备上的编译 、安装和配置为例 3.编译并安装redis 需要安装gcc,如果没有安装gcc,使用yum -y install gcc 安装即可 进入到redis-5.0.4目录,make & make install 即可执行编译和安装,安装后会在/usr/local/bin目录下生成命令文件 4.拷贝并修改配置 在/opt/module目录下创建 redis文件夹,用以保存日志文件、dump文件和配置文件 mkdir -p /opt/module/redis/63{79,80}/logs   拷贝redis-5.0.4/redis.conf文件到 /opt/module/redis/目录下

微服务拆分规范

喜欢而已 提交于 2020-12-12 09:58:29
文章目录 一、微服务拆分规范 1、高内聚、低耦合 2、服务拆分正交性原则 3、服务拆分层级最多三层 4、服务粒度适中、演进式拆分 5、避免环形依赖、双向依赖 6、通用化接口设计,减少定制化设计 7、将串行调用改为并行调用,或者异步化 8、接口应该实现幂等性 9、接口数据定义严禁内嵌,透传 10、避免服务间共享数据库 11、同时应当考虑团队结构 二、微服务拆分时机 1、快速迭代 2、高并发、性能要求 3、提交代码频繁出现大量冲突 4、小功能要积累到大版本才能上线 一、微服务拆分规范 微服务拆分之后,工程会比较的多,如果没有一定的规范,将会非常混乱,难以维护。 1、高内聚、低耦合 紧密关联的事物应该放在一起,每个服务是针对一个 单一职责 的业务能力的封装,专注做好一件事情(每次只有一个更改它的理由)。如下图:有四个服务A、B、C、D,但是每个服务职责不单一,A可能在做B的事情,B又在做C的事情,C又同时在做A的事情,通过重新调整,将相关的事物放在一起后,可以减少不必要的服务。 图1,高内聚、低耦合 通用拆分方式: 先按业务领域拆,如社区、用户、商城、慢病、工单,如果有相同功能需要聚合,则进行下沉(垂直)。 再按功能定位拆(水平),如商城业务复杂度提高之后可进一步拆分为商品、订单、物流、支付。 按重要程度拆,区分核心与非核心,如订单核心,订单非核心。 2、服务拆分正交性原则

Redis 高可用分布式集群

南楼画角 提交于 2020-12-12 09:41:30
一,高可用 高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响。 停止服务的原因可能由于网卡、路由器、机房、CPU负载过高、内存溢出、自然灾害等不可预期的原因导致,在很多时候也称单点问题。 (1)解决单点问题主要有2种方式: 主备方式 这种通常是一台主机、一台或多台备机,在正常情况下主机对外提供服务,并把数据同步到备机,当主机宕机后,备机立刻开始服务。 Redis HA中使用比较多的是keepalived,它使主机备机对外提供同一个虚拟IP,客户端通过虚拟IP进行数据操作,正常期间主机一直对外提供服务,宕机后VIP自动漂移到备机上。 优点是对客户端毫无影响,仍然通过VIP操作。 缺点也很明显,在绝大多数时间内备机是一直没使用,被浪费着的。 主从方式 这种采取一主多从的办法,主从之间进行数据同步。 当Master宕机后,通过选举算法(Paxos、Raft)从slave中选举出新Master继续对外提供服务,主机恢复后以slave的身份重新加入。 主从另一个目的是进行读写分离,这是当单机读写压力过高的一种通用型解决方案。 其主机的角色只提供写操作或少量的读,把多余读请求通过负载均衡算法分流到单个或多个slave服务器上。 缺点是主机宕机后,Slave虽然被选举成新Master了,但对外提供的IP服务地址却发生变化了,意味着会影响到客户端。

硬核干货!Redis 分布式集群部署实战

僤鯓⒐⒋嵵緔 提交于 2020-12-12 07:51:31
原理: Redis集群采用一致性哈希槽的方式将集群中每个主节点都分配一定的哈希槽,对写入的数据进行哈希后分配到某个主节点进行存储。 集群使用公式(CRC16 key)& 16384计算键key数据那个槽。 16384个slot均匀分布在各个节点上。 集群中每个主节点将承担一部分槽点的维护,而槽点中存储着数据,每个主节点都有至少一个从节点用于高可用。 节点通信方式: 开启一个端口 设置的端口号+10000,用于集群之间节点通信交换信息。 每个节点默认每秒10次选择随机5个节点发送ping消息,将自身信息和知道的集群信息传递,收到ping消息后返回pong消息做回复,最后通过这种随机的消息交换,最终每个节点将获得所有信息。 当某个主节点挂掉,所有节点将会发现主节点挂掉了,作为主节点的从节点,就会接替主节点的工作,然后告诉所有其它节点,他成为了主。这样其它存活节点,就将它们维护的信息表更新从节点将接任做主,如果都挂掉集群将报错。当从一个节点操作,根据一致性哈希计算后将存储在其中一个主节点中,从节点将同步主的数据。 redis cluster是去中心化的,集群中的每个节点都是平等的关系,每个节点都保存各自的数据和整个集群的状态。每个节点都和其他所有节点连接,而且这些连接保持活跃。 搭建集群时,会为每一个分片的主节点,对应一个从节点。实现slaveof功能,同时当主节点down

硬核干货! Redis 性能优化, 建议收藏!

六月ゝ 毕业季﹏ 提交于 2020-12-12 07:22:47
在一些网络服务的系统中,Redis 的性能,可能是比 MySQL 等硬盘数据库的性能更重要的课题。比如微博,把热点微博[1],最新的用户关系,都存储在 Redis 中,大量的查询击中 Redis,而不走 MySQL。 那么,针对 Redis 服务,我们能做哪些性能优化呢?或者说,应该避免哪些性能浪费呢? Redis 性能的基本面 在讨论优化之前,我们需要知道,Redis 服务本身就有一些特性,比如单线程运行。除非修改 Redis 的源代码,不然这些特性,就是我们思考性能优化的基本面。 那么,有哪些 Redis 基本特性需要我们考虑呢?Redis 的项目介绍中概括了它特性: Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported. 首先,Redis 使用操作系统提供的虚拟内存来存储数据。而且,这个操作系统一般就是指 Unix。Windows 上也能运行 Redis,但是需要特殊处理。如果你的操作系统使用交换空间,那么 Redis 的数据可能会被实际保存在硬盘上。关注公众号:程序员白楠楠,获取2020最新面试题 其次,Redis 支持持久化,可以把数据保存在硬盘上。很多时候

MySQL语法基础

随声附和 提交于 2020-12-12 06:55:47
1.MySQL管理 1.1启动和关闭服务 # Linux service mysqld start # 启动 service mysqld stop # 关闭 service mysql restart # 重启 # Windows net start mysql # 启动 net stop mysql # 关闭 1.2常用命令 登录 mysql -u root -p[密码] [-P端口] [-h地址] USE 数据库名 列出 MySQL 数据库管理系统的数据库列表 mysql> USE sql_test; Database changed SHOW DATABASES: 列出 MySQL 数据库管理系统的数据库列表 mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec) SHOW TABLES: 显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库 mysql> SHOW TABLES; +-------------------

spring boot redis分布式锁

我是研究僧i 提交于 2020-12-12 02:36:06
一. Redis 分布式锁的实现以及存在的问题 锁是针对某个资源,保证其访问的互斥性,在实际使用当中,这个资源一般是一个字符串。使用 Redis 实现锁,主要是将资源放到 Redis 当中,利用其原子性,当其他线程访问时,如果 Redis 中已经存在这个资源,就不允许之后的一些操作。spring boot使用 Redis 的操作主要是通过 RedisTemplate 来实现,一般步骤如下: 将锁资源放入 Redis (注意是当key不存在时才能放成功,所以使用 setIfAbsent 方法): redisTemplate.opsForValue().setIfAbsent("key", "value"); 设置过期时间 redisTemplate.expire("key", 30000, TimeUnit.MILLISECONDS); 释放锁 redisTemplate.delete("key"); 一般情况下,这样的实现就能够满足锁的需求了,但是如果在调用 setIfAbsent 方法之后线程挂掉了,即没有给锁定的资源设置过期时间,默认是永不过期,那么这个锁就会一直存在。所以需要保证设置锁及其过期时间两个操作的原子性,spring data的 RedisTemplate 当中并没有这样的方法。但是在jedis当中是有这种原子操作的方法的,需要通过 RedisTemplate 的