草庐IT

Redis设计与实现3.1:主从复制

主从复制这是《Redis设计与实现》系列的文章,系列导航:Redis设计与实现笔记SLAVEOF新旧复制功能旧版复制功能旧版复制功能的实现为同步和命令传播:当刚连上Master时,要做一次全同步:sequenceDiagram participantSlave participantMaster Slave->>Master:SYNC Master->>Master:BGSAVE Master->>Master:记录此时的命令到缓冲区中Master->>Slave:发送RDBMaster->>Slave:发送命令缓冲区中的命令之所以要用到缓冲区是因为,在主节点进行BGSAVE的过程中如果有命令

Redis缓存相关的几个问题

1  缓存穿透问题描述缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。解决方案缓存空值,即对于不存在的数据,在缓存中放置一个空对象(注意,设置过期时间)2  缓存击穿问题描述缓存击穿是指热点key在某个时间点过期的时候,而恰好在这个时间点对这个Key有大量的并发请求过来,从而大量的请求打到数据库。解决方案加互斥锁,在并发的多个请求中,只有第一个请求线程能拿到锁并执行数据库查询操作,其他的线程拿不到锁就阻塞等着,等到第一个线程将数据写入缓存后,直接走缓存。3  缓存雪崩问题

《Redis设计与实现》

由浅到深,逐步讲解Redis本书主要分为四大部分。第一部分"数据结构与对象":介绍了Redis中的各种对象及其数据结构,并说明这些数据结构如何影响对象的功能和性能。第二部分"单机数据库的实现":对Redis实现单机数据库的方法进行了介绍,包括数据库、RDB持久化、AOF持久化、事件等。第三部分"多机数据库的实现":对Redis的Sentinel、复制、集群三个多机功能进行了介绍。第四部分"独立功能的实现":对Redis中各个相对独立的功能模块进行了介绍,涉及发布与订阅、事务、Lua脚本、排序、二进制位数组、慢查询日志、监视器等。  目录第1章引言1第一部分数据结构与对象第2章简单动态字符串8第

IDEA通过Jedis操作Linux上的Redis;Failed to connect to any host resolved for DNS name问题

testPing.javapublicclasstestPing{publicstaticvoidmain(String[]args){Jedisjedis=newJedis("Redis节点所在的机器的IP",6379);System.out.println(jedis.ping());System.out.println(jedis.keys("*"));}}出现以下错误:FailedtoconnecttoanyhostresolvedforDNSname.Suppressed:java.net.SocketTimeoutException:connecttimedout首先查看Jedis

redis服务器

这一次主要讲下redis中服务器这个结构体相关代码,主要从是代码层面进行讲解redis服务器redis服务器结构体主要代码在redis.h/redisServer,下面给出该结构体源码,可以看到源码中对该结构体定义很长,这一节我们一点点分析,当然有些地方可能我也理解不到位hhh//redis服务器实例structredisServer{char*configfile;/*配置文件的绝对路径*/inthz;/*serverCron()每秒调用的次数*/redisDb*db;/*数据库数组,里面存放的是该服务器所有的数据库*/dict*commands;/*命令表(受到rename配置选项的作用)

Redis持久化

Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以Redis提供了持久化功能!RDB(RedisDataBase)什么是RDB在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的。这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那R

Redis——数据操作

2022-09-20Redis——selectRedis数据库中的数据库的个数为:  16个,使用0号数据库开始的,到第15个数据库结束。在ubantu中,进入Redis客户端的命令:redis-cli在ubantu中,如果选择第0-15个数据库中的一个的命令,例如第0个:select0 Redis数据Redis中,值的类型有:  (1)字符串(string)  (2)哈希(hash)  (3)列表(list)  (4)集合(set)  (5)有序集合(zset)Redis中,操作:  (1)对于String类型:      ①增加操作(set):       例如:setnameA     

Redis变慢?深入浅出Redis性能诊断系列文章(四)

(本文首发于“数据库架构师”公号,订阅“数据库架构师”公号,一起学习数据库技术,助力职业发展) 本篇为Redis性能问题诊断系列的第四篇,也是最后一篇,主要从应用程序、系统、服务器硬件及网络系统等层面上进行讲解,重点分享了哪些配置需要重点关注和调整优化,才能最大程度的发挥Redis的处理能力; 一、服务器预留足够内存,监控SWAP使用Swap是操作系统层面行为,指当服务器内存不足时,会将原本在内存中的一部分数据拿出放入磁盘,如果再次访问这部分数据就会响应很慢,因为磁盘的访问速度是远远不如内存的。Redis作为内存数据库,有个常识一定要记住:所有的数据默认都是在内存中,不存在一部分在内存一部分在

Redis介绍与安装

2022-09-17NoSQL(notonlySQL)的介绍:  是一种非关系型数据库。NoSQL常用的产品种类:  Redis  Mongodb  HbasehadoopRedis常用的场景:  (1)可用于缓冲,即内存里面,速度快。  (2)用于社交类软件,一个小例子:抖音点赞,如果是放在关系型数据库中,关系型数据库是存放在硬盘中,响应的速度较慢。建议使用非关系型数据库。  (3)用于购物车功能的实现。Redis参考文档:https://www.redis.net.cn/在ubantu中安装Redis,使用的命令: 先使用快捷键“Ctrl+Alt+t”打开终端,后依次执行下面命令sudoa

Redis 7.x 入门和开发实战

Redis是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的API。 Redis属于NoSQL数据库,是基于键值对存储的NoSQL数据库,值(value)可以是字符串(String)、哈希(Hash)、列表(List)、集合(Sets)和有序集合(SortedSets)等类型。在实际项目中,把Redis用在合适的场景里不仅能够提升系统的性能,还能应对高并发的场景。一般会将Redis应用在缓存、秒杀、计数器和排行榜等和性能密切相关的场景里。本专栏采用当前Redis7.x最新版,通过基础知识介绍入门