redis
文章平均质量分 52
腌制99%的咸鱼
这个作者很懒,什么都没留下…
展开
-
《Redis设计与实现》阅读笔记——数据结构与对象
简单动态字符串 redis的底层是C语言,但是没有简单的使用C语言传统的以空字符结尾的字符数组表示字符串。使用的是SDS表示字符串。 struct sdshdr { //记录buf数组中已经使用的字节数量,等于SDS保存字符串长度(去除了结尾空字符串) int len; //记录buf中未使用的字节的数量 int free; //字节数组,保存字符串 char buff[]; } 1.1 SDS与C字符串区别 常数复杂度获取字符串长度 杜绝缓冲区溢出 对buff进行操作的时候,若剩余空间不够,原创 2021-08-15 19:13:09 · 65 阅读 · 0 评论 -
8、防刷限流技术
10.1 本章目标 掌握验证码生成与验证技术 掌握限流原理与实现 掌握防黄牛技术 10.2 验证码技术 包装秒杀令牌前置,需要验证码来错峰 数学公式验证码生成器 Util包内的CodeUtil package com.miaoshaproject.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.awt.i原创 2020-09-14 01:13:26 · 255 阅读 · 0 评论 -
7、流量削峰技术
本章目标 掌握秒杀令牌的原理和使用方式 掌握秒杀大闸的原理和使用方式 掌握队列泄洪的原理和使用方式 抛缺陷: 秒杀下单接口会被脚本不停的刷 秒杀验证逻辑和秒杀下单接口强关联,代码冗余度高秒杀下单和对活动是否开始是没有关联的,接口关联过高 秒杀验证逻辑复杂,对交易系统产生无关联负载 9.2秒杀令牌实现 秒杀接口需要依靠令牌才能进入 秒杀的令牌由秒杀活动模块负责生成 秒杀活动模块对秒杀令牌生成全权处理,逻辑收口 秒杀下单前需要先获得秒杀令牌 PromoService接口上实现generate原创 2020-09-13 18:55:18 · 292 阅读 · 0 评论 -
5、交易性能优化技术之缓存库存
7.1 交易性能瓶颈 交易验证完全依赖数据库 库存行锁 后置处理逻辑 每次做交易,至少有六次的数据库io操作 7.2-7.3 交易验证优化 用户风控策略优化:策略缓存模型化 在开始交易后,针对活动实时信息和用户实时信息的验证,目的是为了风控策略,检查用户账号是否异常,是否异地登陆,策略是:通过异步的方式将用户模型写入缓存,与实时信息做一致性检验,做到风控策略 活动校验策略优化:引入活动发布流程,模型缓存化,紧急下线能力 实时活动的缓存存在一个问题:如果后台修改活动信息(修改活动结束时间),但redis原创 2020-09-11 01:29:36 · 525 阅读 · 0 评论 -
4、查询性能优化技术之页面静态化
6.1-6.2 静态资源CDN引入 用户将静态资源数据请求到ECS服务器,ECS服务器解析到腾讯云的CDN中,CDN可以理解为一个无限大的内容磁盘缓存,本身没有文件存储。当用户访问getItem的一个静态资源文件的时候,会根据路由规则查看本地是否有这样的文件,如果有直接返回,没有就回源到源站,回源到下面的OSS中获取静态资源文件。 CDN一边返回对应的文件,一边将文件按照http指示的生命周期缓存起来,以便下次用户访问时,直接返回。 CDN有很多的加速节点,当用户请求CDN的时候,CDN会返回一个就近的节点原创 2020-09-09 23:34:03 · 342 阅读 · 0 评论 -
3、查询性能优化技术之多级缓存
5.1本章目标 5.2缓存设计原则概览 缓存设计原则: 用快速存取设备,用内存 将缓存推到离用户最近的地方 脏缓存清理 我们的项目采用多级缓存的架构 第一级 Redis缓存 Redis缓存有集中管理缓存的特点,是常见NoSql数据库组件 第二级 热点缓存本地缓存 热点数据存到JVM本地缓存中 第三级 nginx proxy cache缓存 所有数据最后都会在nginx服务器上做反向代理,nginx服务器也可以开启proxy cache缓存 第四级 nginx lua缓存 nginx定制lua脚本做nginx原创 2020-09-09 20:25:43 · 771 阅读 · 0 评论 -
解决redis连接错误:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to...
连接redis数据库时突然报错: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled,原创 2020-09-06 20:06:00 · 1028 阅读 · 0 评论