redis从零到一
由浅入深理解redis的五种数据结构,持久化机制,主从复制,集群配置
呆东
小菜鸡也有大梦想,努力拼搏,就是为了给那些曾经看轻你的人一记响亮的耳光
展开
-
redis使用中的四大问题
一、数据不一致定义:主要就是指缓存中的数据和数据库中的数据不一致情况。产生的原因:当有数据修改时,无论是先修改数据库的值,还是先修改缓存中的值,都会发生数据不一致的情况,更好的解决方式,就是先更新数据库的值,在进行删除操作,但是这样的操作也会造成数据的不一致问题。主要是在两个方面,一个就是不能保证操作的原则性时,可能出现缓存不一致的情况,另一种就是在并发场景下,出现缓存不一致。原子性问题:先删除缓存,再更新数据库:当我们的删除缓存成功后,这时写入数据库失败,当我们再来请求这个数据时,首先从缓原创 2020-12-09 22:14:04 · 266 阅读 · 0 评论 -
redis—底层数据结构详解
一、redisObject在redis中基本的结构对象我们称之为RedisObject,其源码如下:typedef struct redisObject {unsigned type:4;unsigned encoding:4;unsigned lru:LRU_BITS;int refcount;void *ptr;} robj;其中:type:表示值的数据类型。 encoding:值的编码方式,就是其底层的数据结构实现。 lru:记录了对象最后一次被访问的时间,用于淘原创 2020-11-21 22:14:05 · 307 阅读 · 0 评论 -
利用redis实现分布式锁
一、基于单个redis节点实现的分布式锁因为redis是单线程程序,可以天然的保证线程安全,只要我们的命令是单条命令,就可以保证操作的安全性,而redis中给我们提供了setnx key value命令,setnx命令的作用就是当我们的redis中没有这个key的键值队时,就会创建这个键值队的值,如果已经有了这个key就不作操作;所以我们可以使用setnx命令来实现我们的分布式加锁操作。但setnx的命令会存在风险setnx没有给锁设置过期时间,一旦客户端故障没有进行释放锁操作,就将导致没有办法在获原创 2020-11-15 16:44:52 · 221 阅读 · 0 评论 -
redis性能优化骚操作 —— 绑核
一、现代CPU模式现代一个CPU中,可以有多个运行核心(称之为物理核),每个物理核都有自己独立的一级缓存(L1)和二级缓存(L2)。并且每个物理核一般会有两个超线程(称之为逻辑核);同一个物理核下的两个逻辑核同享L1和L2缓存。并且现在机器主流都是多CPU处理器结构(CPU Socket),每个CPU拥有自己的L1和L2以及L3级缓存和自己所管理的内存空间;不同处理器之间通过总线进行连接。一台机器的cpu构造如下图所示:二、cpu多核对redis的影响因为我们的cpu存在上下文切换(cont原创 2020-11-10 23:10:25 · 964 阅读 · 0 评论 -
redis——内存满了应该怎么办?
我们的redis使用的时内存空间来存储数据的,但是内存空间毕竟有限,随着我们存储数据的不断增长,当超过了我们的内存大小时,redis会怎么处理呢?今天就来聊聊redis的缓存淘汰策略。一、redis的缓存淘汰策略在redis中,一种有8种对应的缓存淘汰策略根据是否进行数据淘汰可以分为:不淘汰的数据策略(noeviction)和7种淘汰数据策略。在淘汰的数据策略中,又可以根据淘汰数据的样本分为:在设置了过期时间的数据中进行淘汰数据的四种策略(volatile-ttl,volatile-原创 2020-11-05 22:15:20 · 888 阅读 · 0 评论 -
redis集群架构的演进之路
一、redis的主从架构一开始我们的业务量不大时,一个redis节点就能满足我们的业务需求,当我们的业务量不断上涨,单台redis节点已经不能满足我们的业务需求时,这个时候redis的主从结构就出现了。redis主从结构解决的问题:redis可以部署为一个主节点,多个从节点,从节点提供读服务,主节点提供写服务,将我们的业务进行读写分离。redis如何进行主从同步,其第一次进行主从同时时,其流程如下图:首先从节点执行slaveof ip port命令,让自己成为192.168.1.1的从节原创 2020-10-28 22:24:58 · 307 阅读 · 0 评论 -
redis的持久化 —— RDB和AOF
一、AOF1.1 redis如何通过AOF进行写日志redis AOF采用的是写后操作,也就是数据先写入内存中,再写入到AOF日志文件中。采用这样的好处是,可以避免当次操作,因为写日志而降低性能,采用写后操作,可以在写入日志时,不需要校验命令的正确性,保证写入到日志的命令都是正确的。坏处是:虽然没有降低当次请求的操作,但是写入日志还是在主线程中进行的,所以会影响到下次命令的性能。1.2AOF日志记录什么在AOF日志中记录的就是操作的命令信息,例如一个操作 set hello wor.原创 2020-10-24 20:27:05 · 161 阅读 · 0 评论 -
为什么redis这么快
一、使用内存进行存储我们都知道redis是使用内存来进行数据的存储,这也是为什么redis的访问速度要远远快于mysql的主要原因,因为是使用内存存储数据,可以避免频繁的进行写盘操作,大大降低响应时间:内存器 随机访问延迟 Memory 100ns SSD 150us HDD 10ms 二、单线程结构多线程一定比单线程快嘛?虽然我们知道当我们使用多线程的时候,可以加快我们的系统访问,但是在使用多线程的过程中,对于共享变量的访问,会将多线程操作变成单线程原创 2020-10-19 22:22:29 · 5464 阅读 · 1 评论 -
redis从零开始系列 —— 数据持久化(RDB和AOF)
redis提供两种不同的持久化方法来将数据存储到硬盘里面。一种方法叫快照(RDB),它可以将存在于某一时刻的所有数据都写入硬盘里面;另一种方法叫只追加文件(AOF),它会在执行写命令时,将被执行的写命令复制到硬盘里面。一、RDB持久化redis可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本。在创建快照之后,用户可以对快照进行备份,可以将快照复制到其他服务器从而创建具有相同数...原创 2019-01-21 21:53:43 · 208 阅读 · 0 评论 -
Mac 安装redis并进行配置
一.首先进入官网下载redis对应mac的安装包 官网地址:https://redis.io按图示点击下载redis下载完成后,会在/Users/hu/Downloads 下有一个tar的解压包,我的是redis-4.0.9.tar 因为我是直接解压在/Users/hu/Downloads目录下 所在当前目录下输入:tar -zxvf redis-4.0.9.tar 就可以找到对应的解压文件...原创 2018-06-07 17:29:32 · 11977 阅读 · 6 评论 -
redis从零开始学习系列——初识redis
前言:本人最近在学习redis,根据自己看的《redis实战》这本,根据书中的内容和自己的理解,写一些自己的读书笔记,希望大家可以和我一起学习,并指正我的不足。一.redis简介: redis是一个速度非常快的非关系数据库(non-relational database),它以键值对的形式进行存储数据(包括5种不同类型的值),并且可以将存储在内存的键值对数据持久化到硬盘,可以使用复制...原创 2018-06-12 23:02:52 · 348 阅读 · 0 评论