Redis持久化(AOF|RDB)
Redis持久化(AOF|RDB)AOFAOF是什么?AOF全称是append only file, 即只追加文件。 AOF持久化是通过保存Redis服务器执行的写命令来记录数据库状态的。 AOF默认是不开启的,,需要在redis.conf文件中配置: 12appendonly yesappendfilename "appendonly.aof" AOF持久化配置项说明: appendonly:是否开启AOF持久化 appendfilename:持久化文件名 redis处理写命令的时,会采取先写内存数据,再记录AOF日志的方式,这样做有两个好处: 减少额外检查开销: 只有内存数据被修改成功后才会写AOF日志,保证了日志都是可执行且正确的 不会阻塞当前的写操作 风险 如果命令执行完成,写日志之前宕机了,会丢失数据。 可能会阻塞下一条写命令的执行: 写操作和记录日志都是主进程(主进程中的redis_aof_write_thread线程),如果在刷盘时,服务器I/O压力过大,导致写硬盘速度很慢,就会阻塞后续的写命令 写AOF日志的过程redis在执行完一个写命令之 ...
现代密码学基础技能
现代密码学基础技能大数据安全与隐私这门课的lab1,要求如下图: 实现思路:• 通过Socket实现文件传输,使用TCP协议确保数据传输的可靠性。• 代码通过读取文件的二进制数据进行传输,支持任意类型的文件。• 通过AES加密算法进行文件数据的加密和解密。• 使用RSA加密算法对AES密钥进行加密,确保密钥的安全传输。• 通过在AES密钥中加入时间戳的方式,确保每次生成不同的密钥,从而保证相同文件每次发送的加密结果不同。 具体实现:客户端 (client.py) 连接服务器o 创建Socket并连接到服务器的指定端口。 AES密钥生成与加密o 生成16字节的随机AES密钥。o 加入时间戳生成唯一的AES密钥。o 使用RSA公钥加密AES密钥并发送给服务器。 文件传输o 读取文件信息(文件名和大小),发送给服务器。o 分块读取文件数据,使用AES进行加密,发送加密数据到服务器。服务端 (server.py) 监听客户端连接o 创建Socket,绑定指定端口,并设置监听队列。 接收并解密AES密钥o 生成RS ...
Redis缓存问题:穿透,击穿,雪崩,双写一致性等
Redis缓存问题:Redis缓存问题:穿透,击穿,雪崩,双写一致性等在高并发场景下,数据库往往是最薄弱的环节,我们通常选择使用redis来进行缓存,以起到缓冲作用,来降低数据库的压力,但是一旦缓存出现问题,也会导致数据库瞬间压力过大甚至崩溃,从而导致整个系统崩溃.今天就聊聊常见的redis缓存问题. 缓存击穿缓存击穿一般指redis中的一个热点数据过期,导致大量请求直接访问数据库的情况,导致数据库瞬间压力过大甚至崩溃. 解决方案: 设置热点数据永不过期,这是一个不错的方案(要考虑业务特性,体量以及成本),前提是热点数据不能频繁发生改变,否则就会出现缓存污染.最好是根据一定的策略进行定时更新 重要接口限流,做好熔断和降级的准备,sentinel是个不错的选择 使用互斥锁,保证同一时刻只有一个线程可以访问数据库,这何尝不是一种限流呢 缓存穿透缓存穿透指缓存和数据库中都没有的数据,用户不断发起请求.这种情况最可能就是有人试图恶意攻击系统 解决方案: 加校验:拦截非法请求,用户鉴权等 redis缓存一个无效值,以防止对同一个key在数据库中的多次查询,但redis中可能会出现大量无效值 ...
海外访问阿里云服务器失败
海外访问阿里云服务器失败由于我的图床是挂在github上,然后使用cloudflare的CDN加速,但在国内访问时,图片的加载速度仍然较慢,所以我经常使用魔法访问已获得更好的体验。但我发现,最近使用魔法访问时,我无法访问到我的网站。我去检查了下,安全组规则配置是没问题的,那么原因很可能就出现在防火墙上. 我去检查了下,发现我的服务器根本就没开防火墙,这是一个很奇怪的事,没开就不应该有问题啊.然后我尝试将防火墙打开,开放80和443端口,重启防火墙,然后就可以成功访问了. 步骤如下: 查看防火墙状态:1systemctl status firewalld 打开防火墙1systemctl start firewalld 查看已开放的端口1firewall-cmd --list-ports 打开80和443端口12firewall-cmd --zone=public --add-port=80/tcp --permanentfirewall-cmd --zone=public --add-port=443/tcp --permanent 重启防火墙1firewall-cmd --reload ...
数据库分库分表
数据库分库分表分库分表到底是什么分库分表其实是分库,分表,分库分表的总称 分库将数据按照一定规则存储到不同的数据库中,每个数据库存储一部分数据 分库主要解决的是并发量过大的问题,并发量一旦上升,那么数据库就可能成为系统的瓶颈,因为数据库的连接数量是有上限的,虽然可以进行调整,但并不是无限调整的。所以,当数据库的读或者写的 QPS(每秒查询数) 太高,从而导致你的数据库连接数量不足的时候,就需要考虑到分库了,通过在增加数据库实例的方式来提供更多的数据库连接,从而提升系统的并发度。这里拿一个电商系统的数据库来举例,当你微服务在做服务拆分的时候,你会按照功能模块去把你的系统进行服务拆分,这个时候,就需要将每个模块的数据从一个单独的数据库中拆开,分成订单、物流、商品、用户等多个数据库,然后随着业务的发展,每个单独的业务数据库也需要进行分库了,如下图所是。 分表将一张表按照一定规则拆分成多张表,每张表存储一部分数据 相比较于分库,分表主要解决的是数据量大的问题,即通过将数据拆分到多个表,减少单表的数据量,从而提升查询速度。 分库分表这一般发生在数据库连接不够(分库解决的问题)以及单表数据量过大 ...
博客网站遇到的一些问题
博客网站遇到的一些问题错把版本升级最近阿里云显示我的博客网站有漏洞,我便想着去把它给修了,由于经验不足且没有认真看官方的解决方案,我把centos从版本7直接升到了版本8,导致博客网站挂了,服务不可用.由于是大版本升级,而且之前也错误升级了一些东西,于是我选择了重置环境然后重新部署.事后想了一下,主要问题有两点: 没有仔细看官方的解决方案,使用了更宽范围的update命令,导致centos和一些组件错误升级,从而导致博客网站无法正常访问. 没有备份手段,阿里云其实提供了快照,但我以为自己不会用上,而且能省一笔钱,也就没开通 阿里云重置环境的方法: 停止云服务器 找到更换操作系统选项,选择更换系统盘 对系统盘做初始设置 博客网站无法正常访问这个问题在于浏览器,我一直没有给我的网站配置SSL证书,所以一直用的是http协议,现在edge浏览器和chrome浏览器已经强制将http转换为https,导致我的网站无法正常访问.解决方案有如下两种: 1.更改HSTS在edge浏览器中,输入edge://net-internals/#hsts,在Delete domain sercu ...