1. 介绍

Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker.

这是官方的定义。说它是一个数据库,且是把数据存到内存中,能用作cache(缓存)和消息队列。说到数据库,可能大家用得最多的是关系型数据库,比如MySQL,PostgreSQL等。这种数据库是把数据存到磁盘中的,这种能存大量的数据,然而我们的应用是经常需要访问数据库来查找数据,每次访问,无论怎样,都是需要消耗CPU和IO等待。当应用的数据积累到很庞大时,这种性能的问题更严重,所以有一种解决方法是这样的,把经常被访问的数据放到内存中,因为内存的访问速度比磁盘快太多了,而这部分数据可能不会是全部的数据,因为内存的价格比磁盘贵多了。所以有了memcached,这种就是把数据放到内存中,但它支持一种最简单的数据结构,就是键值对,这种数据库又不同于传统结构型的关系型数据库,所以又被称为nosql。

而redis也是nosql的一种,但它相比memcached不仅支持键值对,还支持列表,集合,排序集合等结构,而且它还是可持久化的。持久化就是说在内存中的数据会以文件的形式同步到磁盘中,当下次重启时还能恢复,这点相比memcached,就能存相对重要的数据,毕竟,如果数据不能持久化,丢失了也是件麻烦的事,谁也保证不了不会出问题。

还有一个很重要的特征就是redis支持分布式集群,用它可以轻易地部署到多台机器中,成为一个集群。特别是3.0开始,redis对集群的支持比较健全了。

redis比较常见的作用,第一个是cache,这是由于它的数据存在内存中,访问速度比较快,它能让数据在一定时间后过期,且又有丰富的数据结构的支持,所以它能作为一个高性能的cache。第二个是作为消息队列,用的是它的brpop的功能,它是一个阻塞型的队列系统,"b"就是"block"的意思嘛,"r""right"的意思。

2. 安装

比较常见的有两种安装方式,第一是命令安装,第二是源码编译安装。命令安装可能并不会安装到最新的版本,因为软件源的redis版本也未必是最新的,但是胜在方面快速。

如果是ubuntu系统,可以这样。

2.1 命令安装

如果是ubuntu系统,可以这样。

$ sudo apt-get install redis-server

mac系统用以下命令。

$ brew install redis
2.2 编译安装

首先下载官方稳定版的tar包。

$ wget http://download.redis.io/releases/redis-3.0.5.tar.gz

解压缩编译安装。

$ tar xvf redis-3.0.5.tar.gz
$ cd redis-3.0.5
$ make
$ sudo make install

这样就安装好了,接下来启动服务器。

$ src/redis-server

测试。

src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

这样很不方便。每次都要进到那个目录才能执行redis-server或redis-cli。

其实redis的源码提供了一个工具,让你能够使用类似/etc/init.d/server start这样的命令来启动redis服务。

只要运行utils目录下的install_server.sh脚本文件就好了。

$ cd utils
$ sudo ./install_server.sh

3. 配置文件

正如大多数的linux服务一样,都是通过配置文件来改变应用的特性的。redis的配置文件一般是/etc/redis/redis.conf

打开该文件,里面有很多详细的注释,解决了每个参数的意义和用法。

有一些配置项可常见于大多数linux服务,比如指定pid文件的位置,指定port(端口),日志等。

除了这些,还有一些是redis特有的,我们只是对配置文件有个大局的掌握,先介绍两个比较重要,其他的留待后绪介绍具体功能的时候再来介绍。

假如现在你装好了redis服务,放在了远程服务器上,这个时候有个安全问题要注意,那就关于登录的。

默认情况下redis是不用密码就能登录的,即使是在远程上,所以很不安全。我们要设置一下。

在配置文件中把下面一行开启就好了。

bind 127.0.0.1

这代表redis和你本机的linux机器绑定在一起,只有那台linux机器才能登录。

还有另一个问题,就是关于内存的。作为缓存服务器,如果不加以限制内存的话,就很有可能出现将整台服务器内存都耗光的情况,可以在redis的配置文件里面设置。

# 限定最多使用1.5GB内存
maxmemory 1536mb

另外,当你的redis已经在用了,这个时候你又要改配置,就是需要类似重新加载配置文件的功能。

