`

Redis快速入门:安装、配置和操作

 
阅读更多
[size=x-large][size=medium]Redis快速入门:安装、配置和操作

        【IT168 专稿】本文是有关Redis的系列技术文章之一。在之前的文章中介绍了《Redis快速入门:初识Redis》,对Redis有了一个初步的了解。今天继续为大家介绍Redis如何安装、配置和操作。
  系列文章:
  Redis快速入门:Key-Value存储系统简介
  Redis快速入门:选择Key-Value Store
        Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。
  如何安装Redis?
  Redis的官方下载站是http://redis.io/download,可以去上面下载最新的安装程序下来,我写此文章时的的稳定版本是2.2.12。

  怎么安装 Redis数据库呢?下面将介绍Linux版本的安装方法:
  步骤一: 下载Redis
  下载安装包:wget http://redis.googlecode.com/files/redis-2.2.12.tar.gz
  [root@localhost 4setup]# wget http://redis.googlecode.com/files/redis-2.2.12.tar.gz

  --19:06:56-- http://redis.googlecode.com/files/redis-2.2.12.tar.gz

  正在解析主机 redis.googlecode.com... 74.125.71.82

  Connecting to redis.googlecode.com|74.125.71.82|:80... 已连接。

  已发出 HTTP 请求,正在等待回应... 200 OK

  长度:455240 (445K) [application/x-gzip]

  Saving to: `redis-2.2.12.tar.gz'

  100%[==========================================>] 455,240 34.8K/s in 13s

  19:07:16 (34.8 KB/s) - `redis-2.2.12.tar.gz' saved [455240/455240]

  [root@localhost 4setup]#
  步骤二: 编译源程序
  [root@localhost 4setup]# ll

  总计 29168

  -rw-r--r-- 1 root root 455240 2011-07-22 redis-2.2.12.tar.gz

  [root@localhost 4setup]# tar xzf redis-2.2.12.tar.gz

  [root@localhost 4setup]# cd redis-2.2.12

  [root@localhost redis-2.2.12]# make

  cd src && make all

  make[1]: Entering directory `/root/4setup/redis-2.2.12/src'
  步骤三: 启动Redis服务
  src/redis-server

  [root@localhost redis-2.2.12]# src/redis-server

  [6246] 05 Aug 19:17:22 # Warning: no config file specified, using the default config. In order to specify a config file use 'redis-server /path/to/redis.conf'

  [6246] 05 Aug 19:17:22 * Server started, Redis version 2.2.12

  [6246] 05 Aug 19:17:22 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

  [6246] 05 Aug 19:17:22 * The server is now ready to accept connections on port 6379

  [6246] 05 Aug 19:17:22 - 0 clients connected (0 slaves), 539544 bytes in use
  Redis 服务端的默认连接端口是 6379。
  步骤四: 将Redis作为 Linux 服务随机启动
  vi /etc/rc.local, 使用vi编辑器打开随机启动配置文件,并在其中加入下面一行代码。
  /root/4setup/redis-2.2.12/src/redis-server

  步骤五: 客户端连接验证
  新打开一个Session输入:src/redis-cli,如果出现下面提示,那么您就可以开始Redis之旅了。
  [root@localhost redis-2.2.12]# src/redis-cli

  redis 127.0.0.1:6379>
  步骤六: 查看Redis日志
  查看服务器端session,即可对Redis的运行状况进行查看或分析了。
  [6246] 05 Aug 19:24:33 - 0 clients connected (0 slaves), 539544 bytes in use

  [6246] 05 Aug 19:24:37 - Accepted 127.0.0.1:51381

  [6246] 05 Aug 19:24:38 - 1 clients connected (0 slaves), 547372 bytes in use
  以上的几个步骤就OK了!!这样一个简单的Redis数据库就可以畅通无阻地运行起来了。
  步骤七: 停止Redis实例
  最简单的方法是在启动实例的session中,直接使用Control-C来将实例停止。
  我们还可以用客户端来停止服务,如可以用shutdown来停止Redis实例, 具体如下:
  [root@localhost redis-2.2.12]# src/redis-cli shutdown

  如何配置Redis?
  如果是一个专业的DBA,那么实例启动时会加很多的参数以便使系统运行的非常稳定,这样就可能会在启动时在Redis后面加一个参数,以指定配置文件的路径,就象mysql一样的读取启动配置文件的方式来启动数据库。源码编译完成后,在redis-2.2.12目录下有一个redis.conf文件,这个文件即是Redis的配置文件,用配置文件来启动Redis的方法如下:
  [root@localhost redis-2.2.12]# src/redis-server redis.conf

  [6353] 05 Aug 19:36:45 * Server started, Redis version 2.2.12

  [6353] 05 Aug 19:36:45 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

  [6353] 05 Aug 19:36:45 * The server is now ready to accept connections on port 6379

  [6353] 05 Aug 19:36:45 - 0 clients connected (0 slaves), 539540 bytes in use
  Redis支持很多的参数,但都有默认值。
  ●daemonize:
  默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes。
  ●pidfile
  当Redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,你可以配置到其他地址。当运行多个redis服务时,需要指定不同的pid文件和端口。
  ●bind
  指定Redis只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求,在生产环境中最好设置该项。
  ●port
  监听端口,默认为6379。
  ●timeout
  设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接。
  ●loglevel
  log等级分为4级,debug, verbose, notice, 和warning。生产环境下一般开启notice。
  ●logfile
  配置log文件地址,默认使用标准输出,即打印在命令行终端的窗口上。
  ●databases
  设置数据库的个数,可以使用SELECT 命令来切换数据库。默认使用的数据库是0。
  ●save
  设置Redis进行数据库镜像的频率。
  if(在60秒之内有10000个keys发生变化时){
  进行镜像备份
  }else if(在300秒之内有10个keys发生了变化){
  进行镜像备份
  }else if(在900秒之内有1个keys发生了变化){
  进行镜像备份
  }

  ●rdbcompression
  在进行镜像备份时,是否进行压缩。
  ●dbfilename
  镜像备份文件的文件名。
  ●dir
  数据库镜像备份的文件放置的路径。这里的路径跟文件名要分开配置是因为Redis在进行备份时,先会将当前数据库的状态写入到一个临时文件中,等备份完成时,再把该该临时文件替换为上面所指定的文件,而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中。
  ●slaveof
  设置该数据库为其他数据库的从数据库。
  ●masterauth
  当主数据库连接需要密码验证时,在这里指定。
  ●requirepass
  设置客户端连接后进行任何其他指定前需要使用的密码。警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。
  ●maxclients
  限制同时连接的客户数量。当连接数超过这个值时,redis将不再接收其他连接请求,客户端尝试连接时将收到error信息。
  ●maxmemory
  设置redis能够使用的最大内存。当内存满了的时候,如果还接收到set命令,redis将先尝试剔除设置过expire信息的key,而不管该key的过期时间还没有到达。在删除时,将按照过期时间进行删除,最早将要被过期的key将最先被删除。如果带有expire信息的key都删光了,那么将返回错误。这样,redis将不再接收写请求,只接收get请求。maxmemory的设置比较适合于把redis当作于类似memcached的缓存来使用。
  ●appendonly
  默认情况下,redis会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁,如果发生诸如拉闸限电、拔插头等状况,那么将造成比较大范围的数据丢失。所以redis提供了另外一种更加高效的数据库备份及灾难恢复方式。开启append only模式之后,redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态。但是这样会造成appendonly.aof文件过大,所以redis还支持了BGREWRITEAOF指令,对appendonly.aof进行重新整理。所以我认为推荐生产环境下的做法为关闭镜像,开启appendonly.aof,同时可以选择在访问较少的时间每天对appendonly.aof进行重写一次。
  ●appendfsync
  设置对appendonly.aof文件进行同步的频率。always表示每次有写操作都进行同步,everysec表示对写操作进行累积,每秒同步一次。这个需要根据实际业务场景进行配置。
  ●vm-enabled
  是否开启虚拟内存支持。因为redis是一个内存数据库,而且当内存满的时候,无法接收新的写请求,所以在redis 2.0中,提供了虚拟内存的支持。但是需要注意的是,redis中,所有的key都会放在内存中,在内存不够时,只会把value值放入交换区。这样保证了虽然使用虚拟内存,但性能基本不受影响,同时,你需要注意的是你要把vm-max-memory设置到足够来放下你的所有的key。
  ●vm-swap-file
  设置虚拟内存的交换文件路径。
  ●vm-max-memory
  这里设置开启虚拟内存之后,redis将使用的最大物理内存的大小。默认为0,redis将把他所有的能放到交换文件的都放到交换文件中,以尽量少的使用物理内存。在生产环境下,需要根据实际情况设置该值,最好不要使用默认的0。
  ●vm-page-size
  设置虚拟内存的页大小,如果你的value值比较大,比如说你要在value中放置博客、新闻之类的所有文章内容,就设大一点,如果要放置的都是很小的内容,那就设小一点。
  ●vm-pages
  设置交换文件的总的page数量,需要注意的是,page table信息会放在物理内存中,每8个page就会占据RAM中的1个byte。总的虚拟内存大小 = vm-page-size * vm-pages。
  ●vm-max-threads
  设置VM IO同时使用的线程数量。因为在进行内存交换时,对数据有编码和解码的过程,所以尽管IO设备在硬件上本上不能支持很多的并发读写,但是还是如果你所保存的vlaue值比较大,将该值设大一些,还是能够提升性能的。
  ●glueoutputbuf
  把小的输出缓存放在一起,以便能够在一个TCP packet中为客户端发送多个响应,具体原理和真实效果我不是很清楚。所以根据注释,你不是很确定的时候就设置成yes。
  ●hash-max-zipmap-entries
  在redis 2.0中引入了hash数据结构。当hash中包含超过指定元素个数并且最大的元素没有超过临界时,hash将以一种特殊的编码方式(大大减少内存使用)来存储,这里可以设置这两个临界值。
  ●activerehashing
  开启之后,redis将在每100毫秒时使用1毫秒的CPU时间来对redis的hash表进行重新hash,可以降低内存的使用。当你的使用场景中,有非常严格的实时性需要,不能够接受Redis时不时的对请求有2毫秒的延迟的话,把这项配置为no。如果没有这么严格的实时性要求,可以设置为yes,以便能够尽可能快的释放内存。

  操作Redis数据库
  下面我们来简单的操作一下数据库。
  1、插入数据
  redis 127.0.0.1:6379> set name wwl

  OK
  设置一个key-value对。
  2、查询数据
  redis 127.0.0.1:6379> get name

  "wwl"
  取出key所对应的value。
  3、删除键值
  redis 127.0.0.1:6379> del name
  删除这个key及对应的value。
  4、验证键是否存在
  redis 127.0.0.1:6379> exists name

  (integer) 0
  其中0,代表此key不存在;1代表存在。
