一梦无痕bzy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
秒杀系统设计
本文详细整理互物联网大厂秒杀代码的写法原创 2022-07-06 15:50:52 · 225 阅读 · 0 评论 -
redis发布订阅模式
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,所有订阅者(sub)都可接收到消息。redis订阅发布模式,生产者生产完消息通过频道分发消息,给订阅了该频道的所有消费适用于秒杀系统中,同步各个节点的localCache数据...原创 2022-07-06 08:53:16 · 505 阅读 · 0 评论 -
redis事务
Redis 事务的本质:是一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程中,这组命令会一次性、顺序性、排他性地执行。注意:1、Redis事务没有隔离级别的概念2、所有的命令在事务中,并没有直接被执行,只有发起执行命令的时候才会执行(exec)3、Redis 单条命令是保证原子性的,但是事务不保证原子性。也就是如果执行期间出现运行错误,之前的执行过的命令是不会回滚的2、放弃事务3、监视 Watch首先要了解redis事务中watch的作用,watch命令可以监控一个或多原创 2022-07-05 13:35:03 · 245 阅读 · 0 评论 -
springboot整合lua脚本
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能lua的基本语法:https://www.runoob.com/lua/lua-tutorial.html注意:lua脚本基于redis单线程执行,但没有实现原子性,也就是如果执行期间出现运行错误,之前执行过的命令是不会回滚的lua1.lua:首先是通过KEYS[i]和ARGV[i]分别接收传递过来的key值和value值,然后判断user_set集合中是否存在当前用原创 2022-07-05 10:13:14 · 798 阅读 · 0 评论 -
redis锁
二、有效期版在小公司这种写法没问题。但是当高并发的时候,第一个请求进来因为网络延迟等原因,导致它执行了15s,但是当10s的时候锁就没了,这时第二个请求便进来,第一个请求执行到删除锁时删除的其实是第二个请求的锁,这个时候因为锁没了,第三个请求又可以进了,第二个请求删除的是第三个请求的锁,依次类推,锁就荡然无存了。解决这个问题的办法就是每次只能删除自己的锁更加完善,在小公司基本就这样。但是在大厂还是不行,因为有效期的原因,如果第一个请求用时15s但是10s的时候锁就没了,这时第二个请求就又进来了,如果一原创 2022-07-04 14:32:15 · 275 阅读 · 0 评论 -
redis集群
客户端调redis,主写成功,往从备份,从成功告诉主,然后主才给客户端返回告诉操作成功。这样如果从一旦挂了一个,就会不返回了,给人的感觉就是服务有问题了。所以强一致性容易造成集群不可用(不推荐使用)cap:一致性(强一致性)、可用性、分区容错性(集群)。不可兼得最多只能得两个。mysql是ca、redis集群是ap客户端调redis,主写成功立即返回。然后异步告诉从,至于从能否一定写成功不一定。弱一致性容易丢数据(redis主要使用的一种方式)所以redis的分布式锁其实并不是特别准确,但是对于互联网企原创 2022-07-04 10:00:16 · 388 阅读 · 0 评论 -
redis持久化
持久化的范围很广,从内存到硬盘这叫持久化;数据备份也叫持久化(所以mysql也是可以持久化的)每个时间点更新一次数据。所占有的体积比较小、恢复速度快;但是数据丢失可能会很大(默认RDB,可以手动开启AOF,一旦开启AOF便不会再去读快照文件只会读日志文件)趋近于实时更新(这个可配置)。所占有的体积比较大、恢复速度慢;但是数据丢失可能会很小AOF两种模式:因为是日志,所以每次更新操作都会记录,但其实有用的就是最后一个记录,所以体积大、恢复速度慢。但是可以配制重写更新掉无用信息,不过这不是实时的是有触发条件的比原创 2022-07-04 09:18:29 · 109 阅读 · 0 评论 -
redis使用场景
默认是每次增加减少1并返回结果,也可以指定每次增加减少的数值。比如可以做全局idkey是文件名,value是文件的字节数组(需要通过java等语言将io流转成字节数组)第4天的登录:setbit jack 3 1;第10天登录:setbit jack 9 1;第365天登录:setbit jack 364 1。统计登录天数bitcount jack 0 -1共三天;字节总长度strlen jack为46。一年里重复活跃的记为1。2020年一月一号id为8的登陆,2020年一月一号id为3的登录,20原创 2022-06-23 11:21:37 · 187 阅读 · 0 评论 -
reids五大数据类型
k1是key,第一个1表示偏移量(从左向右偏移),第二个1表示这个位上的数值。综合起来,在内存中开辟一个字节空间一共8位,从左数第二位是1。get k1得到的是“@”(因为这个二进制数对应的十进制是64,在ascii中64对应的就是“@”);setbit也可以自动扩大,在原有基础上修改setbit k1 9 1,这时就开辟了两个字节空间统计起始字节和到终止字节中共有多少个1(注意是字节),按上图计算结果是1。bitcount k1 0 -1统计所有字节中共有多少个1。bitcount k1 -2 -1统原创 2022-06-13 14:03:16 · 119 阅读 · 0 评论 -
redis基础介绍
redis是基于内存的,key-value格式的,单线程的,连接很多的,拥有丰富的数据类型的非关系型数据库1、基于内存:快。单机并发量理论上是10w。mysql单机并发量最高也就10002、非关系型:之所以非关系型是因为,它主要用来做缓存,数据存的并不全,这个时候要是设置成关系型一定是有问题的3、单线程:这个单线程指的是工作线程(worker)是单线程,高版本中io操作是多线程1、memcached的数据类型就只有string,所以每次读取的时候都是全量io读取,然后再解析。解析在客户端2、redi原创 2022-06-13 11:51:14 · 158 阅读 · 0 评论 -
Windows系统安装redis
1、原创 2021-07-16 09:01:23 · 113 阅读 · 0 评论