Redis
文章平均质量分 85
Redis
小佘同学の記録
感谢关注,csdn已经不上线了,不会在更新了。 csdn都是个人在大二到大四期间学习的笔记,有些内容可能并不是正确的,请理解下,技术文章在掘金(持续更新) https://juejin.cn/user/4248168663101239
展开
-
Redis学习----Redis分布式锁
Redis分布式锁一. Springboot整合Redis搭建超卖项目①. 创建两个Module:Redis01,Redis02②. pom.xml 依赖包导入③. application.properties④. redisTemplate配置类⑤. Controller 层⑥. 测试_http://localhost:1111/buy_goods二. Redis分布式锁_JVM层面的加锁_synchronized三. Redis分布式锁_Nginx轮询转发①. Nginx配置文件修改内容②. 启动两个微原创 2021-07-15 21:59:58 · 320 阅读 · 0 评论 -
Redis学习---缓存穿透、缓存击穿、缓存雪崩
缓存穿透、缓存击穿、缓存雪崩一. 缓存穿透①. 缓存穿透介绍②. 解决办法①、业务层校验②、缓存空对象③、布隆过滤器二. 缓存击穿①. 缓存击穿介绍②. 解决办法①、设置热点数据永不过期②、定时更新③、互斥锁三. 缓存雪崩①. 缓存雪崩介绍②. 解决办法①、设置有效期均匀分布②、数据预热③、保证Redis服务高可用④. 限流降级一. 缓存穿透①. 缓存穿透介绍缓存穿透:缓存和数据库中都没有的数据,可用户还是源源不断的发起请求,导致每次请求都会到数据库,从而压垮数据库。②. 解决办法①、业务层原创 2021-07-09 09:18:18 · 199 阅读 · 1 评论 -
Redis持久化---过期删除策略和内存淘汰策略
过期删除策略和内存淘汰策略一. 设置Redis键过期时间①. 设置Redis键过期时间②. 移除键的过期时间③. 返回键的剩余生存时间二. 过期删除策略①. 定时删除②. 惰性删除③. 定期删除三. Redis过期删除策略①. 惰性删除和定期删除两种策略配合使用四. 内存淘汰策略①. 设置Redis最大内存②. 设置内存淘汰方式一. 设置Redis键过期时间①. 设置Redis键过期时间Redis提供了四个命令来设置过期时间(生存时间)。①、EXPIRE :表示将键 key 的生存时间设原创 2021-07-09 08:53:50 · 241 阅读 · 2 评论 -
Redis持久化---AOF持久化
AOF持久化一. AOF简介二. AOF 配置①. appendonly:默认值为no②. appendfilename :aof文件名③、appendfsync:aof持久化策略的配置④、no-appendfsync-on-rewrite:默认值为no。⑤、auto-aof-rewrite-percentage:默认值为100。⑥、auto-aof-rewrite-min-size:64mb。⑦、aof-load-truncated:默认值为 yes。三. AOF执行后写日志四. AOF 缓冲区五. A原创 2021-07-09 08:29:18 · 1804 阅读 · 3 评论 -
Redis持久化---RDB 持久化
RDB 持久化一. RDB 简介二. 触发方式①. 自动触发1. save2. stop-writes-on-bgsave-error3. rdbcompression4. rdbchecksum5. dbfilename6. dir②. 手动触发1. save2. bgsave三. RDB文件的载入四. 停止 RDB 持久化五. RDB 自动保存的原理①. 数组 saveparam②. dirty 计数器和lastsave 属性六. 内存快照的问题①. 快照的时候数据可以修改吗?②. 可以频繁进行快照操作原创 2021-07-07 23:41:29 · 219 阅读 · 0 评论 -
Redis五大对象---有序集合对象_ZSet
有序集合对象_ZSet一. 有序集合对象内部结构①. 编码方式二. 使用场景①. 排行榜系统②. 电话号码排序③. 姓名排序三. 常用命令一. 有序集合对象内部结构①. 编码方式有序集合对象是由ziplist (压缩列表) 或 skiplist (跳跃表) 组成的。当数据比较少时,有序集合使用的是 ziplist 存储的,有序集合使用 ziplist 格式存储必须满足以下两个条件:有序集合保存的元素个数要小于 128 个;有序集合保存的所有元素成员的长度都必须小于 64 字节。原创 2021-06-30 19:06:01 · 303 阅读 · 1 评论 -
Redis五大对象---集合对象_Set
集合对象_Set一. 集合对象内部结构①. 编码方式二. 使用场景三. 常用命令①. 标签系统②. 抽奖系统3. Set类型一. 集合对象内部结构集合类型(Set) 是一个无序并唯一的键值集合。 它的存储顺序不会按照插入的先后顺序进行存储。①. 编码方式intset(整数集合):当集合中的元素都是整数且元素个数小于set-maxintset-entries配置(默认512个)时,Redis会选用intset来作为集合的内部实现,从而减少内存的使用。hashtable(哈希表):当集合原创 2021-06-30 18:31:47 · 378 阅读 · 0 评论 -
Redis五大对象---哈希对象_Hash
哈希对象_Hash一. 哈希对象内部结构①. 编码方式②. 编码转换二. 适用场景①. 存储对象②. 计数器三. 常用命令一. 哈希对象内部结构哈希对象的键是一个字符串类型,值是一个键值对集合。①. 编码方式哈希类型的内部编码有两种:ziplist(压缩列表),hashtable(哈希表)。只有当存储的数据量比较小的情况下,Redis 才使用压缩列表来实现字典类型②. 编码转换当同时满足下面两个条件时,使用ziplist(压缩列表)编码:列表保存元素个数小于hash-max-原创 2021-06-30 18:11:42 · 449 阅读 · 3 评论 -
Redis五大对象---列表对象_List
列表对象_List一. 列表对象内部结构①. 编码方式二. 使用场景三. 常用命令一. 列表对象内部结构list 列表,它是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边),它的底层实际上是个链表结构。①. 编码方式ziplist(压缩列表):当列表的元素个数小于list-max-ziplist-entries配置(默认512个),同时列表中每个元素的值都小于list-max-ziplist-value配置时(默认64字节),Redis会选用zipl原创 2021-06-30 17:42:20 · 195 阅读 · 0 评论 -
Redis五大对象---字符串对象_String
字符串对象一. 字符串对象内部结构①. 编码方式②. 编码的转换一. 字符串对象内部结构字符串是Redis最基本的数据类型,不仅所有key都是字符串类型,其它几种数据类型构成的元素也是字符串。注意字符串的长度不能超过512M。①. 编码方式字符串对象的编码可以是int,raw或者embstr。int 编码:保存的是可以用 long 类型表示的整数值。raw 编码:保存长度大于44字节的字符串(redis3.2版本之前是39字节,之后是44字节)。embstr 编码:保原创 2021-06-30 17:15:43 · 249 阅读 · 1 评论 -
Redis五大对象---redisObject的类型与编码
对象的类型与编码一. redisObject 介绍①. redisObject数据结构②. type类型③. encoding 属性和 *prt 指针④. Redis键值对内部编码和底层数据结构一. redisObject 介绍Redis底层有六种数据结构,并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象,而每种对象又通过不同的编码映射到不同的底层数据结构。①. redisObj原创 2021-06-30 17:03:52 · 247 阅读 · 1 评论 -
Redis的底层数据结构----快速列表_quicklist
快速列表一. 基本结构①. ziplist 和 linkedlist介绍②. quicklistNode 基本结构②. quicklistLZF 结构③. quicklist 结构④. 插入⑤. 查找⑥. 删除一. 基本结构①. ziplist 和 linkedlist介绍Redis3.2版本开始对列表数据结构进行了改造,使用 quicklist 代替了 ziplist 和 linkedlist.②. quicklistNode 基本结构typedef struct quicklis原创 2021-06-29 16:25:49 · 199 阅读 · 0 评论 -
Redis的底层数据结构----压缩列表_ziplist
压缩列表一. 压缩列表①. 压缩列表ziplist介绍②. 压缩列表组成结构③. 压缩列表节点的构成一. 压缩列表①. 压缩列表ziplist介绍压缩列表(ziplist)是Redis为了节省内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构,一个压缩列表可以包含任意多个节点(entry),每个节点可以保存一个字节数组或者一个整数值。压缩列表的原理:压缩列表并不是对数据利用某种算法进行压缩,而是将数据按照一定规则编码在一块连续的内存区域,目的是节省内存。②. 压缩列表组成结构原创 2021-06-29 16:05:38 · 194 阅读 · 1 评论 -
Redis的底层数据结构----整数集合_intset
整数集合一. 整数集合结构二. 整数集合的升级和降级①. 升级②. 降级一. 整数集合结构整数集合(intset)是Redis用于保存整数值的集合抽象数据结构,它可以保存类型为int16_t、int32_t或者int64_t的整数值,并且保证集合中不会出现重复元素。typedef struct intset{ //编码方式 uint32_t encoding; //集合包含的元素数量 uint32_t length; //保存元素的数组原创 2021-06-29 15:38:44 · 172 阅读 · 0 评论 -
Redis的底层数据结构----跳跃表_skiplist
跳跃表一. 跳跃表介绍①. 跳跃表特点①. 跳跃表图解二. Redis中的跳跃表介绍①. 跳跃表节点 zskiplistNode 结构②. 跳跃表zskiplist 结构③. 搜索,插入,删除操作一. 跳跃表介绍跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其它节点的指针,从而达到快速访问节点的目的。具有如下性质:①. 跳跃表特点由很多层结构组成;每一层都是一个有序的链表,排列顺序为由高层到底层,都至少包含两个链表节点,分别是前面的head节点和后面的n原创 2021-06-27 16:45:33 · 240 阅读 · 2 评论 -
Redis的底层数据结构----字典_dict(hashtable)
字典一. Redis字典结构①. 字典结构图②. 字典dict③. 散列表dictht③. 散列表节点dictEntry二. Redis解决散列冲突①. 链表法②. Redis rehash一. Redis字典结构Redis字典使用散列表最为底层实现,一个散列表里面有多个散列表节点,每个散列表节点就保存了字典中的一个键值对。①. 字典结构图②. 字典dicttypedef struct dict{ //类型特定函数 void *type;原创 2021-06-26 17:56:09 · 503 阅读 · 1 评论 -
Redis的底层数据结构----链表_listNode
链表一. 链表定义①. listNode节点结构②. list节点结构二. Redis链表特性三. 双向无环链表在Redis中的使用链表是一种常用的数据结构,C 语言内部是没有内置这种数据结构的实现,所以Redis自己构建了链表的实现;一. 链表定义①. listNode节点结构双向无环链表定义,Redis使用一个listNode结构来表示。typedef struct listNode{ //前置节点 struct listNode *prev;原创 2021-06-26 16:14:43 · 225 阅读 · 1 评论 -
Redis的底层数据结构----简单动态字符串_SDS
Redis的底层数据结构一. 简单动态字符串(SDS)①. SDS 定义②. SDS优点①、常数复杂度获取字符串长度②、杜绝缓冲区溢出③、减少修改字符串的内存重新分配次数④、二进制安全⑤、兼容部分 C 字符串函数二. 链表①. 链表定义②. Redis链表特性③. 双向无环链表在Redis中的使用一. 简单动态字符串(SDS)Redis 是用 C 语言写的,但是对于Redis的字符串,却不是 C 语言中的字符串(即以空字符’\0’结尾的字符数组),它是自己构建了一种名为 简单动态字符串(simple原创 2021-06-21 17:54:39 · 184 阅读 · 0 评论 -
Redis学习---实现分布式Session管理
Redis实现分布式Session管理一. Redis实现分布式Session管理1. Memcached管理机制2. Redis管理机制二. SpringBoot项目开发Session管理1. 引入依赖pop.xml2. 开发Session管理配置类(使用注解)3. Controller层设计4.打包测试三 . Nginx+Tomcat集群+Redis测试1.Nginx相关配置2.Tomcat集群3.Redis集群4. 测试一. Redis实现分布式Session管理1. Memcached管理机制原创 2020-12-28 18:08:38 · 710 阅读 · 0 评论 -
Redis学习---Redis集群搭建
这里写目录标题一. Redis集群二. 集群架构图三. Redis集群原理分析四. 集群搭建1.准备环境安装ruby2. redis集群依赖3.在一台机器创建7个目录4.每个目录复制一份配置文件5.修改不同目录配置文件6.指定不同目录配置文件启动七个节点7.查看进程五. 创建集群1.复制集群操作脚本到bin目录中2.创建集群3.集群创建成功出现如下提示六.查看集群状态1.查看集群状态2.集群节点状态说明七. 测试Redis集群八. 添加主节点九. 添加从节点十.删除副本节点十一.集群在线分片十二.Sprin原创 2020-12-28 17:07:02 · 279 阅读 · 0 评论 -
Redis学习--哨兵机制
Redis哨兵机制一. 哨兵Sentinel机制二. 哨兵架构原理图三. 在主节点上创建哨兵配置四. 配置哨兵,在sentinel.conf文件中填入内容:五. 启动哨兵模式六. 进行测试六. SpringBoot操作操作哨兵机制一. 哨兵Sentinel机制Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的原创 2020-12-28 16:25:50 · 228 阅读 · 0 评论 -
Redis学习---主从复制
Redis主从复制一. 主从复制特点二. 主从复制架构图三. 搭建主从复制四. 测试主从复制五. 从机配置解析一. 主从复制特点主从复制架构仅仅用来解决数据的冗余备份,从节点仅仅用来同步数据无法解决: master节点出现故障的自动故障转移二. 主从复制架构图我搭建的是一组二从三. 搭建主从复制这里我搭建的是伪分布式,简单暴力创建三个目录在root下面将redis.conf 配置文件复制进去修改每一台机器的redis.conf配置//1.准备3台机器并修改原创 2020-12-28 16:02:52 · 199 阅读 · 0 评论 -
Redis学习--Redis数据库相关指令
这里写目录标题一. 数据库操作指令1.Redis中库说明2.Redis中操作库的指令3.redis客户端显示中文二. 操作key相关指令1.DEL指令2.EXISTS指令3.EXPIRE4.KEYS5.MOVE6.PEXPIRE7.PEXPIREAT8.TTL9.PTTL10.RANDOMKEY11.RENAME12.TYPE二. Redis数据类型1. String类型2. List类型3. Set类型4. ZSet类型5. hash类型一. 数据库操作指令1.Redis中库说明使用redis的原创 2020-12-27 22:29:33 · 268 阅读 · 0 评论 -
Redis学习--SpringBoot整合Redis
SpringBoot整合Redis1. 导入依赖2. 配置application.propertie3. RedisAutoConfiguration 源码分析4. 自定义RedisConfig5. 简单测试一下6. 使用StringRedisTemplate7. 使用RedisTemplate8. 使用boundXXXOps()9. 封装Redis工具类1. 导入依赖SpringBoot2.x之后,原来使用的jedis被替换为了 lettuce <!--操作Redis-->原创 2020-12-27 21:36:58 · 259 阅读 · 0 评论 -
Redis学习---持久化机制
Redis持久化机制一. 快照(Snapshot)1. 快照特点2.快照生成方式1.客户端方式之BGSAVE2.客户端方式之SAVE3.服务器配置方式之满足配置自动触发4.服务器接收客户端shutdown指令3.配置生成快照名称和位置1.修改生成快照名称2.修改生成位置二. AOF只追加日志文件1.AOF特点2.开启AOF持久化3.日志追加频率1.always 【谨慎使用】2.everysec 【推荐】3.no 【不推荐】三. AOF文件的重写1.客户端BGREWRITEAOF触发重写2.服务器配置方式自动原创 2020-12-27 19:56:53 · 290 阅读 · 0 评论 -
Redis学习---分布式Redis+Mybatis二级缓存
Redis分布式缓存管理一. 本地缓存和分布式缓存二. 利用mybatis自身本地缓存结合redis实现分布式缓存三. 分析Mybatis缓存实现四. 自定义Rediscache实现五. 解决关联关系时更新缓存信息六. 执行增删改 清空缓存七.缓存优化策略八. Redis缓冲穿透和雪崩缓存穿透解决方式缓存击穿(量太大,缓存过期)解决方式缓存雪崩解决方式SpringBoot整合+Redis+Mybatis二级缓存一. 本地缓存和分布式缓存本地缓存:存在应用服务器内存中数据称之为本地缓存分布式原创 2020-12-27 15:20:07 · 727 阅读 · 0 评论 -
Redis学习目录--2020~2021年
Redis学习目录Redis学习—Centos7.0安装Redis原创 2020-12-27 12:39:30 · 584 阅读 · 0 评论 -
Redis学习---Centos7.0安装Redis
Centos7.0安装Redis1.准备环境2.下载redis源码包3.将下载redis资料包上传到Linux中4.解压缩文件5.安装gcc6.进入解压缩目录执行如下命令7.编译完成后执行如下命令8.进入bin目录启动redis服务9.进入bin目录执行客户端连接操作10. 外界连接访问Redis操作1.准备环境VM虚拟机 / 买一台服务器Centos7.x+2.下载redis源码包Redis官网地址我这里放一个我安装版本 redis-4.0.10.tar.gz 链接:https://原创 2020-12-27 12:24:58 · 2488 阅读 · 0 评论
分享