安装Redis是开始Redis学习之旅的第一步;Redis约定次版本号(即第一个小数点后的数字)为
偶数的版本是稳定版(如2.8版、3.0版)
,奇数版本是非稳定版(如2.7版、2.9版),生产环境下一般需要使用稳定版本。
一、安装
1.在OS X下安装
OS X下有2中安装方式,homebrew和直接自己编译
1.homebrew安装redis
>brew search redis //搜索可以用的redis
>brew install redis // 默认安装最新的redis,也可以指定redis版本
>vim ~/.bash_profile // 配置redis环境
给加入.bash_profile最后加入下面一行,
# redis环境变量
export PATH=$PATH:/usr/local/opt/redis/bin
保存.bash_profile,
>source ~/.bash_profile // 使配置生效
2、自己直接编译安装(和linux下安装redis类似)
下载
http://www.redis.cn/download.html //redis中文社区,下载会快点
https://redis.io/download//redis 管网,下载慢,但是最新版本在官网上
下载后解压文件,将文件夹复制到/usr/local/
$ cd redis-xxx // 进入redis目录
$ make // 编译redis(redis使用c语言开发的,所以make工具进行编译)
$ sudo make install // 安装redis
2. 在win下安装
Redis官方不支持Windows。2011年微软[1] 向Redis提交了一个补丁,以使Redis可以在 Windows下编译运行,但被Salvatore Sanfilippo拒绝了,原因是在服务器领域上Linux已经得 到了广泛的使用,让Redis能在Windows下运行相比而言显得不那么重要。并且Redis使用了如 写时复制等很多操作系统相关的特性,兼容 Windows 会耗费太大的精力而影响Redis其他功 能的开发。尽管如此微软还是发布了一个可以在Windows运行的Redis分支[2] ,而且更新相 当频繁,截止到本书交稿时,
下载地址
https://github.com/tporadowski/redis/releases
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,下载 Redis-x64-xxx.zip压缩包,解压后相当于安装完成。
解压后文件如下:
二、启动和停止
redis可执行文件说明(如果是自己编译安装的,这些程序会被复制到/usr/local/bin 目录内)
文件名 | 说明 |
---|---|
redis-server | redis服务器 |
redis-cli | redis命令行客户端 |
redis-benchmark | redis性能测试工具 |
redis-check-aof | AOF文件修复工具 |
redis-check-dump | RDB文件检查工具 |
redis-sentinel | Sentinel哨兵服务器 |
1,启动
- 直接启动
> redis-server //即可,默认端口6379
//6379在是手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字。MERZ长期以来被Redis作者antirez及其朋友当作愚蠢的代名词。后来Redis作者在开发Redis时就选用了这个端口。
//也可以指定参数
>redis-server --port 6380
- 通过初始化脚本启动Redis
在Linux系统中可以通过初始化脚本启动Redis,使得Redis能随系统自动运行,在生产环 境中推荐使用此方法运行Redis
2.停止redis
考虑到 Redis 有可能正在将内存中的数据同步到硬盘中,强行终止 Redis 进程可能会导 致数据丢失。
正确停止Redis的方式应该是向Redis发送SHUTDOWN命令,方法为:
$ redis-cli SHUTDOWN
当Redis收到SHUTDOWN命令后,会先断开所有客户端连接,然后根据配置执行持久化,最后完成退出。
Redis可以妥善处理 SIGTERM信号,所以使用 kill Redis 进程的 PID也可以正常结束 Redis,效果与发送SHUTDOWN命令一样。
三、命令行客户端
1.发送命令
- 将命令作为redis-cli的参数执行参数
例如 $ redis-cli -h 127.0.0.1 -p 6379
Redis提供了PING命令来测试客户端与Redis的连接是否正常,如果连接正常会收到回复 PONG。
如: $ redis-cli PING PONG - 是不附带参数运行 redis-cli
$ redis-cli
redis 127.0.0.1:6379> PING
PONG
redis 127.0.0.1:6379> ECHO hi
“hi”
2.命令返回值
- 状态回复:状态回复(status reply)是最简单的一种回复,比如向 Redis 发送 SET 命令设置某个键 的值时,Redis会回复状态OK表示设置成功。
- 错误回复:当出现命令不存在或命令格式有错误等情况时 Redis 会返回错误回复(error reply)。错 误回复以(error)开头,并在后面跟上错误信息。
- 整数回复:
Redis 虽然没有整数类型
,但是却提供了一些用于整数操作的命令,如递增键值的INCR 命令会以整数形式返回递增后的键值。 - 字符串回复:字符串回复(bulkreply)是最常见的一种回复类型,当
请求一个字符串类型键的键值或 一个其他类型键中的某个元素时就会得到一个字符串回复
。字符串回复以双引号包裹 - 多行字符串回复:多行字符串回复(multi-bulkreply)同样很常见,如
当请求一个非字符串类型键的元素列表时就会收到多行字符串回复
。多行字符串回复中的每行字符串都以一个序号开头,
四、配置
上面通过 redis-server 的启动参数 port 设置了 Redis 的端口号,除此之外Redis 还支持其他配置选项,如是否开启持久化、日志级别等。
由于可以配置的选项较多,通过启动参数设置这些选项并不方便,所以 Redis 支持通过配置文件来设置这些选项。启用配置文件的方法是在启动时将配置文件的路径作为启动参数传递给redis-server
,如:
$ redis-server /path/to/redis.conf
//通过启动参数传递同名的配置选项会覆盖配置文件中相应的参数,就像这样:
$ redis-server /path/to/redis.conf --loglevel warning
Redis提供了一个配置文件的模板redis.conf,位于源代码目录的根目录中。
除此之外还可以在Redis 运行时通过 CONFIG SET 命令在不重新启动Redis 的情况下动态修改部分Redis配置。就像这样:
redis> CONFIG SET loglevel warning
OK
并不是所有的配置都可以使用 CONFIG SET命令修改
,
同样在运行的时候也可以使用 CONFIG GET 命令获得Redis 当前的配置情况, 如:
redis> CONFIG GET loglevel
- “loglevel”
- “warning”
其中第一行字符串回复表示的是选项名,第二行即是选项值。
五、多数据库
Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用
来存储数据的字典,客户端可以指定将数据存储在哪个字典中。这与我们熟知的在一个关系
数据库实例中可以创建多个数据库类似,所以可以将其中的每个字典都理解成一个独立的数据库。
每个数据库对外都是以一个从0开始的递增数字命名,Redis默认支持16个数据库
,可以通过配置参数databases来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库, 不过可以随时使用SELECT命令更换数据库,如要选择1号数据库:
redis> SELECT 1
OK
redis [1]> GET foo
(nil)
然而这些以数字命名的数据库又与我们理解的数据库有所区别。
首先 Redis 不支持自定义数据库的名字
,每个数据库都以编号命名,开发者必须自己记录哪些数据库存储了哪些数 据。- 另外
Redis 也不支持为每个数据库设置不同的访问密码
,所以一个客户端要么可以访问 全部数据库,要么连一个数据库也没有权限访问。 - 最重要的一点是
多个数据库之间并不是完全隔离的
,比如FLUSHALL命令可以清空一个Redis实例中所有数据库中的数据。
综上所述, 这些数据库更像是一种命名空间,而不适宜存储不同应用程序的数据。比如可以使用0号数 据库存储某个应用生产环境中的数据,使用1号数据库存储测试环境中的数据,但不适宜使 用0号数据库存储A应用的数据而使用1号数据库存储B应用的数据,不同的应用应该使用不同 的Redis实例存储数据。由于Redis非常轻量级,一个空Redis实例占用的内存只有1MB左右
, 所以不用担心多个Redis实例会额外占用很多内存。