
redis
文章平均质量分 77
起灵人
纸上得来终觉浅,绝知此事要躬行。
展开
-
单用户并发问题
最近写了一个感恩节相关活动,一个做任务获得活动币的接口提交后被领导批“会被用户刷爆”,代码非常简单,就是redis判断该用户今日是否做过该任务,没做过->活动币写入mysql 、redis。 刚开始还一脸懵,我判断的是单个用户啊,又不是整个平台的秒杀,每个用户又互不影响,刷啥? 再说redis是单线程的,就算一个用户真在多个设备请求了,那我完成一次后就改redis了后来的就刷不到了啊...难道是我先写mysql再写redis容易出问题,并发会出现在写...原创 2021-11-20 23:53:06 · 1284 阅读 · 0 评论 -
【redis】scan系列命令详解
scan常用于在大量redis key中寻找具有指定前缀的key(当然如果你一直使用图形工具可能不太了解它)它是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程,初始游标为0。SCAN 返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。如果新游标返回 0 表示迭代已结束,即不再又下一页的数据,如果原创 2021-08-16 11:43:54 · 4448 阅读 · 1 评论 -
【redis】二级索引
redis二级索引 复合索引 hexastore原创 2021-07-22 13:45:30 · 902 阅读 · 0 评论 -
【redis】持久化过程详解及配置优化
AOF RDB原创 2021-03-13 23:28:33 · 308 阅读 · 0 评论 -
【laravel+redis】分布式锁的实现
laravel 原子锁原创 2021-07-15 08:42:26 · 1883 阅读 · 2 评论 -
【bug记录】laravel8配置phpredis集群连接
集群搭建好了,本地也能正常访问,在app\database.php redis数组中做如下配置:<?phpuse Illuminate\Support\Str;return [ 'redis' => [ 'client' => env('REDIS_CLIENT', 'phpredis'), 'options' => [ 'cluster' => env('REDIS_CLUSTER', 're原创 2021-05-21 21:53:49 · 3018 阅读 · 2 评论 -
【redis】实现四种常见限流
redis限流 漏斗限流原创 2021-05-11 21:29:56 · 1155 阅读 · 0 评论 -
【redis】streams简介
stream相关命令原创 2021-04-27 11:14:43 · 1133 阅读 · 0 评论 -
【redis】基本数据结构简单源码解析
sds dict ziplist quicklist skiplist listpack rax原创 2021-04-27 09:54:10 · 300 阅读 · 0 评论 -
【redis6.0】部分配置文件释义
redis可以在不使用内置默认配置的配置文件的情况下启动,但是它不适合线上,根据服务器情况调整redis.conf是非常必要的。includeredis.conf可以包含其他位置的配置文件,但是一般将include的文件放在redis.conf开头,免得它覆盖掉redis.conf的配置。bind...原创 2021-04-22 21:01:27 · 318 阅读 · 0 评论 -
【redis】lua脚本入门
之前文章中提到过,redis官方在考虑lua代替事务,与事务相比,lua脚本也具有原子性,并且lua脚本在执行的时候,也会阻塞其他脚本或者redis命令并发执行,所以要尽量避免执行时间很长的脚本。与事务只在所有语句执行完才能看到返回信息不同,lua可以在运行途中输出执行结果,好根据此结果判断接下来要干啥(if),还支持客户端缓存lua语句。纯函数脚本应该被写成纯函数,对于同样的数据集输入,给定相同的参数,脚本执行的 redis 写命令总是相同的。脚本执行的操作不能依赖于任何隐藏(非显式)数据,不原创 2021-05-02 21:10:51 · 634 阅读 · 0 评论 -
【redis】cluster相关知识点整理
cluster为redis带来了什么呢?高达1000个节点的高性能和线性可扩展性,在多个节点间自动拆分数据集 可接受的写安全度系统尝试(尽最大努力)保留来自与大多数主节点连接的客户端的所有写操作。通常有一些小窗口,在这些窗口中可以丢失已确认的写入。当客户端位于少数分区时,丢失已确认写入的窗口会更大。一部分节点出现故障或无法与集群的其余部分通信时,继续运行的能力。redis cluster能够在大多数主节点都可访问且每个不再可用的主节点上至少有一个可访问的从节点的分区中幸存。而且,通过使用副本迁原创 2021-04-18 22:28:45 · 340 阅读 · 2 评论 -
【redis】cluster配置和故障转移
redis cluster配置和故障转移原创 2021-04-15 21:30:45 · 1322 阅读 · 1 评论 -
【redis】个人整理
1.redis为什么这么快?1.基于内存,数据存放是类似哈希加链表的形式,查找速度快,时间复杂度低。对内存的使用有很多优化策略,比如内存淘汰采用近似LRU算法通过抽样的方式来淘汰key,以减少内存消耗、并且有位图、hyperloglog这种专门处理海量数据的方案2.单线程,避免上下文切换、避免死锁。3.多路复用IO,减少了等待和IO,并且在6.0版本后对网络请求采用多线程,提高了网络性能。4.数据结构如string采用简单动态字符串,减少修改字符串长度时候所需的内存重分配次数。5.在6.原创 2021-04-11 18:43:22 · 115 阅读 · 0 评论 -
【redis】sentinel哨兵故障转移与ubuntu虚拟机中配置
redis sentinel 哨兵 工作原理 故障转移 ubuntu 配置原创 2021-04-01 12:08:03 · 370 阅读 · 1 评论 -
【bug笔记】docker部署redis主从出现master_link_status:down
docker部署redis主从 master_link_status:down原创 2021-03-26 11:59:39 · 528 阅读 · 0 评论 -
【redis】pipeline
即使客户端尚未读取旧的响应,它也可以处理新的请求。通过这种方式,可以将多个命令发送到服务器,而根本不需要等待答复,最后一步即可读取答复。但它的优势不仅在于此,还可以极大地减少IO,提高每秒可以执行的总操作量,因为可以通过单个read() 读取和单个write()答复这一批数据流,而不必每个命令都read()、write()一次,上下文切换也是巨大的速度损失。使用pipeline性能可以达到不使用的10倍。即使在本地测试,其内部仍然有类似网络的延迟,并不是在内存里直接共享数据。每次发送数据量不原创 2021-03-19 10:14:44 · 72 阅读 · 0 评论 -
【redis】事务
redis事务的原子性和一致性、watch原创 2021-03-18 19:40:20 · 82 阅读 · 0 评论 -
【redis】几种数据结构补充
常用的数据结构有string、hash、list、set、zset,此外还有HyperLogLog、GEO、StreamHyperLogLog用来做基数统计(即:重复元素记作同一个,这是它和count的不同)。在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。因为它并不存储元素本身,而是通过概率算法,记录其hash值第一位1出现位置,来计算元素数量,对于一个输入的原创 2021-03-09 17:32:25 · 121 阅读 · 0 评论