rdb

Redis 6.0 稳定版发布,支持多线程 IO

不打扰是莪最后的温柔 提交于 2020-05-05 11:05:17
阿里云智能数据库事业部 OLAP 平台团队现向 2021 届海内外院校应届毕业生(毕业时间在2020年11月-2021年10月之间)招聘大数据系统工程师,有机会转正,有意请加 iteblog 微信内推。 五一期间, Redis 6.0.0 稳定版(GA)终于发布, Redis 6.0 最终的发布一共经历了四个 RC(Release Candidate)版,从第一个候选版本的发布到一个稳定版本前后经历了大概四个半月(Redis 6.0 RC1 于 2019-12-19 发布)。Redis 6 是 Redis 有史以来最大的版本,虽然现在发布了 GA 版,但是在将它投入生产之前仍然需要谨慎。本文将介绍 Redis 6.0 RC1 到 GA 版本除稳定性相关之外的新功能或改进。 文章目录 1 客户端缓存进行了重新设计 2 用于复制的 RDB 文件如果不再有用,它将立即被删除 3 ACL 有所提升 4 PSYNC2 复制协议进行了改进 5 带有超时的 Redis 命令现在要好用得多 6 RDB文件现在加载速度更快了 7 新的 STRALGO 命令 8 支持多线程 IO 客户端缓存进行了重新设计 Redis 6.0 RC1 到 GA 版本,Redis 客户端缓存在某些方面进行了重新设计,特别是放弃了缓存槽(caching slot)方法而只使用 key 的名称。在分析了备选方案之后,在其他

Redis 6.0 正式版终于发布了!除了多线程还有什么新功能?

ε祈祈猫儿з 提交于 2020-05-04 19:29:22
Redis 6.0.1 于 2020 年 5 月 2 日正式发布了,如 Redis 作者 antirez 所说,这是迄今为止最“企业”化的版本,也是有史以来改动最大的一个 Redis 版本,同时也是参与开发人数最多的一个版本。 所以在使用此版本之前,建议各位开发者先进行深入的测试再考虑投产,毕竟生产坏境无小事。好了,回到本文的重点,接下来我们来重点看下 Redis 6.0.1 给我们带来了那些新功能。 所以在使用此版本之前,建议各位开发者先进行深入的测试再考虑投产,毕竟生产坏境无小事。好了,回到本文的重点,接下来我们来重点看下 Redis 6.0.1 给我们带来了那些新功能。 Redis 新功能介绍 Redis 6 的更新日志,主要包含以下五部分的内容: Redis 6.0-RC1 版新功能介绍; Redis 6.0-RC2 版新功能介绍; Redis 6.0-RC3 版新功能介绍; Redis 6.0-RC4 版新功能介绍; Redis 6.0.0 GA 版新功能介绍。 除了以上这些版本的更新日志外,还有 6.0.1 正式版的更新日志,不过这个正式版的发布时间只比 Redis 6.0.0 GA 晚了两天,因此只修复了一些 bug,所以我们只需要看以上五个日志即可。 1.Redis 6.0-rc1 更新日志 官方更新日志如下: Redis 6 improves Redis in a

重磅消息:Redis 6.0.0 稳定版发布

我的梦境 提交于 2020-05-04 14:04:46
点击上方“朱小厮的博客”,选择“ 设为星标” 后台回复" 加群 ",加入新技术群 Redis的作者在博客上宣布:Redis 6.0.0 稳定版发布了。原文地址:http://antirez.com/news/132 那么,从RC1到今天,除了稳定之外,还有什么变化呢? 1、重新设计了客户端缓存,特别是放弃了caching slot,而只使用key names。 2、现在Redis支持这样一种模式:如果用于复制的RDB文件不再有用,它将立即删除。在某些环境中,最好不要将数据放在磁盘上,而只放在内存中。 3、acl在特点方面变得更好。首先,有一个新的ACL日志命令,它允许查看所有违反ACL的客户机、访问不应该访问的命令、访问不应该访问的密钥,或者验证尝试失败。日志实际上在内存中,因此每个外部代理都可以调用“ACL log”来查看发生了什么。这对于调试ACL问题非常有用。 4、改进了复制协议PSYNC2。Redis能够更频繁地部分重新同步,使副本和主副本找到公共偏移。 5、带有超时的Redis命令现在不仅BLPOP并且以前可以接受秒的命令现在可以接受十进制数。 6、RDB文件现在加载速度更快。根据文件的实际组成(较大或较小的值),可以预期20/30%的改进。当有很多客户机连接时,信息也更快了,这是一个老问题,现在终于解决了。 7、我们有一个新命令STRALGO,它实现了复杂的字符串算法

