1.安装

  下载安装后解压即可执行make命令完成编译,完整命令如下:

  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。

一、redis简单配置的更多相关文章

  1. redis简单配置

    由于前段时间使用Kestrel,同时要操作Memcached及时更新缓存,又要操作database,持久化数据. 貌似Redis既可以当Cache又可以当Queue!于是,今天开始研究Redis! 一 ...

  2. Redis简单配置和使用

    学到Redis中需要整理和配置的东西比较多,资源也是比较分散!这次的主要还是将知识整合一下,开发过程中所需要的资源整合一下,也方便今后涉及到这块地方的知识时,将时间大量浪费在了找这些资源上了! 一.R ...

  3. redis主从简单配置

    网上有好多复杂的配置,这里我用的是windows版的redis,简单配置了下,试验了下主从,能正常使用. 1.redis-master文件夹(里面是redis),redis-slave文件夹(里面是r ...

  4. dubbo 图片服务器(FastDFS) redis solr ActiveMQ等简单配置使用

    一.dubbo 项目基于soa的架构,表现层和服务层是不同的工程.所以要实现商品列表查询需要两个系统之间进行通信. 1.1如何实现远程通信? 1.Webservice:效率不高基于soap协议.项目中 ...

  5. 在linux安装redis单机和集群后,如何在windows上使用redis客户端或者java代码访问错误的原因很简单,就是没有连接上redis服务,由于redis采用的安全策略,默认会只准许本地访问。需要通过简单配置,完成允许外网访问。

    这几天在学习在linux上搭建服务器的工作,可谓历经艰辛.可喜最后收获也不少. 这次是在linux上搭建redis服务器后从windows上缺无法访问,连接不上. 仔细回忆以前搭建nginx和ftp的 ...

  6. Ubuntu14.04安装redis和简单配置

    1.前言 Redis是常用基于内存的Key-Value数据库,比Memcache更先进,支持多种数据结构,高效,快速.用Redis可以很轻松解决高并发的数据访问问题:做为时时监控信号处理也非常不错. ...

  7. Redis安装配置与Jedis访问数据库

    一.NOSQL概要 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库.NoSQL数据库的四大分类 键值(Key-Value)存储数据库 这一类数据 ...

  8. Redis主从配置详细过程

    Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构.下面楼主简单的进行一下配置. 1.上面安装 ...

  9. redis主从复制配置(1)

    我们来配置一个一主两从的服务,根据前面写的已经配置好的redis基础上进行主从配置 一:进入redis的配置目录 cd /usr/local/redis 创建下面3个目录,命令为:make -p /u ...

随机推荐

  1. python3字典:获取json响应值来进行断言

    前言:在接口自动化测试中,最后都是需要将返回结果进行断言.本文按照实际情况举例说明字典各种操作,以及如何提取响应数据来进行断言 1.dict = {'code': '200', 'message': ...

  2. SSM-SpringMVC-27:SpringMVC类型转换之日期类型初步

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本案例是上面的异常和日期类型转换结合的一个小小的Demo 案例开始 1.自定义处理器和处理方法: packag ...

  3. 自动化运维工具sshd,expect,pssh,rsync详解

    ssh secure shell,安全的远程登录:openssh和dropbear都是它的开源实现,ssh协议有v1和v2俩个版本,现在使用的都是v2版,v1已经不安全了:ssh基于DH算法做密钥交换 ...

  4. Scrapy 1.4 文档 01 初窥 Scrapy

    初窥 Scrapy Scrapy 是用于抓取网站并提取结构化数据的应用程序框架,其应用非常广泛,如数据挖掘,信息处理或历史存档. 尽管 Scrapy 最初设计用于网络数据采集(web scraping ...

  5. mac里用PyCharm中引用MySqlDB始末

    本来想用java来连数据库,然后调用python的,后来想了想,反正是个实验性质的小工程何必搞的这么复杂.直接全部python就好了,于是就为这个想法填了一晚上的坑. 装好了PyCharm的CE版,然 ...

  6. 你不知道的JavaScript--Item21 漂移的this

    而在 JavaScript 中,this 是动态绑定,或称为运行期绑定的,这就导致 JavaScript 中的 this 关键字有能力具备多重含义,带来灵活性的同时,也为初学者带来不少困惑.本文仅就这 ...

  7. input 去掉点击后出现的边框

    添加属性 :focus{outline:none} 就可以去掉默认点击时,边框会出现的蓝色边框. :focus 选择器用于选取获得焦点的元素.提示:接收键盘事件或其他用户输入的元素都允许 :focus ...

  8. kv.go

    package clientv3 import (     pb "github.com/coreos/etcd/etcdserver/etcdserverpb" //protob ...

  9. 【BZOJ2339】【HNOI2011】卡农

    题解: 首先用二进制表示每个音阶是否使用,那么共有$2^{n}-1$(空集不可行)种片段,用$a_{i}$来表示每个片段,问题就是求满足$a_{1}\left (xor\right)a_{2}\lef ...

  10. bzoj3534 [Sdoi2014]重建

    变形的$Martix-Tree$定理 发现我们要求的是$\prod_{i \in E}{p_{i}} * \prod_{i \notin E}{(1-p_{i})}$ 然后呢? 矩阵树对重边也有效对吧 ...