[/size][/size]
分享到:
评论

相关推荐

    尚硅谷Redis入门视频

    在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握Redis的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等知识。...

    2019年 Redis从入门到高可用 分布式实战教程

    Redis从入门到高可用 分布式实战教程,共140多节课程、 掌握redis主从、哨兵、集群 ,参数调优 目录: 9-9 原生安装-1.准备节点.mp4 9-8 原生安装.mp4 9-7 基本架构.mp4 9-6 虚拟槽哈希分布.mp4 9-5 一致性...

    分布式缓存REDIS学习笔记

    01 Redis快速入门 - Redis教程 02-Redis环境安装 - Redis教程 03-Redis 的安装配置介绍 04-Redis数据类型 - Redis教程 05-Redis命令 - Redis教程 06-Redis键 - Redis教程。。。 13-Redis发布订阅 - Redis教程 。。。...

    Redis入门到精通视频教程

    在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握Redis的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发、Redis的高...

    《Redis实战》

    第一章 Redis快速入门 ................................................................................................................... 6 1.1 Key-Value存储系统简介 ......................................

    Springboot vue-element 快速开发,全开源,java 流程开发、前端后分离,小程序,适合入门及企业内部

    Springboot vue-element 快速开发,全开源,java 流程开发、前端后分离,小程序,适合入门及企业内部 前端采用 vue-element-admin 。 后端采用 Spring Boot、MySQL + MyBatis Plus、Redis + Redisson。 权限认证使用 ...

    springboot知识点整理

    4.10.1 如何定制和修改Servelt容器的相关配置 97 4.10.2 注册servlet三大组件【servlet,filter,listener】 98 4.10.3 替换为其他嵌入式容器 102 4.10.4 嵌入式servlet容器自动配置原理 103 4.10.5 嵌入式servlet...

    J2eeFAST企业级快速开发平台 v2.0.8

    是一个Java EE企业级快速开发平台,基于经典技术组合(Spring Boot、Spring MVC、Apache Shiro、MyBatis-Plus、Freemarker、Bootstrap、AdminLTE)采用经典开发模式,让初学者能够更快的入门并投入到团队开发中去。...

    nosql 入门教程

    第一部分 NoSQL入门 第1章 NoSQL的概念及适用范围 2 1.1 定义和介绍 3 1.1.1 背景与历史 3 1.1.2 大数据 5 1.1.3 可扩展性 7 1.1.4 MapReduce 8 1.2 面向列的有序存储 9 ...附录A 安装与配置 278

    应用级产品开发平台APDPlat.zip

    APDPlat提供了应用容器、多模块架构、代码生成、安装程序、认证授权、备份恢复、数据字典、web service、系统监控、操作审计、统计图、报表、机器绑定、防止破解、数据安全、内置搜索、数据转换、maven支持、WEB...

    packer:Packer是一个工具,可从一个源配置为多个平台创建相同的机器映像

    否则,下面的快速入门将使您快速起步并开始运行,而这会浪费您不解释某些关键点的代价。 首先,为您的操作系统,或者 。 Packer安装完成后,创建您的第一个模板,该模板将告诉Packer要为其构建映像的平台以及如何...

    J2eeFAST企业级快速开发平台-其他

    J2eeFAST是一个Java EE企业级快速开发平台,基于经典技术组合(Spring Boot、Spring MVC、Apache Shiro、MyBatis-Plus、Freemarker、Bootstrap、AdminLTE)采用经典开发模式,让初学者能够更快的入门并投入到团队...

    lapidus:在任何地方快速传输PostgreSQL,MySQL或MongoDB数据库

    安装npm install -g lapidusPostgreSQL您将需要配置了逻辑复制的PostgreSQL 9.4或更高版本,并安装和加载了插件。 pg_recvlogical附带的任何PostgreSQL分支pg_recvlogical应该兼容。 要使用pgxn安装逻辑解码插件: ...

    Docker企业应用实战

    快速入门掌握Docker容器技术,课程内容包括:1.Docker简介、基本术语? 2.Linux环境配置及Docker安装 3.镜像操作、容器操作、自定义镜像 4.镜像的分层结构和原理 5.Dockerfile详解、常用指令 6.使用Docker安装Tomcat...

    python数据分析随书代码

    8.3.1 SQLAlchemy的安装和配置 186 8.3.2 通过SQLAlchemy填充数据库 188 8.3.3 通过SQLAlchemy查询数据库 189 8.4 Pony ORM 191 8.5 Dataset:懒人数据库 192 8.6 PyMongo与MongoDB 195 8.7 利用Redis存储数据...

    Yii2中文手册(中文教程完整版)

    Yii 2.0 权威指南 本教程的发布遵循 Yii 文档使用许可. ...已定稿 快速入门 已定稿 资源 已定稿 路由 已定稿 格式化响应 已定稿 授权验证 已定稿 速率限制 已定稿 版本化 已定稿 错误处理 已定稿 测试

    MyQEE开源PHP多项目及模块化开发框架 v3.0 RC2.zip

    关于MyQEE MyQEE是一个开源、快速、优雅的轻量级PHP框架,支持HMVC模式,建立在PHP5.2基础之上,支持多项目管理开发,...Swift Storage 驱动完善,token验证支持v1和v2版本,优化参数传送方式,支持url方式的配置

    算法加密后端:接收Tradingview信号并执行机器人程序(Python-Flask&Celery)

    Flask Boilerplate可以快速开始生产级烧瓶的应用,并预先构建一些额外的包装和配置。 您可以在找到有关此实现的深入文章。 贡献 我们鼓励您为Flask Boilerplate做出贡献! 请查看有关如何进行操作的准则。 入门 ...

    JAVA上百实例源码以及开源项目

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

Global site tag (gtag.js) - Google Analytics