
redis
文章平均质量分 60
我才是真的封不觉
某外企高级开发,菜鸟一个,希望在博客记录自己技术的成长,目标是成为一个好脾气的技术大牛。
b站账号 觉哥学java
展开
-
144-商城业务-购物车-购物车流程总结
1.首先 离线状态 与 登录状态分为 离线状态 与 登录状态离线状态 设计是 模仿京东 在浏览器设置一个cookie 过期时间一个月 值整个唯一的就行 比如 UUID然后 购物车 的在 redis 中存储数据类型是 hash对应 java中类型是 Map<String,Map<String,CartItem>>外层key是 购物车id cart:用户id( 如果未登录 用户id取cookie的值)内层key是 skuid 然后值是订单项2.拦截器...原创 2021-11-25 23:38:47 · 1118 阅读 · 0 评论 -
分布式缓存技术-redis应用篇 (redisson ,数据一致性(缓存穿透,雪崩,击穿等问题),布隆过滤器 )
一、redis客户端工具哪家强?你可能听过jedis,你可能也听过lettuce ,但是redisson 这玩意 相当于把java中的常用数据结构比如下面的集合,还有锁都在redis中实现了,集群啊啥的他也都支持 分布式环境下 就用它了主要它还是我们中国人写的 链接如右redisson使用链接...原创 2021-09-30 00:17:35 · 614 阅读 · 0 评论 -
分布式缓存技术-redis分布式篇 (redis主从复制,哨兵机制,集群搭建)
一、为什么Redis需要集群与大多数中间件一样 当单一节点时 系统出现瓶颈主要下面这几个触发点二、Redis主从复制master就是正在使用的节点 slave 是 备用的当master出现问题时随时替代的节点当然这俩词 西方现在有些敏感 有歧视意味可能后面不能用了设置主从的方式1.配置文件比如我当前机器是 186 我在 187与 188中如下操作就好了 取消注释 改配置2.启动时添加参数还可以在节点启动时 后面加参数 --slaveof ip:por...原创 2021-09-28 20:59:59 · 374 阅读 · 0 评论 -
分布式缓存技术-redis基础篇 (redis里只有五种数据类型?redis的数据类型源码与底层实现是?为啥这样设计?不同数据类型应用场景是?被面试官问倒了就赶紧来瞅瞅把)
一、前言这一节主要 就是 一些发展 比较 介绍 大致看看就好1.1redis诞生历程它是为了记录用户访问记录而诞生的,最开始的数据结构就是下面这种,就是简单的队列1.2 关系型数据库与非关系型数据库的区别1.2.1关系型数据库我们都知道 一般数据都存在关系型数据库 mysql oracle 这些里面 那么 为什么 还要用到 非关系型数据库 redis呢? 看看下面俩图特点不足1.2.2 非关系型数据库非关系数据库具有的特点非关...原创 2021-09-28 20:03:47 · 298 阅读 · 0 评论 -
分布式缓存技术-redis高级篇 (redis为啥这么快?同事又删库跑路咋办?没关系,教你)
一、发布订阅模式1.1 直接订阅与发送如下是订阅指定频道后 然后发送消息的命令1.2 按规则订阅然后发送lua脚本 阻塞其它客户端和命令的执行原创 2021-09-28 19:42:32 · 307 阅读 · 0 评论 -
139-商城业务-认证服务-SpringSession原理
简而言之就是利用了装饰者模式在过滤器中把原生的request与response替换了,session都是要通过request.getSession()来获取的,利用这点把request包装类中getSession重写了,改成从redisRepository里面取,然后过期时间自动续期也实现了,比如过期时间为30分钟,那么浏览器开着时会自动需求,浏览器关闭后30分钟后过期点进注解,一层层看代码,主要代码为如下三处...原创 2021-04-27 16:44:28 · 240 阅读 · 0 评论 -
138-商城业务-认证服务-SpringSession整合+序列化方式修改+自定义SpringSession完成子域session共享
看完下面内容你会发现全篇做的事其实下面一句话就说完了,你只需要完成下面这几个步骤,并且页面跨域跳转时成功显示了session内的内容那么就成功了添加依赖 添加配置 启动类加注解 代码给session内添加数据 实体类序列化注解添加页面通过session获取登录用户名1.添加依赖 <dependency> <groupId>org.springframework.session</groupId> ...原创 2021-04-27 12:53:37 · 589 阅读 · 0 评论 -
137-商城业务-认证服务-分布式session不共享不同步问题与最终解决方案得出
1.cookie与session是个啥?数据格式:键值对保存位置:Session信息是存放在server端,但session id是存放在client cookie的Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cookie时将不能再使用生命周期:两者最大的区别在于生存周期,一个是IE启动到IE关闭.(浏览器页面一关 ,session就消失了),一个是预先设置的生存周期,或永久的保存于本地的文件。(cookie)举例:比如我登录CSDN,第一次登录时通过用原创 2021-04-26 14:22:34 · 275 阅读 · 0 评论 -
day104-缓存-分布式锁-分布式锁原理与使用
1.原理分布式锁的一个基本原理就是多个服务内的多个线程访问某资源时,全都到同一个地方占坑,这个地方就是缓存,被所有服务共享的缓存,第一个访问的线程会去缓存中设置一个keyvalue缓存,由于是原子性的操作,后面的线程设置同样key时缓存失败,从而实现一个分布式的锁2.linux命令实现方式指令参考http://www.redis.cn/commands/set.html从上链接可以看到当给set指令添加NX选项时,只有当key不存在时才能缓存该数据(1)复制四个链接..原创 2021-02-10 01:55:52 · 304 阅读 · 0 评论 -
day103-缓存-缓存使用-本地锁在分布式下的问题
1.模拟分布式环境我们一般的项目都是分布式应用而不是单机的拷贝配置拷贝三次设置不同端口号然后启动2.压测及问题分析这里要访问gulimall.com为了经过nginx监听然后负载均衡结果分析查看到几个应用打印的结果,可以看到有两台机器查询了数据库,为啥呢,这是因为我们加的锁是加在this对象的,他虽然是单例的,但只是在单机应用中,若是个应用,对象是不一样的所以出现查询多次数据库的情况,所以我们需要使用分布式锁,来保证加的同一把锁...原创 2021-02-06 02:41:02 · 281 阅读 · 0 评论 -
day102-缓存-缓存使用-加锁解决缓存击穿问题以及加锁位置的重要性
1.加锁 @Override public Map<String, List<Catelog2Vo>> getCatalogJson() { //先从缓存中尝试获取,若为空则从数据库中获取然后放入缓存 ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue(); String catalogJson = o原创 2021-02-06 01:59:09 · 467 阅读 · 0 评论 -
day101-缓存-缓存使用-缓存穿透、雪崩、击穿问题及解决方案
使用缓存时,分布式环境下可能出现很多问题,下面我来说典型的三个1.穿透2.雪崩3.击穿4.总结缓存穿透:查询一个数据库与缓存都永不存在的数据,导致每次都要查db解决方法=》从db查出null结果也缓存,并加上短暂的过期时间缓存雪崩:大面积缓存同时失效解决方法=》缓存加过期时间时加随机值,别都加一样的,比如1-5分钟随机缓存击穿:某一个缓存key,单点失效后,导致数据库被高并发请求同时访问解决方法=》加锁,第一个请求进来时就加锁,后面的请求自然从缓存中能查.原创 2021-02-05 19:54:57 · 175 阅读 · 0 评论 -
day100-缓存-缓存使用-压力测试出的内存泄露及解决(Lettuce低版本bug问题解决)
1.压测查看聚合报告填表发现使用缓存后,获取三级分类比之前快了很多,吞吐量多了几百2.出现内存泄露问题分析及解决我上面压测没报错是因为我使用的springboot版本高点,视频内的springboot版本低些,所以带的lettuce版本也低,该lettuce有个bug,会报下面错误,直接内存不够分配分析:解决方式有两种,使用高版本lettuce,或者切换使用jedis使用jedis前记得屏蔽data-redis内携带的lettuce依赖,jedis版本无需指名,...原创 2021-02-05 15:54:01 · 1527 阅读 · 1 评论 -
day99-缓存-缓存使用-改造三级分类业务
1.三级分类业务代码改造将原本一个方法改为俩方法,代码如下 @Override public Map<String, List<Catelog2Vo>> getCatalogJson(){ //先从缓存中尝试获取,若为空则从数据库中获取然后放入缓存 ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();原创 2021-02-05 15:14:20 · 197 阅读 · 0 评论 -
day98-缓存-缓存使用-整合redis测试
1.product模块中添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>2.添加相关配置上面添加依赖后可以收到RedisAutoConfigura原创 2021-02-05 13:34:03 · 140 阅读 · 0 评论 -
day97-缓存-缓存使用-本地缓存与分布式缓存介绍及使用场景
1.为什么及什么时候使用缓存前面对三级分类请求已经做了几方面的优化,然而吞吐量还不算太理想,这个时候我们就需要使用缓存了什么场景需要使用缓存呢?读模式下基本的流程伪代码及注意设置过期时间写模式下基本的流程这个我就不多说了,就是在写入数据库的同时把缓存也同时更新2.本地缓存与分布式缓存本地缓存适用于单机应用,比如map做本地缓存,就是如果是分布式情况下分布式本地缓存带来的问题1)缓存不共享在这种情况下,每个服务都有一个缓存,但是这个缓存并不原创 2021-02-04 15:39:54 · 348 阅读 · 0 评论 -
谷粒商城day06-docker安装Redis
还是像往常一样,su root 输入密码vagrant 以切换到root用户1.下载redis镜像(这里不指定版本就默认下载最新版)docker pull redis2.创建文件以做配置mkdir -p /mydata/redis/conftouch /mydata/redis/conf/redis.conf3.在上面添加的配置文件中添加配置信息,进行端口映射,命名以及目录挂载,及启动时默认加载配置文件的设置docker run -p 6379:6379 --nam...原创 2020-08-17 17:47:22 · 660 阅读 · 0 评论 -
redis教程链接
刚入门学习redis,这个教程挺好,怕自己找不到,所以redis教程原创 2018-10-22 21:39:55 · 255 阅读 · 0 评论