而redis也提供了CONFIG SETCONFIG GET功能,这个可以在线上更改redis的配置。

完结。

下一篇:RedisRedis 学习笔记系列文章之 Redis 的数据类型与应用场景 (二)

Redis 学习笔记系列文章之 Redis 的安装与配置 (一)的更多相关文章

  1. Redis学习笔记(2)——Redis的下载安装部署

    一.下载Redis Redis的官网下载页上有各种各样的版本,如图 但是官网下载的Redis项目不正式支持Windows.如果需要再windows系统上部署,要去GitHub上下载.我下载的是Redi ...

  2. Redis学习笔记(3)——Redis的命令大全

    Redis是一种nosql数据库,常被称作数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted se ...

  3. Redis学习笔记(1)——Redis简介

    一.Redis是什么? Remote Dictionary Server(Redis) 是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value ...

  4. KVM虚拟化学习笔记系列文章列表(转)

    Kernel-based Virtual Machine KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之k ...

  5. Redis学习笔记(三)Redis支持的5种数据类型的总结

    继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...

  6. Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash

    引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...

  7. AVAWEB学习笔记 ---- 系列文章

    [JAVAWEB学习笔记]网上商城实战5:后台的功能模块 [JAVAWEB学习笔记]网上商城实战4:订单模块 [JAVAWEB学习笔记]网上商城实战3:购物模块和订单模块 [JAVAWEB学习笔记]网 ...

  8. Redis学习笔记(二) Redis 数据类型

    Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...

  9. Hadoop学习笔记系列文章导航

    一.为何要学习Hadoop? 这是一个信息爆炸的时代.经过数十年的积累,很多企业都聚集了大量的数据.这些数据也是企业的核心财富之一,怎样从累积的数据里寻找价值,变废为宝炼数成金成为当务之急.但数据增长 ...

随机推荐

  1. CentOS7离线安装mysql5.6

    下载mysql5.6,系统选择redhat,版本选择RHEL7,下载RPM Bundle后得到一个tar文件.这里得到文件MySQL-5.6.44-1.el7.x86_64.rpm-bundle.ta ...

  2. synchronized关键字jvm实现及各种锁

    一.synchronized的字节码执行过程 在java语言中存在两种内建的synchronized语法:1.synchronized语句:2.synchronized方法. 对于synchroniz ...

  3. 关于try catch块执行流程

    代码: package test; public class FinallyTest { public static void main(String[] args) { try { // proce ...

  4. 容器编排系统K8s之NetworkPolicy资源

    前文我们了解了k8s的网络插件flannel的基础工作逻辑,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14225657.html:今天我们来聊一下k8s上 ...

  5. tep0.6.0更新聊聊pytest变量接口用例3个级别复用

    tep是一款测试工具,在pytest测试框架基础上集成了第三方包,提供项目脚手架,帮助以写Python代码方式,快速实现自动化项目落地.fixture是pytest核心技术,本文聊聊如何使用fixtu ...

  6. spark的运行指标监控

    sparkUi的4040界面已经有了运行监控指标,为什么我们还要自定义存入redis? 1.结合自己的业务,可以将监控页面集成到自己的数据平台内,方便问题查找,邮件告警 2.可以在sparkUi的基础 ...

  7. Pytest测试框架(五):pytest + allure生成测试报告

    Allure 是一款轻量级.支持多语言的开源自动化测试报告生成框架,由Java语言开发,可以集成到 Jenkins. pytest 测试框架支持Allure 报告生成. pytest也可以生成juni ...

  8. CQRS与Event Sourcing之浅见

    引言 DDD是近年软件设计的热门.CQRS与Event Sourcing作为实施DDD的一种选择,也逐步进入人们的视野.围绕这两个主题,软件开发的大咖[Martin Fowler].[Greg You ...

  9. PHP 导出到Excel表格中

    /** * 导出excel * @throws \PHPExcel_Exception * @throws \PHPExcel_Reader_Exception * @throws \PHPExcel ...

  10. 路由器开启远程控制(ssh或telent)

    • 远程控制        ○ 开启远程控制            § conf t             § line vty 0 4                □ 0 4 意思是最多允许5个 ...