![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
redis
文章平均质量分 69
redis
weixin_43979923
一拉瞎一马塞,哟库搜大娃的小黑店
展开
-
redis学习笔记(十七)redis+springboot API使用
一、API介绍API是使用spring data redis可以选择拿同步连接和异步连接可以选择优先从从库里读数据redisTemplate是高级APIjedisConnection是低级API高级API依赖于低级API二、maven<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis原创 2022-05-02 15:50:49 · 390 阅读 · 0 评论 -
redis学习笔记(十六)分布式锁
一、简介:Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。Redisson提供了使用Redis的最简单和最便捷的方法。Redisson的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上。二、基本使用语法:1、获取锁RLock lock = redisson.getLock(“an原创 2022-05-02 15:44:51 · 5556 阅读 · 0 评论 -
redis学习笔记(十五)redis问题及解决方案:击穿、穿透、雪崩
一、击穿问题描述:KEY的过期造成并发访问数据库问题前置条件:肯定发生了高并发解决方案:添加分布式锁(如setNX),只有获得锁的才去访问数据库解决方案又会引发什么问题?1.如果第一个人挂了?(变死锁了)可以设置锁的过期时间2.没挂,但是锁超时了,结果锁被别人抢了?多线程,一个线程取DB,一个线程监控并刷新锁二、穿透问题描述:从物业接收查询的是你系统不存在的数据解决方案:布隆过滤器布隆过滤器的3种实现:client自己实现client算法+redis的bimapredis继承原创 2022-05-02 15:31:09 · 476 阅读 · 0 评论 -
redis学习笔记(十四)redis代理及实操
一、redis代理升级模型一般实际用第二种就行,第三种考虑到代理高可用的问题。二、proxy主流技术twemproxypredixycluster(redis自带的)codis三、cluster1.预分区模型z轴问题并非只能从client端解决,也可以从代理层解决如图,预分区的意思是总量数据区分为10份,如果原来只有2个客户端则一人分5份。如果拓展了新的客户端,2个客户端各取2份到新的客户端即可。2.redis cluster模型3.相关问题1.数据是分治了,事务如何解决?原创 2022-05-02 15:25:23 · 1632 阅读 · 0 评论 -
redis学习笔记(十三)z轴:sharding分片
一、sharding分片模型升级图z轴解决数据膨胀问题,拓展性也比较好二、Ketama一致性算法原理如图所示,hash环是一个虚拟的环,每个redis在环上都对应一个节点(称为物理点)。set数据时也通过一次hash找到一个节点(虚拟点),然后向后找到最近的一个物理点,set到这个物理点上。三、hash环新增节点时的问题hash环新增节点时优点:是可以分担其他节点压力,也不会造成全局洗牌缺点:会造成一小部分数据不能命中解决方案:hash后取2个物理节点旧数据可以通过LRU和LFU淘原创 2022-05-02 15:06:28 · 445 阅读 · 0 评论 -
redis学习笔记(十二)x轴:主从复制及哨兵实战
一、主从复制1.先起3个redis实例,端口分别是6389、6380、6381cd /root/soft/redis-6.2.6/utils./install_server.shservice redis 6381 stopcp /etc/redis/* ./vi 6379.confappendonly nodeamonize novi 6380vi 6381同样操作cd /var/lib/redis/rm -rf ./*mkdir 6379mkdir 6380mkdir 6原创 2022-05-02 14:44:23 · 317 阅读 · 0 评论 -
redis学习笔记(十一)AKF、CAP理论
一、AKF原则1.redis单节点有什么问题?(1) 单点故障(2) 容量有限(3) 压力大2.什么是AKF原则?AKF网上查不到是什么的缩写。。说穿了,就是从3个维度解决单以上3个问题(不止redis,所有分布式系统都遵循)。x轴:全量,镜像一般用主从、主备来解决。主备解决单点故障问题,读写分离解决读压力问题y轴:业务,功能多个不同实例解决如redis实例1储存用户相关的数据redis实例2储存订单相关的数据解决容量有限和压力大的问题z轴:再拆分,可用优先级或逻辑拆分如r原创 2022-05-02 14:25:33 · 549 阅读 · 0 评论 -
redis学习笔记(十)AOF
全称:Append Only File一、AOF原理AOF的原理就是以日志的形式记录所有命令。那么恢复时只需要重新执行所有命令即可。二、与RDB对比写入速度恢复速度是否丢失数据数据量AOF快,即时写入慢,日志会很大很少丢失数据无限变大RDB慢,全量写入快因为时点性原因,如果宕机会丢失最近的数据基本跟即时数据容量差不多三、redis恢复方案问题:如果只用RDB恢复,那会丢失最近的数据。只用AOF恢复,会很慢。怎么恢复才是最好的?解决方案:re原创 2022-04-27 15:40:13 · 73 阅读 · 0 评论 -
redis学习笔记(九)RDB
全称:Redis DB的简称一、原理RDB是一种持久化技术,可以把redis现有的缓存数据持久化成一个文件。问题:时点性问题:持久化肯定不是一瞬间完成的,数据量大的话持久几十分钟都很正常。那么问题来了,比如8点开始RDB,8点30分完成,那么这个RDB的文件到底是8点的,还是8点30分的?回答:分两种情况:1.即是8点也是8点30,因为这30分钟阻塞了,不再对外提供服务(调用save就是这样,很少用这种方式)2.是8点的(bqsave,异步储存)。原理是创建一个调用内核API:fork()原创 2022-04-27 10:52:06 · 1091 阅读 · 0 评论 -
redis学习笔记(八)布隆过滤器
一、为什么要使用布隆过滤器?问题场景:如果你有张user表,id以自增方式储存,有个接口可以get(id)获取用户信息。这时有个黑客想搞崩你的网站,不停的调用get(-1),get(-2)之类的不存在的id,导致你缓存命中不了用户缓存数据,穿透到数据库承受不住这个并发量。你如何解决这个问题?(这个问题也叫缓存穿透)思考:1.负数直接返回,是一种解决方案,但无法解决传正数但也不存在的大id。而且写死规则也不是一种好的方案。2.如果从数据库中查到不存在,也缓存在redis中,但这样就会占用大量的red原创 2022-04-27 00:16:43 · 889 阅读 · 0 评论 -
redis学习笔记(七)管道、事务、发布订阅
一、管道1.管道的意义?啤酒瓶理论:怎么喝啤酒最舒服?是去超市买一瓶,喝一瓶,再去超市买一瓶。还是去超市买一箱回来慢慢喝?答案一般是后者,这就是管道的意义:减少通信成本,只需要TCP握手一次,就能执行多条命令。2.实际命令(yum install nc) nc localhost 6379 //连接redis,建立socket连接 echo -e “setk2 99\nincre k2\n get k2” | nc localhost 6379 // 连接6379,并发送3条命令,分别是原创 2022-04-26 23:36:30 · 407 阅读 · 0 评论 -
redis学习笔记(六)淘汰机制
一、redis作为缓存和数据库的区别1.缓存数据不"重要",不是全量数据,缓存应该随着访问变化,存的都是热数据2.redis里的数据应该能随着业务变化,只保留热数据,因为内存大小是有限的,也就是瓶颈3.删除优先级:业务逻辑->key的有效期 业务运转->随着访问变化,淘汰调冷数据因此能业务删除最好不用淘汰机制二、redis的淘汰算法不配置淘汰策略时,内存满了后再访问时返回错误redis淘汰策略分两个维度:所有键/有过期时间的键+淘汰策略(lru、lfu、random、ttl)所原创 2022-04-26 22:08:56 · 966 阅读 · 0 评论 -
redis学习笔记(五)encoding模型和原理
一、总体图二、为什么要区分encoding?encoding实际上就是redis的内部实现,比如list,到底是LinkedList还是ArrayList?encoding就表示LinkedList和ArrayList。encoding存在key中,有2个好处:1.执行命令时,比如对一个list类型的key执行了incrby,则立刻返回错误,不需要去到value中效验value是否是int类型。2.节省内存,理论上所有string类型都可以用raw储存,但比较小的string(小于44字节)用e原创 2022-04-26 15:35:24 · 1084 阅读 · 0 评论 -
redis学习笔记(四)redis基本使用(基本命令)
一、基本命令1.redis-cli -p {port} -n {1-16} // 连接端口和指定库例子:redis-cli -p 6379 -n 12.exit // 退出redis客户端3.help 、 help @string 查看帮助文档4.select 8 //换库5.keys * // 获取所有的键6.FLUSHDB //清空库中数据二、string的命令1.help @string 查看string的帮助文档2.set {key} {value} {过期时间,秒为单位} {N原创 2022-04-26 00:17:04 · 706 阅读 · 0 评论 -
redis学习笔记(三)NIO模型
redis使用epoll模型一、模型演进过程:1.BIO模型一个线程处理一个文件描述符,调用read是同步阻塞的2.NIO模型与BIO的区别:只需要一个线程轮训,调用read是异步的,可以立刻返回ture和false3.多路复用(select)模型与NIO的区别:可以一次传入n(最多为1024个)个文件描述符到内核,然后内核告诉客户端哪些文件描述符可用4.多路复用(epoll)模型与多路复用(select)模型的区别:用户态与内核态有一个共享空间,拷贝数据时可以少一次内核态到用原创 2022-04-25 16:43:16 · 243 阅读 · 0 评论 -
redis学习笔记(一)了解redis
一:为什么要用redis?1.先看硬盘和内存的对比磁盘内存寻址速度ms级别ns级别带宽100M/s以上10GB/s以上I/0 buffer成本扇区512byte,索引4K。就是无论读多少,最少4K据说是512B由图可见,内存寻址速度和带宽远超硬盘。2.mysql是关系型数据库,redis是nosql3.也有内存级别的关系型数据库:HANA,但是太贵了。redis是一种折中方案,既不会太贵,也不会太慢(硬盘瓶颈)4.数据在硬盘和内存的体积不一样,因为数据再硬盘中无论多小都至少占原创 2022-04-25 14:59:36 · 291 阅读 · 0 评论 -
redis学习笔记(二)安装redis
redis学习笔记原创 2022-04-25 14:49:11 · 848 阅读 · 0 评论