Redis
文章平均质量分 71
个人学习redis总结
爱欧米
这个作者很懒,什么都没留下…
展开
-
1.Redis 命令-扫描所有KEY
SCAN 命令是一个基于游标的迭代器(cursor based iterator): SCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。从上面的示例可以看到, SCAN 命令的回复是一个包含两个元素的数组, 第一个数组元素是用于进行下一次迭代的新游标, 而第二个数组元素则是一个数组, 这个数组中包含了所有被迭代的元素。在上面这个例子中, 第一次迭代使用 0 作为游标, 表示开始一次新的迭代。原创 2020-11-12 16:15:02 · 2625 阅读 · 0 评论 -
2.Redis数据类型api集合
Redis数据类型api集合: 编码类型 序号 命令及描述 使用场景 String 1 SET key value 设置指定 key 的值 数据结构特点:时间复杂度好,性能高。 适用业务场景:分布式锁、普通key-value缓存、redis限流控制 2 GET key 获取指定 key 的值原创 2020-11-12 16:16:51 · 330 阅读 · 0 评论 -
3.Redis数据结构与编码
redis编码对使用redis的用户来说是透明的,redis在不改变用户使用的前提下,优化redis编码提高其性能。redis编码是redis高性能的重要原因之一,本文是解释redis编码特点分析编码实现优劣。Redis数据结构 redis支持数据结构 编码类型 编码结构 算法思想 编码类型特点与优势 String raw-大于39个字节的字符串 .原创 2020-11-12 16:37:08 · 356 阅读 · 0 评论 -
4.Redis内存回收
因为 C 语言并不具备自动的内存回收功能, 所以 Redis 在自己的对象系统中构建了一个引用计数(reference counting)技术实现的内存回收机制, 通过这一机制, 程序可以通过跟踪对象的引用计数信息, 在适当的时候自动释放对象并进行内存回收。每个对象的引用计数信息由redisObject结构的refcount属性记录:typedef struct redisObject { // ... // 引用计数 int refcount; //...转载 2020-11-12 17:20:38 · 110 阅读 · 0 评论 -
5.Redis对象共享
除了用于实现引用计数内存回收机制之外, 对象的引用计数属性还带有对象共享的作用。举个例子, 假设键 A 创建了一个包含整数值100的字符串对象作为值对象, 如图 8-20 所示。如果这时键 B 也要创建一个同样保存了整数值100的字符串对象作为值对象, 那么服务器有以下两种做法:为键 B 新创建一个包含整数值100的字符串对象; 让键 A 和键 B 共享同一个字符串对象;以上两种方法很明显是第二种方法更节约内存。在 Redis 中, 让多个键共享同一个值对象需要执行以下两...转载 2020-11-12 17:21:49 · 364 阅读 · 0 评论 -
6.Redis对象回收策略及缓存击穿穿透雪崩场景
当Redis所用内存打到maxmemory上限时会触发响应的溢出控制策略 具体策略受 redis.conf文件 maxmemory-policy参数控制Redis支持6种策略: noeviction: 默认策略,不会删除任何数据,拒绝所有写入操作并返回客户端错误信息,此时Redis只响应读操作。 volatitle-rlu:根据LRU算法删除设置了超时属性的键,知道腾出足够空间为止。如果没有可删除的键对象,回退到noeviction策略。 allkeys-lru: 根据LRU.原创 2020-11-12 17:34:05 · 234 阅读 · 0 评论 -
7.Redis持久化之RDB
目录Redis持久化现状Redis RDB简介Redis Rdb默认配置Redis手动备份Redis数据恢复Redis关闭RDB备份与恢复Redis 内存如何配置 在讲解Redis持久化之前,我们已经对redis的api、编码结构、编码时间复杂度、对象回收策略、内存回收策略系统的分析一遍,由于Redis将数据全部保存在内存中,当机器断电或者宕机内存数据会有丢失风险,所以有必要将Redis数据持久化到内存中Redis持久化现状 Re...原创 2020-11-13 11:18:06 · 183 阅读 · 0 评论 -
8、Redis持久化AOF和RDB
即执行bgrewirteof之后,将当前数据全量以RDB的方式写入appendonly文件的前半部分,之后的命令再以 append 的方式进行追加。我们都知道,Redis运行时是将数据保存在内存中的,如果服务器宕机或者重启,内存中的数据必然会丢失。为了降低IO消耗,AOF写文件时,会先将数据写到缓冲区,然后再把缓冲区的内容 flush 到磁盘,这个过程叫做 fsync。创建一个新的进程:子进程。但是,这里又会有新的问题,bgrewirteof 对历史命令的合并是非常耗费性能的,尤其是数据量非常大的情况下。原创 2020-11-13 11:18:41 · 128 阅读 · 0 评论 -
9.Redis.conf 配置
Redis 的配置文件位于 Redis 安装目录下,文件名为redis.conf(Windows 名为 redis.windows.conf)。你可以通过CONFIG命令查看或设置配置项。语法Redis CONFIG 命令格式如下:redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME实例redis 127.0.0.1:6379> CONFIG GET loglevel1) "loglevel"2) "no...转载 2020-11-13 15:07:45 · 114 阅读 · 0 评论 -
10.Redis IO模型
Redis版本多线程支持Redis版本 请求接收 请求解析 请求处理 默认支持 开启线程 Redis6以前 主线程接收 主线程解析 多线程处理 单线程 不支持 Redis6 主线程接收 多线程解析 多线程处理 单线程 小于cup核数 Redis开关多线程测试结果对比测试环境:Redis Server: 阿里云 Ubuntu 18.04,8 CPU 2.5 GHZ, 8G 内存,主机型号 ecs.原创 2020-11-17 14:44:48 · 242 阅读 · 0 评论 -
11.Redis 集群选择及客户端选择
集群方式名称 集群优点 集群缺点 节点数 主从集群 1.同一个Master可以同步多个Slaves。 2.Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。因此我们可以将Redis的Replication架构视为图结构。 3.Master Server是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询...原创 2020-11-17 15:29:29 · 351 阅读 · 0 评论 -
12.Redis 事务有何意义?
Redis事务通常会使用MULTI,EXEC,WATCH,DISCARD,UNWATCH,WATCH key [key ...]等命令来完成, Redis实现事务实现的机制与常见的关系型数据库事务特征总结如下。BD与Redis事务差异 异同 BD事务 redis事务 相同点 事务在提交前不可见 不同点 1.redis不支持回滚 2.redis事务执行期间不会锁定待修改key,其他非事务修改可以修改此key 3.非ACID标准 Redis 事务可以一次执行多个命令..原创 2020-12-14 12:44:19 · 1040 阅读 · 0 评论 -
14、Redis哈希槽与Java一致性Hash算法实现
一致性哈希的主要作用就是用来进行负载均衡,我们设想这么一个场景,我们有四台服务器,然后需要将一批资源均匀的分配到这四台服务器上。原创 2020-11-18 15:13:49 · 682 阅读 · 0 评论 -
15. Redisson实现集合队列等功能列举
待实现参考文档Redisson官网原创 2021-01-15 14:51:12 · 262 阅读 · 0 评论 -
16.Redis布隆过滤器实现
一、布隆过滤器原理1、布隆过滤器概念布隆过滤器(Bloom Filter)由Howard Bloom在1970年提出的一种概率型数据结构,它由一个二进制(0或1)向量和一系列随机映射函数组成,其初始化后值为0。当布隆过滤器做保存操作时,并不会真正的存储该值,只会将该值HashCode对应标志位的0修改为1。优点:节约存储空间 由于布隆过滤器不会真正的存储Key,任何Key布隆过滤器只需要使用1bit的存储空间。比如:1亿个UUID存储,布隆过滤器只需要11.9M的存储空间。 查询速度快..原创 2020-11-18 15:12:54 · 321 阅读 · 0 评论 -
17、Redis、Zk分布式锁实现原理
我们在编程有很多场景使用本地锁和分布式锁,但是是否考虑这些锁的原理是什么?本篇讨论下实现分布式锁的常见办法及他们实现原理。原创 2022-11-15 18:21:25 · 813 阅读 · 0 评论 -
18、Redis主从同步原理、及SYNC和PSYNC同步区别
通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据。但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会导致数据丢失。请求量增大时,读写不分离遇到瓶颈。转载 2020-11-13 17:28:19 · 919 阅读 · 0 评论 -
19、Redis的Gossip协议
对于Redis集群包含的多个节点之间,每个节点会参与到请求响应、槽管理、故障恢复等众多的功能中,那么整个集群的信息再每个节点之间是如何进行通信的呢?今天我们就来聊下Redis的节点通信方式,Gossip协议。原创 2020-11-18 15:12:00 · 1781 阅读 · 0 评论 -
20、Redis集群Moved重定向与Ask重定向
如图所示,source部分数据已经迁移到target,客户端向source发送命令,source发现slot数据已经迁移到target,就会返回给客户端ask重定向,客户端向target发送asking命令,target返回结果。3、客户端向redis集群任意node发送命令,相应node使用CRC16加hash算法算出slot,如果slot命中,则返回成功影响,否则返回moved命令和正确的node号;1、redis集群一共有16384个虚拟slot,被均匀分配到集群里所有redis机器node上;原创 2020-11-12 17:42:05 · 1069 阅读 · 2 评论 -
21、Redis 管道通讯性能测试
客户端批量提交Redis指令,避免网络通讯开销。原创 2022-11-21 11:06:52 · 136 阅读 · 0 评论