1.Redis简介
1.1 盛赞Redis
1.2 Redis特性
1.3 Redis使用场景
1.3.1 Redis可以做什么
1.3.2 Redis不可以做什么
1.4 用好Redis的建议
1.5 正确安装并启动Redis
1.5.1 安装Redis
1.5.2 配置、启动、操作、关闭Redis
1.6 Redis重大版本
1.7 本章重点回顾
1.1 盛赞Redis
http://redis.ioRedis全称REmote Dictionary Server。
Redis是由Salvatore Sanfilippo于2008年开发一个高性能队列功能。
Redis是一种基于键值对的NoSQL数据库。
Redis的值由string字符串\hash哈希\list列表\set集合\zset有序集合\Bitmaps位图\HyperLogLog\GEO地理信息定位 等多种数据结构和算法组成。
Redis将所有数据都存放在内存中(提升读写性能),将内存中的数据利用快照和日志的形式保存到磁盘上(永久存储)。
Redis提供了键过期、发布订阅、事务、流水线、Lua脚本等功能。
1.2 Redis特性
(1)速度快:读写10万/秒。4个原因:数据都在内存中、C语言实现、单线程架构、源码高性能。
(2)基于键值对的数据结构服务器:Redis中的值可以是字符串、哈希、列表、集合、有序集合、位图、HyperLogLog、GEO地理信息定位。
(3)丰富的功能:除了5种数据结构外,还提供了键过期、发布订阅、事务、流水线(Pipeline)、Lua脚本等功能。
(4)简单稳定:代码量少(5万行),单线程模型,不依赖OS的类库。
(5)客户端语言多:通过TCP协议与客户端通信,客户端涵盖了主流编程语言(java\PHP\Python\C\C++\Nodejs等)。
(6)持久化:通过RDB或AOF机制将内存中数据保存到磁盘上。
(7)主从复制:Redis提供主从复制,数据多副本功能。
(8)高可用和分布式:Redis哨兵提供了故障自动转移功能,为主从复制增加了高可用能力;Redis集群实现了分布式、高可用、读写性能扩展、容量扩展等功能。
1.3 Redis使用场景
1.3.1 Redis可以做什么
(1)缓存:缓存可以加快数据的访问速度,降低后端数据库的压力。Redis提供了键值过期时间设置,并提供最大内存控制及内存溢出后的淘汰策略等。
(2)排行榜系统:Redis提供了列表和有序集合数据结构,方便构建排行榜系统。
(3)计数器应用:每次播放或浏览后计数器加1,Redis计数性能非常高。
(4)社交网络:Redis提供了多种数据结构,便于实现社交网络的多个功能。
(5)消息队列系统:Redis提供了发布订阅、阻塞队列等功能可以满足消息队列的基本需求。
1.3.2 Redis不可以做什么
Redis适合存储小规模的数据(10GB以下),不适合存储大规模的数据(10GB以上)。原因:Redis使用内存存储全部数据,机器内存不可以无限大。
Redis适合存储热数据,不适合存储冷数据。原因:存储冷数据对内存是一种浪费。
1.4 用好Redis的建议
(1)切勿当作黑盒使用,开发与运维同样重要
(2)阅读源码
1.5 正确安装并启动Redis
1.5.1 安装Redis
(1)在Linux上安装Redis
Redis适合在所有Linux系统上安装,根据OS的不同,使用OS对应的安装工具即可,如centos系统使用yum install redis命令即可。
所有OS都可以使用源码方式安装Redis,如下:
下载Redis指定版本的源码压缩包到当前目录
wget http://download.redis.io/releases/redis-6.2.3.tar.gz
解压缩Redis源码压缩包
tar xzf redis-6.2.3.tar.gz
建立一个Redis目录的软连接,指向解压缩后的redis-6.2.3目录(屏蔽redis版本对安装路径的影响)
ln -s redis-6.2.3 redis
进入redis目录
cd redis
编译(确保OS已经安装过gcc)
make
安装
make install
查看redis版本
redis-cli -v
(2)在Windows上安装Redis
Redis官方不支持Windows操作系统,微软自行实现了一个Redis分支以支持在Windows操作系统上安装Redis。
https://github.com/MSOpenTech/redis1.5.2 配置、启动、操作、关闭Redis
Redis安装完成后,在src目录和/usr/local/bin/目录下会生成6个redis相关的可执行文件,如下:
redis-server:Redis服务
redis-cli:Redis命令行客户端
redis-benchmark:Redis基准测试工具
redis-check-rdb:Redis RDB持久化文件检测和修复工具
redis-check-aof:Redis AOF持久化文件检测和修复工具
redis-sentinel:Redis哨兵服务
(1)启动Redis
启动Redis的方法分为3种:默认配置、运行配置、配置文件启动。
(1.1)默认配置:无法自定义配置,不建议使用。
redis-server
(1.2)运行启动:配置较多时不方便。
redis-server --configKey1 configValue1 --configKey2 configValue2
redis-server --port 6380
(1.3)配置文件启动:将所有配置信息写到指定的配置文件中,如:redis安装路径下redis.conf文件。
mkdir /opt/redis
cp ./redis/redis.conf /opt/redis/
vi /opt/redis/redis.conf
redis-server /opt/redis/redis.conf
redis安装路径下的redis.conf文件是默认配置文件,将该文件拷贝到指定目录下并进行修改,从而在一台机器上启动多个Redis。
(2)Redis命令行客户端
交互方式语法:redis-cli -h {host} -p {port}
redis-cli -h 192.168.234.10 -p 6379
ssh root@192.168.234.10 --root
redis-cli -h 127.0.0.1 -p 6379
命令方式语法:redis-cli -h {host} -p {port} {command}
redis-cli -h 127.0.0.1 -p 6379 get hello
redis-cli get hello
注意:
-h 默认值是127.0.0.1
-p 默认值是6379
(3)停止Redis服务
redis-cli shutdown nosave|save
redis-cli shutdown 默认save,生成持久化文件
注意:
shutdown命令关闭Redis的过程是:断开客户端与Redis的连接,生成持久化文件,关闭Redis服务。
kill Redis服务进程号,与shutdown命令功能一致。
kill -9 Redis服务进程号,不会生成持久化文件,不会释放缓冲区资源,甚至会造成AOF和复制数据丢失。
1.6 Redis重大版本
Redis版本命名规则:版本号中第二位数字是奇数时为开发版本;版本号中第二位数字是偶数时为稳定版本。
大版本的最新小版本:
redis-2.6.17.tar.gz
redis-2.8.24.tar.gz
redis-3.0.7.tar.gz
redis-3.2.13.tar.gz
redis-4.0.14.tar.gz
redis-5.0.12.tar.gz
redis-6.0.8.tar.gz
redis-6.2.3.tar.gz
1.7 本章重点回顾