Redis
文章平均质量分 92
redis
Binary Oracle
一名热爱开源和技术的Coder , 开源框架spring committer , golang开源网络库netpoll committer; (脱产备战25考研中,停更一年)
展开
-
Redis各类数据结构应用场景总结
Redis各类数据结构应用场景总结原创 2023-08-27 16:59:11 · 556 阅读 · 0 评论 -
innodb为什么选择B+ Tree而不是跳表,Redis为什么选择跳表而不是B+ Tree
innodb为什么选择B+ Tree而不是跳表,Redis为什么选择跳表而不是B+ Tree转载 2023-03-20 13:33:23 · 910 阅读 · 0 评论 -
Redis必须记住的要点
Redis,英文全称是(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度非常快,每秒可以处理超过10万次读写操作。因此redis被广泛应用于缓存,另外,Redis也经常用来做分布式锁。除此之外,Redis支持事务、持久化、LUA 脚本、LRU 驱动事件、多种集群方案。转载 2023-03-02 19:16:53 · 357 阅读 · 0 评论 -
Redis核心知识点
整理的只是一部分核心知识点,不全。原创 2023-02-12 15:42:34 · 1042 阅读 · 1 评论 -
利用Redis实现限流
redis实现限流的核心思路是利用redis提供的key过期时间作为限流窗口期,key的值记录该窗口期内已经产生的访问资源次数,key本身记录限流的资源范围。每一个 IP 地址,在 20 秒内只能访问5次,大家可以手动测试。原创 2023-02-06 14:57:48 · 2243 阅读 · 3 评论 -
Redis发布订阅和事务实现原理
Redis通过MULTI,EXEC,WATCH等命令来实现事务功能,事务提供了将多个命令请求打包,然后一次性,按顺序执行的机制,并且在事务执行期间,服务器不会中断事务去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才会去处理其他客户端的请求。□ 当服务器在RDB持久化模式下运作时,服务器只会在特定的保存条件被满足时,才会执行BGSAVE 命令,对数据库进行保存操作,并且异步执行的BGSAVE 不能保证事务数据被第一时间保存到硬盘里面,因此RDB持久化模式下的事务也不具有耐久性。原创 2023-01-02 16:55:35 · 730 阅读 · 0 评论 -
Redis事件循环
如果时间事件处理器返回一个非AE_NOMORE的整数值,那么表示当前事件是一个周期性事件,返回值代表多少毫秒后该事件需要继续被执行。第三行设置将执行发布与订阅功能的客户端的硬性限制设置为32MB,软性限制设置为8 MB,软性限制的时长为60秒。第二行设置将从服务器客户端的硬性限制设置为256MB,而软性限制设置为64MB,软性限制的时长为60秒。第一行设置将普通客户端的硬性限制和软性限制都设置为0,表示不限制客户端的输出缓冲区大小。Redis是如何协调文件事件和时间事件的执行的呢?第十二章到第十四章内容。原创 2022-12-29 23:11:50 · 940 阅读 · 0 评论 -
Redis原理篇之通信协议和内存回收
Redis原理篇之通信协议和内存回收Redis通信协议RESP模拟Redis客户端Redis内存回收策略过期策略惰性删除周期删除小结淘汰策略八种策略RedisObject流程图Redis通信协议RESP模拟Redis客户端具体代码放在了下面的gitee仓库中:https://gitee.com/DaHuYuXiXi/mock-redis-clientRedis内存回收策略过期策略通过expire命令可以给Redis的key设置TTL:可以发现,当key的TTL过期后,再次访问na原创 2022-05-30 11:00:35 · 265 阅读 · 0 评论 -
Redis原理篇之网络模型
Redis原理篇之网络模型用户空间和内核空间IO模型阻塞IO非阻塞IOIO多路复用Selectselect模式存在的问题pollepoll对比模式对比用户空间和内核空间任何Linux发行版,其系统内核都是Linux。我们的应用都需要通过Linux内核与硬件交互。操作系统运行起来后,会占用部分系统资源,例如: 内存资源,cpu资源等.此时,用户应用程序也同样需要占用这些资源,如果不加以限制,那么会和操作系统争抢资源,导致冲突。为了避免用户应用导致冲突甚至内核崩溃,用户应用与内核是分离的。进原创 2022-05-29 18:45:05 · 1594 阅读 · 0 评论 -
Redis原理篇之数据结构
Redis原理篇之数据结构原创 2022-05-27 16:00:37 · 268 阅读 · 0 评论 -
Redis进阶学习10---redis最佳实践
Redis进阶学习10---redis最佳实践Redis最佳实践优雅的key结构BigKey问题BigKey的危害如何发现BigKeys如何删除bigKeys恰当的数据类型小总结Redis最佳实践优雅的key结构Redis的Key虽然可以自定义,但最好遵循下面的几个最佳实践约定: 遵循基本格式:[业务名称]:[数据名]:[id] 长度不超过44字节 不包含特殊字符例如:我们的登录业务,保存用户信息,其key是这样的:优点: 可读性强 避免key冲突 方便管理 更节省内存:原创 2022-05-13 14:22:21 · 1166 阅读 · 0 评论 -
Redis进阶学习09---缓存同步
Redis进阶学习09---缓存同步Canal认识Canal安装和配置Canal开启MySQL主从开启binlog设置用户权限安装Canal创建网络安装Canal监听Canal引入依赖:编写配置:修改Item实体类编写监听器多级缓存总结Canal认识CanalCanal [kə’næl],译意为水道/管道/沟渠,canal是阿里巴巴旗下的一款开源项目,基于Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。GitHub的地址:https://github.com/alibaba/c原创 2022-05-11 10:31:33 · 1082 阅读 · 0 评论 -
Redis进阶学习08--多级缓存
Redis进阶学习08--多级缓存什么是多级缓存JVM进程缓存环境准备docker安装mysqldocker安装nginx反向代理初识Caffeine实现JVM进程缓存需求实现Lua语法入门初识LuaHelloWorld变量和循环Lua的数据类型声明变量循环条件控制、函数函数条件控制实现多级缓存原始方式安装OpenResty安装开发库安装OpenResty仓库安装OpenResty安装opm工具目录结构配置nginx的环境变量启动和运行docker方式安装OpenResty快速入门反向代理流程OpenRes原创 2022-05-10 22:27:17 · 1213 阅读 · 0 评论 -
Lua+OpenResty快速入门
Lua+OpenResty快速入门Lua概念特性应用场景Lua的安装Lua的语法第一个Lua程序Lua的注释标识符关键字运算符全局变量&局部变量Lua数据类型nilbooleannumberstringtabletablefunctionthreaduserdataLua控制结构if then elseif elsewhile循环repeat循环for循环ngx_lua模块概念ngx_lua模块环境准备方式一:lua-nginx-module方式一:lua-nginx-module方式二:OpenR原创 2022-05-09 20:23:38 · 4448 阅读 · 1 评论 -
Redis进阶学习07--分布式缓存--下
Redis进阶学习06--分布式缓存--下Redis分片集群搭建分片集群集群结构准备实例和配置启动创建集群docker-compose快速搭建分片集群注意散列插槽插槽原理小结集群伸缩需求分析创建新的redis实例添加新节点到redis转移插槽故障转移自动故障转移手动故障转移RedisTemplate访问分片集群Redis分片集群搭建分片集群主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决:海量数据存储问题高并发写的问题使用分片集群可以解决上述问题,如图:分片原创 2022-05-07 11:00:47 · 392 阅读 · 0 评论 -
Redis进阶学习06--分布式缓存--上
Redis进阶学习06--分布式缓存--上分布式缓存单机Redis缺陷RDB数据持久化执行时机RDB原理小结AOF持久化AOF原理AOF配置AOF文件重写RDB与AOF对比Redis主从搭建主从架构准备实例和配置启动开启主从关系测试主从同步原理全量同步增量同步repl_backlog原理主从同步优化小结Redis哨兵哨兵原理集群结构和作用集群监控原理集群故障恢复原理小结搭建哨兵集群集群结构准备实例和配置启动测试Docker方式搭建哨兵集群docker-compose方式搭建哨兵集群---推荐搭建过程中可能遇原创 2022-05-06 16:52:01 · 884 阅读 · 1 评论 -
Redis进阶学习05---Feed流,GEO地理坐标的应用,bitmap的应用,HyperLogLog实现UV统计
Redis进阶学习05---Redis进阶学习05---Feed流和GEO地理坐标的应用点赞功能共同关注关注推送拉模式推模式推拉结合小结基于推模式实现关注推送如何使用sorted_sort实现分页呢?具体代码实现分页附近商户GEO数据结构附近商铺搜索签到BitMap学习签到功能实现连续签到统计HyperLogLog实现UV统计HyperLogLog用法实现UV统计小结Pipeline批量导入数据点赞功能这部分内容比较简单,没啥难度,因此我不打算进行具体代码实践演示,只是给出完整的解决思路和其中的注意事原创 2022-05-02 23:09:08 · 1213 阅读 · 1 评论 -
Redis进阶学习04---秒杀优化和消息队列
Redis进阶学习04---秒杀优化和消息队列秒杀优化秒杀优化如果一个饭店只有一个服务员,并且这个服务员不仅需要负责客人的点餐服务,还需要负责炒菜服务,显然这样的话,只能是先处理完第一个客人所有的点餐,烧菜任务后,才能去处理下一个客人的点餐,烧菜任务,这样显然把任务给串行化了,效率大大降低。而现在我们就面临这样的问题:目前整个秒杀的过程都是串行化执行的,并且这个流程里面涉及多次数据库查询操作,数据库查询是最耗费时间的,因此优化的思路就是把最耗费时间的数据库写操作转换为异步执行,然后把数据库查询操原创 2022-05-01 12:41:16 · 561 阅读 · 0 评论 -
Redis进阶学习03---Redis完成秒杀和Redis分布式锁的应用
Redis进阶学习03---Redis完成秒杀和Redis分布式锁的应用全局唯一ID注意事项完整代码测试全局唯一ID生成策略总结![在这里插入图片描述](https://img-blog.csdnimg.cn/ef34f05cea5042528e8f8ff4bb4a4153.png)全局优惠卷秒杀下单解决超卖问题解决超卖问题的方法乐观锁解决超卖问题版本号法CAS法cas法具体代码实现小结实现一人一单基于悲观锁实现一人一单的方案集群下的线程并发安全问题分布式锁基于Redis的分布式锁实现分布式锁的版本一全原创 2022-04-30 12:34:20 · 1652 阅读 · 0 评论 -
Redis进阶学习02---Redis替代Session和Redis缓存
Redis进阶学习02---Redis替代Session基于Session登录流程本系列参考b站黑马虎哥redis视频编写而成本系列项目源码将会保存在gitee上面,仓库链接如下:https://gitee.com/DaHuYuXiXi/redis-combat-project基于Session登录流程我们先来看一下基于Session实现登录的模板流程是什么样子的: 发送短信验证码核心逻辑: public Result sendCode(String phone, HttpS原创 2022-04-27 21:17:14 · 2468 阅读 · 0 评论 -
Redis进阶学习01---基础回顾
Redis进阶学习01---基础回顾redis使用docker安装常用命令常用通用命令String类型常用命令key的层级表示Hash类型常用命令List类型set类型sortedSet类型Redis客户端JedisJedis连接池SpringDataRedis快速入门本系列针对redis进阶学习,因此对于基础部分不会详细讲述redis使用docker安装 准备存放redis配置文件数据目录# 这里我们在 /home/docker 下创建mkdir /home/docker/redis/{原创 2022-04-18 22:55:06 · 637 阅读 · 0 评论 -
Redis---事务篇
Redis6Redis的事务定义Multi、Exec、discard命令案例1:组队成功,提交成功案例2:组队阶段报错,提交失败案例3:组队成功,提交有成功有失败情况事务的错误处理事务冲突的问题例子解决办法悲观锁乐观锁乐观锁在Redis中的应用WATCH key [key ...] 命令unwatch 命令Redis事务三特性Redis命令大全秒杀案例秒杀并发模拟超卖和超时问题解决连接超时,通过连接池解决连接池超卖问题利用乐观锁淘汰用户,解决超卖问题关于RedisTemplate的ERR EXEC wit原创 2021-08-17 12:13:22 · 383 阅读 · 0 评论 -
Redis6--Jedis篇
Redis6Redis_Jedis_测试Jedis所需要的依赖连接Redis注意事项Jedis常用操作测试连接测试相关数据类型Key数据类型String数据类型List数据类型set数据类型hash数据类型zset数据类型模拟完成一个手机验证码功能Redis_Jedis_测试Jedis所需要的依赖<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId&原创 2021-08-16 17:50:14 · 544 阅读 · 0 评论 -
Redis6数据类型篇
Redis6Redis简介二级目录三级目录Redis简介redis是一种高级的key:value存储系统,其中value支持五种数据类型:1.字符串(strings)2.字符串列表(lists)3.字符串集合(sets)4.有序字符串集合(sorted sets)5.哈希(hashes)而关于key,有几个点要提醒大家:1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率;2.key也不要太短,太短的话,key的可读性会降低;3.在一个项目中,key最好原创 2021-08-16 11:05:23 · 910 阅读 · 37 评论 -
Redis6----应用问题解决和新功能预览
应用问题解决和新功能预览缓存穿透问题描述解决方案缓存击穿问题描述解决方案缓存雪崩问题描述解决方案分布式锁问题描述解决方案java代码实现优化之设置锁的过期时间优化之UUID防误删优化之LUA脚本保证删除的原子性总结Redis6.0新功能ACLACL命令1、使用acl list命令展现用户权限列表2、使用acl cat命令3、使用acl whoami命令查看当前用户4、使用acl setuser命令创建和编辑用户ACL(1)ACL规则(2)通过命令创建新用户默认权限(3)设置有用户名、密码、ACL权限、并启原创 2021-08-18 10:46:27 · 213 阅读 · 0 评论 -
Redis6--持久化篇
Redis6Redis持久化之RDBRDB是什么备份是如何执行的ForkRDB持久化流程dump.rdb文件配置位置如何触发RDB快照;默认策略,可以进行修改配置文件中默认的快照配置命令save VS bgsaveflushall命令###SNAPSHOTTING快照###Savestop-writes-on-bgsave-errorrdbcompression 压缩文件rdbchecksum 检查完整性rdb的备份rdb的优势rdb的劣势如何停止RDB小总结Redis持久化之AOF(Append Only原创 2021-08-17 18:33:35 · 578 阅读 · 0 评论 -
Redis采坑记录
Redis采坑记录redis设置密码redis设置密码 配置文件----requirepass 客户端临时密码设置密码:config set requirepass 123查看密码:config get requirepassredis设置密码原创 2021-12-29 13:41:33 · 631 阅读 · 0 评论 -
Redis---整合SpringBoot篇
Redis61、引入redis相关依赖2、application.properties配置redis配置3.添加redis配置类4.测试一下RedisTemplate基本使用如下1、引入redis相关依赖<!-- redis的启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis<原创 2021-08-16 18:10:21 · 220 阅读 · 0 评论 -
Redis6---配置文件篇
Redis6Redis配置文件介绍###Units单位######INCLUDES包含######网络相关配置bindprotected-modePorttcp-backlogtimeouttcp-keepalive###GENERAL通用###daemonizepidfileloglevellogfiledatabases 16###SECURITY安全###设置密码,默认没有密码#### LIMITS限制maxclientsmaxmemorymaxmemory-policymaxmemory-sampl原创 2021-08-16 11:55:38 · 381 阅读 · 0 评论 -
Redis6发布订阅及Redis新数据类型
Redis6Redis的发布和订阅什么是发布和订阅Redis的发布和订阅发布订阅命令行实现Redis新数据类型Bitmaps常用命令1、setbit2.实例3. getbit4.实例5.bitcount6. 实例7.bitop8.实例Bitmaps与set对比HyperLogLog----解决基数问题(不重复元素的相关问题)常用命令1、pfadd2、pfcount3、pfmergeGeospatial----地理相关常用命令1、geoadd2、geopos3、geodist4、georadiusRedi原创 2021-08-16 14:43:48 · 314 阅读 · 0 评论 -
Redis--集群
集群问题什么是集群操作步骤删除持久化数据制作6个实例: 6379,6380,6381,6389,6390,6391修改配置redis cluster配置修改修改好redis6379.conf文件,拷贝多个redis.conf文件使用查找替换修改另外5个文件启动6个redis服务将六个节点合成一个集群合体:配置了三台主机,每台主机有一台从机,集群无中心化,每台主机都可以作为集群的入口普通方式登录-c 采用集群策略连接,设置数据会自动切换到相应的写主机通过 cluster nodes 命令查看集群信息redi原创 2021-08-17 22:14:23 · 192 阅读 · 0 评论 -
Redis---NoSQL数据库介绍
NoSQL数据库介绍NoSQL数据库简介技术发展Web1.0时代Web2.0时代解决CPU及内存压力解决IO压力NoSQL数据库NoSQL数据库概述NoSQL适用场景NoSQL不适用场景MemcacheRedisMongoDB行式存储数据库(大数据时代)行式数据库列式数据库HbaseCassandra[kəˈsændrə]图关系型数据库DB-Engines 数据库排名Redis概述应用场景配合关系型数据库做高速缓存多样的数据结构存储持久化数据NoSQL数据库简介技术发展技术的分类:1、解决功能性的原创 2021-08-18 12:58:58 · 349 阅读 · 0 评论 -
Redis6---主从复制篇
主从复制篇主从复制是什么能干嘛怎么玩:主从复制1 : 在根目录下创建一个myredis的文件夹步骤2: 复制redis.conf配置文件到文件夹中步骤3:配置一主两从的操作,创建三个配置文件步骤4:在三个配置文件中写入内容步骤5: 启动这三台服务器步骤6:配从(库)不配主(库)步骤7:测试在主机上写,在从机上可以读取数据主机挂掉,重启就行,一切如初从机重启需重设:slaveof 127.0.0.1 6379,可以将配置增加到文件中。永久生效一主二仆薪火相传反客为主复制原理哨兵模式(sentinel)是什么使原创 2021-08-17 21:07:35 · 332 阅读 · 0 评论