Redis-3.2.0集群配置(redis cluster)

守給你的承諾、 提交于 2020-05-03 21:09:52
目录 目录 1 1. 前言 2 2. 部署计划 2 3. 目录结构 2 4. 编译安装 3 5. 修改系统参数 3 5.1. 修改最大可打开文件数 3 5.2. TCP监听队列大小 4 5.3. OOM相关:vm.overcommit_memory 4 5.4. /sys/kernel/mm/transparent_hugepage/enabled 4 6. 配置redis 4 7. 启动redis实例 6 8. 创建和启动redis cluster前的准备工作 6 8.1. 安装ruby 7 8.2. 安装rubygems 7 8.3. 安装redis-3.0.0.gem 7 9. redis-trib.rb 7 10. 创建和启动redis集群 8 10.1. 复制redis-trib.rb 8 10.2. 创建redis cluster 9 10.3. ps aux|grep redis 10 11. redis cluster client 11 11.1. 命令行工具redis-cli 11 11.2. 从slaves读数据 11 11.3. jedis(java cluster client) 11 11.4. r3c(C++ cluster client) 12 12. 新增节点 12 12.1. 添加一个新主(master)节点 12 12.2. 添加一个新从

Redis 的持久化方案

*爱你&永不变心* 提交于 2020-05-03 19:58:27
目录 文章目录 目录 RDB AOF 命令写入 文件同步 文件重写 重启加载 性能问题与解决方案 RDB RDB 持久化是把当前进程数据生成快照保存到硬盘的过程 。 触发 RDB 持久化过程分为手动触发和自动触发。RDB 完成后会自动生成一个文件,保存在 dir 配置的指定目录下,文件名是 dbfileName 指定。Redis 默认会采用 LZF 算法对生成的 RDB 文件做压缩处理,压缩后的文件远远小于内存大小,默认开启。 手动触发 :命令有 save 和 bgsave save :该命令会阻塞 Redis 服务器,直到 RDB 的过程完成,已经被废弃,因此线上不建议使用。 bgsave :每次进行 RDB 进程都会 fork 一个子进程,由子进程完成 RDB 的操作,因此阻塞只会发生在 fork 阶段,一般时间很短。 自动触发 : 根据我们的 save m n 配置规则自动触发。 如果从节点执行全量复制操作, 主节点自动执行 bgsave 生成 RDB 文件并发送给从节点。 执行 debug reload 命令重新加载 Redis 时, 也会自动触发 save 操作。 默认情况下执行 shutdown 命令时, 如果没有开启 AOF 持久化功能则自动执行 bgsave。 RDB 执行流程: 执行 bgsave 命令后,会先判断是否存在 AOF 或者 RDB 的子进程,如果存在

REDIS参数配置

好久不见. 提交于 2020-05-03 18:16:28
1.参数说明 INCLUDES include /path/to/local.conf ## 引入多个配置文件,如果写在主conf 的开头,会被主conf后面的参数覆盖,如果想引入的配置文件覆盖主conf,就把该参数写到末尾 NETWORK bind 192.168.1.100 10.0.0.1 bind 127.0.0.1 ::1 ## bind:绑定redis服务器网卡IP,默认为127.0.0.1,即本地回环地址。这样的话,访问redis服务只能通过本机的客户端连接,而无法通过远程连接。如果bind选项为空的话,那会接受所有来自于可用网络接口的连接 port 6379 ## 指定redis运行的端口,默认是6379 timeout 0 ## 设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接。默认值为0,表示不关闭 tcp-keepalive ## 单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是300s,如果设置为0,则不会周期性的检测 ## timeout 是client多久没发命令就关闭该连接,keepalive是定期检查,检查到client没响应再关闭该连接 protected-mode yes ## 是否开启保护模式,默认开启

[redis]dict和rehash

