![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 71
丁真的小马
这个作者很懒,什么都没留下…
展开
-
MySQL和Redis的数据一致性
一、保证数据一致性的四个方案先更新数据库,再更新缓存(有bug) 并发更新数据库场景下,会将脏数据刷新到缓存,不推荐 同时有请求A和请求B进行更新操作,那么会出现: 线程A更新了数据库; 线程B更新了数据库; 线程B更新了缓存; 线程A更新了缓存; 先更新缓存,再更新数据库(有bug) 缓存更新成功后,数据库更新失败,则会造成数据不一致性,而且也有并发问题,不推荐 先删除缓存原创 2022-01-08 16:18:20 · 130 阅读 · 0 评论 -
Redis:数据结构与对象
一、简单动态字符串struct sdshdr{ //记录buf数组中已使用的字节的数量,等于SDS所保存的字符串长度 int len; //记录buf数组中未使用字节的数量 int free; //字节数组,用于保存字符串 char buf[];}...原创 2021-12-29 23:16:27 · 566 阅读 · 0 评论 -
Redis:集群
一、节点一个Redis集群由多个节点组成,刚开始每个节点都是相互独立的,要组建集群需要将各个独立的节点连接起来连接各个节点的工作可以使用CLUSTER MEET命令来完成:CLUSTER MEET <ip> <port>1.1 启动节点一个节点就是运行在集群模式下的Redis服务器,Redis服务器在启动时会根据cluster-enabled配置选项是否为yes来决定是否开启服务器的集群模式节点(运行在集群模式下的Redis服务器)会继续使用所在单.原创 2021-12-01 01:08:26 · 467 阅读 · 0 评论 -
Redis:跳跃表
Redis使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时,Redis就会使用跳跃表来作为有序集合键的底层实现Redis两个地方用到跳跃表:有序集合键 集群节点一、跳跃表的实现两个结构定义:zskiplistNode(跳跃表节点) zskiplist(保存跳跃表节点相关信息)1.1 zskiplistheader:指向跳跃表的表头节点 tail:指向跳跃表的表尾节点 level:记录目前跳跃表内,层数最原创 2021-11-30 21:40:17 · 623 阅读 · 0 评论 -
Redis:主从复制
一、主从复制主从复制即将master中的数据即时有效的复制到slave中特征:一个master可以拥有多个slave,一个slave只对应一个mastermaster职责:写数据 执行写操作时,将出现变化的数据自动同步到slave 读数据(可忽略)slave职责:读数据 写数据(禁止)主从复制作用:读写分离:master写、slave读,提高服务器的读写负载能力 负载均衡:基于主从结构,配合读写分离,由slave分担master负载,并根据需求的变化,改变slave的数量原创 2021-11-25 16:06:40 · 575 阅读 · 0 评论 -
Redis:高级数据类型
一、Bitmaps# 设置bits的第0位值为1127.0.0.1:6379> setbit bits 0 1(integer) 0# 获取bits这个键的第0位上的值127.0.0.1:6379> getbit bits 0(integer) 1127.0.0.1:6379> setbit day01 0 1(integer) 0127.0.0.1:6379> setbit day01 4 1(integer) 0127.0.0.1:6379>原创 2021-11-25 12:00:58 · 60 阅读 · 0 评论 -
Redis:核心配置
# 服务端配置 # 设置服务器以守护进程方式运行,默认为nodaemonize yes # 绑定主机地址,绑定后只能通过ip访问# bind 127.0.0.1 # 设置服务器端口号,默认6379# port 6379 # 设置数据库数量,默认16databases 16 # 日志配置 # 设置服务器以指定日志记录级别,可选项为# debug# verbose 默认# notice 生产环境建议使用这个级别,简化日志输出,降低io频率# warning.原创 2021-11-24 20:07:16 · 60 阅读 · 0 评论 -
Redis:删除策略和逐出策略
一、数据库键空间Redis是一个键值对数据库服务器,服务器的每个数据库都由一个redis.h/redisDb结构表示,其中redisDb结构的dict字典保存了数据库的所有键值对,我们将这个字典称为键空间。键空间和用户所见的数据库时直接对应的:键空间的键就是数据库的键,每个键都是一个字符串对象 键空间的值也就是数据库的值,每个值是任意一种Redis对象(五种数据类型)redisDb结构的 expires 字典保存了数据库中所有键的过期时间,我们称为过期字典:过期字典的键是一个指针,这原创 2021-11-24 17:37:52 · 355 阅读 · 0 评论 -
Redis:事务
Redis通过MUTIL、EXEC、WATCH等命令来实现事务功能。事务提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端的命令请求。一、事务的实现一个事务的三个阶段:事务开始 命令入队 事务执行开启事务:设定事务的开启位置,此命令执行后,后续所有的指令均加入到事务中multi执行事务:设定事务的结束位置,同时执行事务,与multi成对原创 2021-11-24 15:44:48 · 66 阅读 · 0 评论 -
Redis持久化:AOF
AOF持久化是通过保存Redis服务器所执行的写命令(set,sadd,push)来记录数据库状态被写入AOF文件的所有命令都是以Redis的命令请求协议格式保存的一、AOF持久化实现三个步骤:命令追加、文件写入、文件同步1.1 命令追加服务器执行完一个写命令之后,会以协议格式将被执行的写命令追加到服务器状态的 aof_buf 缓冲区的末尾1.2 AOF文件的写入与同步Redis的服务器进程就是一个事件循环,在每一个事件循环之前,它都会调用flushAppendOnlyFIle函原创 2021-11-23 14:39:27 · 789 阅读 · 0 评论 -
Redis持久化:RDB
一、持久化持久化:利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化。防止数据意外丢失,确保数据安全性。持久化过程保存什么?RDB(快照模式):将当前数据状态进行保存,存储数据结果,存储格式简单,关注点在数据 AOF(过程日志):将数据的操作过程进行保存,存储操作过程,存储格式复杂,关注点在数据的操作过程。AOF文件更新频率通常比RDB文件的更新频率高:如果服务器开启了AOF持久化功能,那么服务器优先使用AOF文件还原数据库状态 只有在AOF持久原创 2021-11-22 00:02:10 · 676 阅读 · 0 评论 -
Redis:通用指令
一、key通用操作删除指定keydel key获取key是否存在exists key获取key的类型type key二、key扩展操作为指定key设置有效期expire key secondspexpire key millisecondsexpireat key timestamppexpireat key millseconds-timestamp获取key的有效时间ttl keypttl key切换key从时效性转为永久性pers原创 2021-11-20 23:46:05 · 466 阅读 · 0 评论 -
Redis:数据存储类型
五种常用数据类型:string、hash、list、set和sorted_set。redis数据存储格式:redis自身是一个Map,其中所有的数据采用key:value形式存储 数据类型指的是存储的数据的类型,也就是value部分的类型,key部分永远都是字符串一、string类型存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型 存储数据的格式:一个存储空间保存一个数据 存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数据操作使用1.1 stri原创 2021-11-18 17:23:37 · 3831 阅读 · 2 评论