1.安装linux
下载安装后解压便可执行make命令完成编译,完整命令以下:redis
wget http://download.redis.io/redis-stable.tar.gz
tar xzf redis-stable.tar.gz
cd redis-stable
make数据库
编译完成后直接执行make install命令来将这些可执行程序复制到/usr/local/bin目录中以便之后执行程序能够不用输入完整的路径。安全
2.启动和中止服务器
最经常使用的两个程序是redis-server和redis-cli,其中redis-server是redis的服务器,启动redis即运行redis-server;而redis-cli是redis自带的redis命令行客户端。网络
启动有直接启动和经过初始化脚本启动两种方式,分别适用于开发环境和生产环境。测试
直接启动命令行
直接运行redis-server便可启动redis。翻译
redis服务器默认会使用6379端口,经过--port参数能够自定义端口号:日志
redis-server --port 6380
经过初始化脚本启动redis
在linux系统中能够经过初始化脚本启动redis,使得redis能跟随系统自动启动,在生产环境中推荐使用此方法运行redis。在redis源码目录的utils文件夹中有一个名为redis_init_script的初始化脚本文件。
咱们须要配置redis的运行方式和持久化文件、日志文件的存储位置等,具体步骤以下:
(1)配置初始化脚本。首先将初始化脚本复制到/etc/init.d目录中,文件名为redis_端口号,其中端口号表示要让redis监听的端口号,客户端经过该端口号连接redis。而后修改脚本REDISPORT变量的值为一样的端口号。
(2)创建须要的文件夹。
/etc/redis 存放redis的配置文件
/var/redis/端口号 存放redis的持久化文件
(3)修改配置文件。首先将文件模板(在redis根目录中redis.conf)复制到/etc/redis目录中,以端口号命名(如6379.conf),而后按照如下样例对部分参数进行编辑。
参数 值 说明
daemonize yes 使redis以守护进程模式运行
pidfile /var/run/redis_端口号.pid 设置redis的pid文件位置
port 端口号 设置redis监听的端口号
dir /var/redis/端口号 设置持久化文件存放位置
如今就可使用/etc/init.d/redis_端口号start来启动redis了,然后须要执行下面的命令使redis随系统自动启动:
update-rc.d redis_端口号 defaults
中止redis
考虑到redis有可能正在将内存中的数据同步到硬盘中,强行终止redis进程可能会致使数据丢失。正确中止redis的方式应该是向redis发送shutdown命令,方法为:
redis-cli shutdown
当redis收到shutdown命令,会先断开全部的客户端链接,而后根据配置执行持久化,最后完成退出。
redis能够妥善处理sigterm信号,因此使用"kill redis进程的PID"也能够正常结束redis,效果同上。
3.redis命令行客户端
发送命令
经过redis-cli向redis发送命令的方式有两种:
第一种后面直接加参数,好比redis-cli第一种后面直接加参数,好比redis-cli shutdown。执行时会自动按照默认的配置(服务器地址为127.0.0.1,端口号为6379)连接redis,经过-h和-p参数能够自定义地址和端口号:
redis-cli -h 127.0.0.1 -p 6379
redis提供了ping命令来测试客户端与redis的连接是否正常,若是链接正常会收到PONG。
第二种只输入redis-cli不添加任何参数会进入交互模式,能够执行任何命令。
命令返回值
命令返回有5种类型
(1)状态恢复
好比向redis发送set命令设置某个键的值,会返回OK表示设置成功,另外发送PING返回PONG也是状态回复。
(2)错误回复
当出现命令不存在或命令格式有错误等状况redis会返回错误回复,以(error)开头,后面跟错误信息。
(3)整数回复
redis没有整数类型,可是提供了一些用于整数操做的命令,整数回复以(integer)开头,并在后面跟上整数数据。
(4)字符串回复
当请求一个字符串类型键的键值或一个其余类型键中的某个元素时就会获得一个字符串回复,字符串回复以双引号包裹。
(5)多行字符串回复
当请求一个非字符串类型键的元素列表时就会收到多行字符串回复,多行字符串回复中的每行字符串都是以一个序号开头。
4.配置
因为redis配置选项比较多,经过启动参数设置这些选项不方便,因此redis支持经过配置文件来设置这些选项。启用配置文件的方法是启动时将配置文件的路径做为启动参数传递给redis-server,如:
redis-server /path/to/redis.conf
经过启动参数传递同名的配置选项会覆盖配置文件中相应的参数。
除此以外redis能够在运行时经过"config set"命令在不从新启动redis的状况下动态修改部分redis配置(不是全部的配置均可以这样修改),如:
redis>config set loglevel warning
OK
运行时也可使用"config get"命令得到redis当前的配置状况,如:
redis>config get loglevel
1)"loglevel"
2)"warning"
第一行字符串回复表示的是选项名,第二行是选项值。
5.多数据库
redis是一个字典结构的存储服务器,而实际上一个redis实例提供了多个用来存储数据的字典,客户端能够指定将数据存储的哪一个字典中。这与咱们熟知的在一个关系数据库实例中能够建立多个数据库相似,因此能够将其中的每一个字典都理解成一个独立的数据库。
每一个数据库对外都是以一个从0开始的递增数字命名,redis默认支持16个数据库,能够经过配置参数database来修改这一数字。客户端与redis创建链接后会自动选择0号数据库,不过能够随时使用select命令更换数据库,如要选择1号数据库:
redis>select 1
OK
然而这些以数字命名的数据库又与咱们理解的数据库有所区别。首先redis不支持自定义数据库名字,每一个数据库都是以编号命名,开发者必须本身记录哪些数据库存储了哪些数据。另外也不支持为每一个数据库设置不一样的访问密码,因此一个客户端要么能够访问所有数据库,要么连一个数据库也没有访问权限。最重要的是多个数据库之间并非彻底隔离的,好比flushall命令能够清空一个redis实例中全部数据库的数据。综上所述,这些数据库更像是一种命名空间,而不适宜存储不一样应用程序的数据。好比可使用0号数据库存储某个应用生产环境中的数据,使用1号数据库存储测试环境中的数据,但不适宜使用0号数据库存储A应用的数据,使用1号数据库存储B应用的数据,不一样的应用数据使用不一样的redis实例存储数据。因为redis很是轻量级,一个空的redis实例占用内存只有1MB左右,因此不用担忧多个redis实例会额外占用不少内存。
6.访问远程redis
这里先说配置文件中的两个配置中的参数:
bind:这个参数值表明这个地址能够接收到请求。
protect-mode:是否开启保护模式,参数值只有"yes"和"no"。
默认状况下redis是只能被本机访问的,若是要被远程访问须要更改一点配置,在.conf配置文件中有一个"bind"的配置,默认是"bind 127.0.0.1",表示只能被本机访问,若是将这个配置注释掉则会容许全部访问,可是注释掉之后仍是不能访问,由于redis默认是被保护起来的,因此找到配置文件中"protect-mode"的配置,默认是"yes",能够改成"no",这时候全部的远程服务器也均可以成功访问,可是这样是及其不安全的,生产环境不会这样作,因此protect-mode仍是要改成yes,在bind这个参数后面加上容许接收请求的网卡ip地址便可。下面对bind作更详细的解释:
假如如今有两个远程服务器ip分别是xxx.A和xxx.B,不少地方对于bind的解释或者翻译都是说只接收bind后面的ip的请求,因此容易配置成"bind xxx.A xxx.B",可是这样其实仍是没法访问的。
这里要说bind实际上是网络接口也就是网卡,一台服务器可能有多个网卡,假如一个用来接收局域网请求的ip为"xxx.C"和接收外网请求的ip为"xxx.D",若是上面的"xxx.A""xxx.B"都在同一个局域网内,即须要使用"xxx.C"这块网卡接收请求,那么bind参数只须要配置上"bind xxx.C"两台服务器均可以成功访问redis。
总结:bind绑定的ip不是请求来源的ip,而是你redis服务器自己接受请求的ip。