强颜欢笑 提交于 2020-05-02 14:21:48
一、底层结构剖析 我们来自顶向下来分析redis内部字典的数据结构 dict typedef struct dict { dictType *type; //类型函数指针 这个结构体包含了一组处理特定类型的函数 void *privdata; //私有数据 传给特定类型的函数 dictht ht[2]; //哈希表 long rehashidx; //rehash的进度 -1则为没有进行rehash unsigned long iterators; /* number of iterators currently running */ } dict; dictht 哈希表,只使用 ht[0] ht[1] 用于 rehash的临时空间 typedef struct dictht { dictEntry **table; //哈希表数组 这是个数组 数组元素为 dictEntry指针 dictEntry保存了键值对 unsigned long size;//table数组的大小 unsigned long sizemask;//用于计算索引 size-1 unsigned long used; //已经分配的键值对数量 } dictht; 计算索引 h = dictHashKey(key) & n.sizemask; dictEntry 存放键值对的结构体 typedef struct

redis持久化机制、删除策略、淘汰策略、数据一致性问题及布隆过滤器详解

冷暖自知 提交于 2020-05-02 13:42:49
为了提高系统的访问效率和降低服务器压力,我们通常会采用缓存的策略,而使用缓存可以有效地支持高性能和高并发,而我们常用redis作为缓存。 高性能: 用户第一次访问数据库中的某些数据时,是从硬盘中读取的,该过程缓慢。而操作缓存是直接操作内存,速度快。所以,当第一次访问后,将数据存储在缓存,若数据库中的数据有变动,则同步改变缓存中相应的数据。 高并发: 直接操作缓存能够承受的请求是远远大于直接访问数据库的,可以将热点数据保存到缓存中,从而使部分请求直接到达缓存,而不用经过数据库,降低服务器压力的同时,提高了并发量。 为了更好地引入缓存一致性的问题,先来讲下redis的持久化策略、过期键的删除策略和内存淘汰策略。 一、redis持久化策略。 首先,redis支持 RDB(默认)和AOF 两种持久化策略。 a) RDB :Redis Database。RDB是Redis默认的持久化方式。每隔一定的时间周期就将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。通过配置文件中的save参数可以设置生成快照的时间周期。 RDB的优缺点: 优点: 1 、只有一个文件dump . rdb,方便持久化; 2 、容灾性好,一个文件可以保存到安全的磁盘; 3 、性能最大化。使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能; 4 、相对于数据集大时

[redis]dict和rehash

本小妞迷上赌 提交于 2020-05-02 13:26:25
一、底层结构剖析 我们来自顶向下来分析redis内部字典的数据结构 dict typedef struct dict { dictType *type; //类型函数指针 这个结构体包含了一组处理特定类型的函数 void *privdata; //私有数据 传给特定类型的函数 dictht ht[2]; //哈希表 long rehashidx; //rehash的进度 -1则为没有进行rehash unsigned long iterators; /* number of iterators currently running */ } dict; dictht 哈希表,只使用 ht[0] ht[1] 用于 rehash的临时空间 typedef struct dictht { dictEntry **table; //哈希表数组 这是个数组 数组元素为 dictEntry指针 dictEntry保存了键值对 unsigned long size;//table数组的大小 unsigned long sizemask;//用于计算索引 size-1 unsigned long used; //已经分配的键值对数量 } dictht; 计算索引 h = dictHashKey(key) & n.sizemask; dictEntry 存放键值对的结构体 typedef struct

Java开发人员怎么面试 常见Redis面试题有哪些

こ雲淡風輕ζ 提交于 2020-05-01 07:49:54
  Java开发人员怎么面试?常见Redis面试题有哪些?Redis是目前各大企业都在使用的人们技术,也是企业选拔人才时考核的一个难题。有很多同学只是简单了解Redis的应用,但对于为什么要用Redis以及企业面试中有关Redis的问题却答不上来。接下来千锋就给大家简单分析一下。   为什么使用Redis?   项目中使用Redis,主要考虑性能和并发两个方面。在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用Redis做一个缓冲操作,让请求先访问到Redis,而不是直接访问数据库。不过,Redis也有慢查询操作。根据交互效果的不同,响应时间没有固定标准。在理想状态下,我们的页面跳转需要在瞬间解决,对于页内操作则需要在刹那间解决。   Redis的数据类型有哪些?   数据类型:   1)String:一般做一些复杂的计数功能的缓存;   2)Hash:存储二维数据或对象;   3)List:可实现队列,栈及有序的数据存储;   4)Set:常用于黑名单,微信抽奖等功能,应用场景多变;   5)SortedSet:做排行榜应用,取TOPN操作;延时任务;做范围查找。   Redis持久化机制是什么?   Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化