Redis可以做什么
-
缓存
合理的使用缓存不仅可以加快数据的访问速度,而且能够有效降低后端数据源
的压力。 -
排行榜系统
Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地
构建各种排行榜系统 -
计数器应用
Redis天然支持计数功能而且计数的性能也非常好
-
社交网络
赞/踩、粉丝、共同好友/喜好、推送、下拉刷新等是社交网站的必备功能,
Redis提供的数据结构可以相对比较容易地实现这些功能。 -
消息队列系统
消息队列系统可以说是一个大型网站的必备基础组件,因为其具有业务解耦、
非实时业务削峰等特性。Redis提供了发布订阅功能和阻塞队列的功能
Redis不可以做什么
在数据规模的角度看,数据可以分为大规模数据和小规模数据,Redis的数据是
存放在内存中,如果数据量到达亿级以上,经济成本相当的高。
用好Redis的建议
-
切勿当做黑盒试用,开发与运维同样重要
实际运维和使用Redis的过程中,很多线上问题和故障都是由于完全把Redis当
做黑盒造成的,如果不了解Redis的单线程模型,有些开发者会在有上千万个键
的Redis上配上执行keys *操作,如果不了解持久化的相关原理,会在一个写操
作量很大的Redis上配置自动保存RDB。而且在很多公司内只有专职的关系型数
据库DBA,并没有NoSQL的相关运维人员,也就是说开发者很有可能会自己运
维Redis,对于Redis的开发者来说既是好事又是坏事。站在好的方面看,开发
人员可以通过运维Redis真正了解Redis的一些原理,不单纯停留在开发上。站
在坏的方面看,Redis的开发人员不仅要支持开发,还要承担运维的责任,而且
由于运维经验不足可能会造成线上故障。但是从实际经验来看,运维足够规模
的Redis会对用好Redis更加有帮助 -
阅读源码
Redis是开源项目,作者对Redis代码的极致追求,Redis的代码量相对于许多
NoSQL数据库来说非常小,意味着作为普通的开发和运维人员也是可以吃透
Redis源码。通过阅读优秀的源码,不仅能够加深我们对于Redis的理解,而且
还能提高自身的编码水平,甚至可以对Redis做定制化,也就是说可以修改
Redis的源码来满足自身的需求。
正确安装并启动Redis
-
安装Redis
Redis能兼容绝大部分的POSIX系统,例如Linux、OS X、OpenBSD、NetBSD和
FreeBSD,其中比较典型的是Linux操作系统(例如CentOS、Redhat、
Ubuntu、Debian、OS X等)。在Linux安装软件通常有两种方法,第一种是通
过各个操作系统的软件管理软件进行安装,例如CentOS有yum管理工具,
Ubuntu有apt。但是由于Redis的更新速度相对较快,而这些管理工具不一定能
更新到最新版本,同时前面提到Redis的安装本身不是很复杂,所以一般推荐第
二种方式:源码的方式进行安装,整个安装只需一下六步即可完成,以3.0.7版
本为例:$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz $ tar xzf redis-3.0.7.tar.gz $ ln -s redis-3.0.7 redis $ cd redis $ make $ make install
- 1) 下载Redis指定版本的源码压缩包到当前目录。
- 2) 解压缩Redis源码压缩包。
- 3) 建立一个redis目录的软连接,指向redis-3.0.7。
- 4) 进入redis目录。
- 5) 编辑(编译之前确保操作系统已经安装gcc)。
- 6) 安装。
这里有两点要注意:第一,第3步中建立一个redis目录的软连接,这样做是为
了不把redis目录固定在指定版本上,有利于Redis未来版本升级,算是安装软
件的一种好习惯。第二,第6步中的安装是将Redis的相关运行文件放到
/usr/local/bin/下,这样就可以在任意目录下执行Redis的命令。 在Windows中安装Redis
Redis的官方并不支持微软的Windows操作系统,但是微软公司的开源技术组在
GitHub上维护了一个Redis的分支:
https://gihub.com/MSOpenTech/redis-
Redis可执行文件说明
可执行文件 作用 redis-server 启动Redis redis-cli Redis命令行客户端 redis-benchmark Redis基准测试工具 redis-check-aof Redis AOF持久化文件检测和修复工具 redis-check-dump Redis RDB持久化文件检测和修复工具 redis-sentinel 启动Redis Sentinel -
配置、启动、操作、关闭Redis
-
默认配置
$ redis-server
redis-server启动Redis后,会打印出一些日志,通过日志可以看到一些
信息:- 当前Redis版本: 3.0.7
- Redis的默认端口: 6379
- Redis建议要使用配置文件来启动。
-
运行启动
redis-server加上要修改配置名和值(可以使多对),没有设置的配置将使用默认配置:# redis-server --configKey1 configValue1 --configKey2 configValue2
例如,如果要用6380作为端口启动Redis,那么可以执行:
# redis-server --port 6380
虽然运行配置可以自定义配置,但是如果需要修改的配置较多或者希望将
配置保存到文件中,不建议使用这种方式。 -
配置文件启动
将配置写到指定文件里,例如我们将配置写到了/opt/redis/redis.conf
中,那么只需要执行如下命令即可启动Redis:# redis-server /opt/redis/redis.conf
-
-
Redis的基础配置
配置名 配置说明 port 端口 logfile 日志文件 dir Redis工作目录(存放持久化文件和日志文件) daemonize 是否已守护线程的方式启动Redis -
Redis命令行客户端
redis-cli可以使用两种方式连接Redis服务器
- 交互式方式:通过redis-cli -h {host} -p {port}的方式连接到Redis服
务,之后所有的操作都是通过交互的方式实现,不需要在执行redis-cli了,例
如:
redis-cli -h 127.0.0.1- p 6379 127.0.0.1:6379> set hello world OK 127.0.0.1:6379> get hello "world"
- 命令方式:用redis-cli -h {host} -p {port} {command} 就可以直接得
到命令的返回结果你,例如:
redis-cli -h 127.0.0.1 -p 6379 get hello "world"
这里有两点要注意:1)如果没有-h参数,那么默认连接127.0.0.1;如果没有
-p,那么默认6379端口,也即是说如果-h -p都没写就是连接127.0.0.1:6379
这个Redis实例。2)redis-cli是学习Redis的重要工具 - 交互式方式:通过redis-cli -h {host} -p {port}的方式连接到Redis服
-
停止Redis服务
Redis提供了shutdown命令来停止Redis服务,例如要停掉127.0.0.1上6379端
口上的Redis服务,可以执行如下操作。$ redis-cli shutdown
可以见到Redis的日志输出如下:
# User requested shutdown... #客户端发出的shutdown命令 * Saving the final RDB snapshot before exiting. # 保存RDB持久化文件(RDB是Redis的一种持久化方式) * DB saved on disk #将RDB文件保存在磁盘上 # Redis is now ready to exit, bye bye... #关闭
当使用redis-cli再次连接该Redis服务时,看到Redis已经 “失联”。
$ redis-cli Could not connect to Redis at 127.0.0.1:6379: Connection refused
这里有三点需要注意一下:
- Redis关闭的过程:断开与客户端的连接、持久化文件生成,是一种相对优雅
的关闭方式。 - 除了可以通过shutdown命令关闭Redis服务以外,还可以通过kill进程号的
方式关闭掉Redis,但是不要粗暴的使用kill -9强制杀死Redis进程,不但不
会做持久化操作,还会造成缓冲区等资源不能被优雅关闭,极端情况会造成AOF
和复制丢失数据的情况。 - shutdown还有一个参数,代表是否在关闭Redis前,生成持久化文件:
redis-cli shutdown nosave|save
- Redis关闭的过程:断开与客户端的连接、持久化文件生成,是一种相对优雅