Redis
文章平均质量分 92
Redis专栏
W哥教你学后端
技术领域:专精JAVA,其次前端,其余技术/能力兼容个人所确定行业发展所需而提升!需改进优质文档地方,评论请留言,本人即时更新最新优质文章!
目标:全网最全Java编程领域知识体系文档,Java开发者只需跟着我文章流程走即可!致力深入于电商、旅游、短视频、区块链、AI行业!
现阶段:资料整合阶段,整合到一定程度,开始录制视频,不断改善文章质量,希望大家能够谅解!
展开
-
Redis篇(面试题 - 连环16炮)(持续更新迭代)
代码更清晰,处理逻辑更简单;不用考虑各种锁的问题,不存在加锁和释放锁的操作,没有因为可能出现死锁而导致的性能问题;不存在多线程切换而消耗CPU;无法发挥多核CPU的优势,但可以采用多开几个Redis实例来完善;缺点:无法发挥多核CPU的优势,但可以采用多开几个Redis实例来完善。原创 2024-10-02 20:42:32 · 1382 阅读 · 0 评论 -
Redis篇(应用案例 - 达人探店)
造成这个问题的原因是,我们现在的逻辑,发起请求只是给数据库+1,所以才会出现这个问题。因为我们的数据是不能重复的,当用户操作过之后,无论他怎么操作,都是。原创 2024-09-29 20:28:21 · 389 阅读 · 0 评论 -
Redis篇(数据类型)
Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样:贴心小建议:命令不要死记,学会查询就好啦Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网)可以查看到不同的命令:当然我们也可以通过Help命令来帮助我们去查看命令String类型,也就是字符串类型,是 Redis 中最简单的存储类型。string:普通字符串int:整数类型,可以做自增、自减操作float:浮点类型,可以做自增、自减操作。原创 2024-09-27 21:50:11 · 1008 阅读 · 0 评论 -
Redis篇(应用案例 - 用户签到)(持续更新迭代)
用户一次签到,就是一条记录,假如有1000万用户,平均每人每年签到次数为10次,则这张表一年的数据量。假设今天是10号,那么我们就可以从当前月的第一天开始,获得到当前这一天的位数,是10号,那么就是10。统计有多少个1即可。我们把签到结果和1进行与操作,每与一次,就把签到结果向右移动一位,依次内推,我们就能完成逐个遍历。我们只需要让得到的10进制数字和1做与运算就可以了,因为1只有遇见1才是1,其他数字都是0 ,我们可以将数据库的数据,所对应的id写入到一个list集合中,当用户过来访问的时候,原创 2024-09-30 14:20:28 · 841 阅读 · 0 评论 -
Redis篇(应用案例 - 商户查询缓存)
前言:什么是缓存?就像自行车,越野车的避震器举个例子:越野车,山地自行车,都拥有"避震器",防止车体加速后因惯性,在酷似"U"字母的地形上飞跃,硬着陆导致的损害,像个弹簧一样;同样,实际开发中,系统也需要"避震器",防止过高的数据访问猛冲系统,导致其操作线程无法及时处理信息而瘫痪;这在实际开发中对企业讲,对产品口碑,用户评价都是致命的;所以企业非常重视缓存技术;缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码例1:本地用于高并发。原创 2024-09-28 14:15:52 · 1208 阅读 · 0 评论 -
Redis篇(初识Redis)
存储方式关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响非关系型数据库,他们的操作更多的是依赖于内存来操作,内存的读写速度会非常快,性能自然会好一些扩展性关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展。非关系型数据库可以将数据拆分,存储在不同机器上,可以保存海量数据,解决内存大小有限的问题。称为水平扩展。关系型数据库因为表之间存在关联关系,如果做水平扩展会给数据查询带来很多麻烦Redis诞生于2009年全称是RemoteD。原创 2024-09-26 20:59:29 · 1235 阅读 · 0 评论 -
Redis篇(Redis原理 - RESP协议)
Redis是一个CS架构的软件,通信一般分两步(不包括pipeline和PubSub):客户端(client)向服务端(server)发送一条命令服务端解析并执行命令,返回响应结果给客户端因此客户端发送命令的格式、服务端响应结果的格式必须有一个规范,这个规范就是通信协议。Redis 1.2版本引入了RESP协议Redis 2.0版本中成为与Redis服务端通信的标准,称为RESP2。原创 2024-10-02 09:26:58 · 888 阅读 · 0 评论 -
Redis篇(缓存机制 - 分布式缓存)(持续更新迭代)
RDB 全称 Redis Database Backup file( Redis 数据备份文件),也被叫做 Redis 数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当 Redis 实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为 RDB 文件,默认是保存在当前运行目录。原创 2024-09-30 16:28:33 · 922 阅读 · 0 评论 -
Redis篇(缓存机制 - 基本介绍)(持续更新迭代)
缓存是一种数据存储技术,用于存储经常访问的数据,以便在需要时快速获取。通过缓存数据,可以减少数据的访问时间和系统的负载,从而提高应用程序的性能。缓存可以应用在多个层次,例如CPU缓存、数据库缓存和Web缓存。缓存穿透是指用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导致用户查询的时候,在缓存中找不到,每次都要去数据库再查询一遍,然后返回空(相当于进行了两次无用的查询)这样请求就绕过缓存直接查数据库,这也是经常提的缓存命中率问题。举例:客户端发送大量的不可响应的请求(如下图)原创 2024-10-01 18:20:14 · 757 阅读 · 0 评论 -
Redis篇(应用案例 - 优惠卷秒杀)
每个店铺都可以发布优惠券:当用户抢购时,就会生成订单并保存到tb_voucher_order这张表中,而订单表如果使用数据库自增ID就存在一些id的规律性太明显受单表数据量的限制场景分析一:如果我们的id具有太明显的规则,用户或者说商业对手很容易猜测出来我们的一些敏感信息,比如商城在一天时间内,卖出了多少单,这明显不合适。场景分析二:随着我们商城规模越来越大,mysql的单表的容量不宜超过500W,数据量过大之后,我们要进行拆库拆表,但拆分表了之后,他们从逻辑上讲他们是同一张表,原创 2024-09-29 20:27:42 · 1058 阅读 · 0 评论 -
Redis篇(最佳实践)(持续更新迭代)
单个命令的执行流程N 条命令的执行流程redis 处理指令是很快的,主要花费的时候在于网络传输。于是乎很容易想到将多条指令批量的传输给 redis用来做缓存的 Redis 实例尽量不要开启持久化功能建议关闭 RDB 持久化功能,使用 AOF 持久化利用脚本定期在 slave 节点做 RDB,实现数据备份设置合理的 rewrite 阈值,避免频繁的 bgrewrite。原创 2024-10-01 18:25:59 · 1547 阅读 · 0 评论 -
Redis篇(环境搭建)
Windows系统中启动Redis,直接双击redis-server.exe即可启动Redis服务,redis服务默认端口号为6379。双击 redis-cli.exe 即可启动Redis客户端,默认连接的是本地的Redis服务,而且不需要认证即可连接成功。前面我们已经启动了Redis服务,默认情况下Redis启动后是在前台运行,而且客户端不需要密码就可以连接到。如果没有指定,就说明可以接受。通过 redis-cli 可以连接到本地的Redis服务,默认情况下不需要认证即可连接成功。原创 2024-09-26 21:00:02 · 817 阅读 · 0 评论 -
Redis篇(应用案例 - 好友关注)
假设在t1 时刻,我们去读取第一页,此时page = 1 ,size = 5 ,那么我们拿到的就是10~6 这几条记录,本例中的个人页面,是基于关注的好友来做Feed流,因此采用Timeline的模式。我们本次针对好友的操作,采用的就是Timeline的方式,只需要拿到我们关注用户的信息,然后按照时间排序即。size=5 ,那么此时读取到的第二页实际上是从 6 开始,然后是6~2 ,那么我们就读取到了重复的数据,推模式是没有写邮箱的,当张三写了一个内容,此时会主动的把张三写的内容发送到他的粉丝收件箱中去,原创 2024-09-29 20:28:51 · 1044 阅读 · 0 评论 -
Redis篇(Redis原理 - 数据结构)(持续更新迭代)
我们知道 Redis 是一个键值型( Key-Value Pair )的数据库,我们可以根据键实现快速的增删改查。而键与值的映射关系正是通过 Dict 来实现的。Dict 由三部分组成,分别是:哈希表( DictHashTable )、哈希节点( DictEntry )、字典( Dict )当我们向 Dict 添加键值对时,Redis 首先根据 key 计算出 hash 值( h ),然后利用 h & sizemask 来计算元素应该存储到数组中的哪个索引位置。原创 2024-10-02 09:03:40 · 874 阅读 · 0 评论 -
Redis篇(Java操作Redis)
在Redis官网中提供了各种语言的客户端,JedisLettuceRedissonJedis和Lettuce:这两个主要是提供了Redis命令对应的API,方便我们操作Redis,而Spring 对 Redis 客户端进行了整合,提供了 Spring Data Redis,在Spring Boot项目中还提供了对应的Starter,即 spring-Redisson:是在Redis基础上实现了分布式的可伸缩的java数据结构,例如:Map、Queue等,而且支持跨。原创 2024-09-27 21:51:44 · 1635 阅读 · 0 评论 -
Redis篇(Redis原理 - 网络模型)
0~2的32次方, 这片寻址空间对应的就是2的32个字节,就是4GB,这个4GB,会有3个GB分给用户空间,会有。来我们要控制哪些数据,比如要监听的数据,是1,2,5三个数据,此时会执行select函数,然后将整个fd发给内核。中,然后再返回给应用程序,整体而言,速度慢,就是这个原因,为了加速,我们希望read也好,还是wait for。那个FD的最大值+1,但是大小整体是有限制的 ),这个集合的长度大小是有限制的,同时在这个集合中,标明出。原创 2024-10-02 09:19:58 · 1178 阅读 · 0 评论 -
Redis篇(应用案例 - 附近商户)(持续更新迭代)
我们要做的事情是:将数据库表中的数据导入到redis中去,redis中的GEO,GEO在redis中就一个menber和。一个经纬度,我们把x和y轴传入到redis做的经纬度位置去,但我们不能把所有的数据都放入到menber中去,以当前坐标作为圆心,同时绑定相同的店家类型type,以及分页信息,把这几个条件传入后台,后台查询出对。当我们点击美食之后,会出现一系列的商家,商家中可以按照多种排序方式,我们此时关注的是距离,这个地方就需要使用到我们的GEO,向后台传入当前app收集的地址(我们此处是写死的) ,原创 2024-09-30 14:19:42 · 649 阅读 · 0 评论 -
Redis篇(应用案例 - UV统计)(持续更新迭代)
Hyperloglog(HLL)是从Loglog算法派生的概率算法,用于确定非常大的集合的基数,而不需要存储其所有。PV:全称Page View,也叫页面访问量或点击量,用户每访问网站的一个页面,记录1次PV,用户多次打开页。Redis中的HLL是基于string结构实现的,单个HLL的内存永远小于16kb,内存占用低的令人发指!UV统计在服务端做会比较麻烦,因为要判断该用户是否已经统计过了,需要将统计过的用户信息保存。通常来说UV会比PV大很多,所以衡量同一个网站的访问量,我们需要综合考虑很多因素,原创 2024-09-30 14:20:59 · 311 阅读 · 0 评论 -
Redis篇(缓存机制 - 多级缓存)(持续更新迭代)
官方网站:原创 2024-09-30 16:29:12 · 1676 阅读 · 0 评论 -
Redis篇(应用案例 - 短信登录)(持续更新迭代)
线程会找到用户想要访问的工程,然后用这个线程转发到工程中的controller,service,dao中,并且访问对应的。DB,在用户执行完请求后,再统一返回,再找到tomcat端的socket,再将数据写回到用户端的socket,完成请求。下,会选择使用mysql集群,同时为了进一步降低Mysql的压力,同时增加访问的性能,我们也会加入Redis,同。~7000左右,上万并发, 瞬间就会让Mysql服务器的cpu,硬盘全部打满,容易崩溃,所以我们在高并发场景。原创 2024-09-28 14:15:00 · 631 阅读 · 0 评论