Redis基础介绍&安装部署
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。它可以用作数据库、缓存和消息中间件。与其他 key - value 缓存产品对比,Redis有以下三个特点:
1、Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
2、Redis支持多样化的数据结构,除了常用的数据结构string,list,set,zset,hash外,还支持bitmaps,hyperloglogs,geospatial索引半径查询。
3、性能极高 – 官方给出的Redis性能指标是10万级的qps,在实际生产环境中由于各种因素影响也能达到4万+qps 。
Redis重点版本介绍
Redis稳定版本号多为偶数版(例如2.6、2.8、3.0、3.2),这里重点介绍几个大版本的常接触的特性变化(详细内容可查看Redis版本记录文件)。
Redis2.6
1、键的过期时间支持毫秒。 2、slave节点支持只读模式 3、客户端最大输出缓冲软、硬限制。可参考参数配置项client-output-buffer-limit 4、AOF文件支持可变参数去重写聚合数据类型。 5、shutdown命令支持save和nosave模式 6、info命令支持模块输出,如info memory返回内存信息 7、新增info commandstats命令统计模块。
Redis2.8
1、新增部分复制功能,这里命名为psync1来区别4.0的部分复制psync2。在2.8之前,主从中断(如正常的网络抖动或者执行较大命令阻塞服务)只能通过全量复制来同步,这样会占用大量的网络、CPU、磁盘资源。极端情况下会主从间会出现复制失败——申请全量复制的循环。部分复制利用repl-backlog-size复制积压缓冲区来存储在从节点与主节点心跳失败期间的命令,在重连成功后根据复制积压缓冲区的位置来判断是否进行部分复制。
2、支持动态修改最大连接数maxclients 3、config rewrite可将通过config set动态修改的参数配置项写入配置文件中
Redis3.0 & Redis3.2
1、Redis Cluster:Redis的官方分布式实现。 2、LRU算法大幅提升。 3、config set设置maxmemory时候可以选择单位 4、config set动态修改命令可修改更多参数
Redis4.0
1、提供了模块系统,方便第三方开发者拓展Redis的功能,更多模块详见:http://redismodules.com。 2、PSYNC2.0:优化了之前版本中,主从节点切换必然引起全量复制的问题。 3、提供了新的缓存剔除算法:LFU(Last Frequently Used),并对已有算法进行了优化。 4、新增异步惰性删除功能,有效解决删除bigkey可能造成的Redis阻塞。 5、提供了RDB-AOF混合持久化格式,充分利用了AOF和RDB各自优势。 6、提供memory命令,实现对内存更为全面的监控统计。 7、Redis Cluster兼容NAT和Docker。 8、新增内存碎片回收功能(Active defragmentation),可主动回收内存碎片。
Redis5.0
1、新的流数据类型(Stream data type) https://redis.io/topics/streams-intro 2、引入动态的 HZ(Dynamic HZ) 以平衡空闲 CPU 使用率和响应性 3、升级 Active defragmentation 至 v2 版本 4、redis-cli 中的集群管理器从 Ruby (redis-trib.rb) 移植到了 C 语言代码。
重点功能总结
在新增的许多特性中,改善较强的功能包括
1、2.8版本的部分复制psync1,该功能提供了部分复制功能,避免之前稍有异常便出现全量复制的问题。 2、3.0版本的官方分布式解决方案Redis Cluster。 3、4.0版本的异步惰性删除功能,解决了长期以来Redis大key引起的阻塞问题,为Redis性能优化指明了异步化方向。 4、5.0版本的Stream数据类型,支持多播的可持久化的消息队列。
Redis安装部署(以5.0.4版本为例)
1、从官网上下载Redis压缩包、解压并编译,即可生成可执行文件
在编译安装后,在src下有几个以redis开头的可执行文件,称为redis shell,这些可执行文件可做很多事情。
可执行文件
|
作用
|
redis-server
|
启动redis
|
redis-cli
|
redis命令行工具
|
redis-benchmark
|
基准测试工具
|
redis-check-aof
|
AOF持久化文件检测工具和修复工具
|
redis-check-dump
|
RDB持久化文件检测工具和修复工具
|
redis-sentinel
|
启动redis-sentinel
|
2、启动Redis服务
./bin/redis-server redis.conf &
由于Redis主要是单线程服务,大部分时间只用到一个CPU,所以一般会在同一个机器上部署多个节点。
3、服务启动后即可通过Redis客户端redis-cli执行命令,这里仅介绍比较常用的运维命令
redis-cli -p 6379 info all
可查看服务端包括Server、Clients、Memory、Persistence、Stats、Replication、CPU、Commandstats、Cluster、Keyspace共计10个大类别的的信息。
redis-cli -p 6379 info replication
# Replication
role:master
connected_slaves:0
master_replid:a2c864076960f45041c067e2463aaf586d04b93b
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
可查看主从复制类别的统计信息。
redis-cli -p 6379 config get "a*" 获取a开头所有的配置项 redis-cli -p 6379 config set appendonly yes 开启aof持久化选项,将数据持久化到aof文件中 redis-cli -p 6379 config rewrite 将动态修改的参数写入配置文件中 redis-cli -p 6379 client list 查看当前所有的客户端连接信息 redis-cli -p 6379 bgsave 在后台备份数据,生成rdb文件 redis-cli -p 6379 shutdown 关闭Redis服务
其他命令可参考官方的命令大全https://redis.io/commands