Redis 学习笔记系列文章之 Redis 的安装与配置 (一)
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 SET和CONFIG GET功能,这个可以在线上更改redis的配置。
完结。
下一篇:RedisRedis 学习笔记系列文章之 Redis 的数据类型与应用场景 (二)
Redis 学习笔记系列文章之 Redis 的安装与配置 (一)的更多相关文章
- Redis学习笔记(2)——Redis的下载安装部署
一.下载Redis Redis的官网下载页上有各种各样的版本,如图 但是官网下载的Redis项目不正式支持Windows.如果需要再windows系统上部署,要去GitHub上下载.我下载的是Redi ...
- Redis学习笔记(3)——Redis的命令大全
Redis是一种nosql数据库,常被称作数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted se ...
- Redis学习笔记(1)——Redis简介
一.Redis是什么? Remote Dictionary Server(Redis) 是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value ...
- KVM虚拟化学习笔记系列文章列表(转)
Kernel-based Virtual Machine KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之k ...
- Redis学习笔记(三)Redis支持的5种数据类型的总结
继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...
- Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash
引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...
- AVAWEB学习笔记 ---- 系列文章
[JAVAWEB学习笔记]网上商城实战5:后台的功能模块 [JAVAWEB学习笔记]网上商城实战4:订单模块 [JAVAWEB学习笔记]网上商城实战3:购物模块和订单模块 [JAVAWEB学习笔记]网 ...
- Redis学习笔记(二) Redis 数据类型
Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...
- Hadoop学习笔记系列文章导航
一.为何要学习Hadoop? 这是一个信息爆炸的时代.经过数十年的积累,很多企业都聚集了大量的数据.这些数据也是企业的核心财富之一,怎样从累积的数据里寻找价值,变废为宝炼数成金成为当务之急.但数据增长 ...
随机推荐
- JDBC(五)—— 批量插入数据
批量插入数据 @Test public void testInsert() throws Exception { Connection conn = null; PreparedStatement p ...
- SpringBoot进阶教程(六十九)ApplicationContextAware
在某些特殊的情况下,Bean需要实现某个功能,但该功能必须借助于Spring容器才能实现,此时就必须让该Bean先获取Spring容器,然后借助于Spring容器实现该功能.为了让Bean获取它所在的 ...
- Spring-构造注入&注解注入&代理模式&AOP
1. 课程介绍 1. 依赖注入;(掌握) 2. XML自动注入;(掌握) 3. 全注解配置;(掌握) 4. 代理模式;(掌握) 5. AOP;(掌握) 依赖注入;(掌握) 2.1. 构 ...
- javascript 匿名函数的理解(转)
原网址 http://www.jb51.net/article/21948.htm javascript 匿名函数的理解(透彻版) 代码如下: (function(){ //这里忽略jQuery所有实 ...
- 记录一次 Nginx 配置 proxy_pass 后 返回404问题
一. Nginx 配置 proxy_pass 后 返回404问题 故障解决和定位 1.1. 问题 在一次生产涉及多次转发的配置中, 需求是下面的图: 在配置好了 proxy_pass 之后,请求 ww ...
- spark-streaming-连接kafka的两种方式
推荐系统的在线部分往往使用spark-streaming实现,这是一个很重要的环节. 在线流程的实时数据一般是从kafka获取消息到spark streaming spark连接kafka两种方式在面 ...
- Spark学习进度-Transformation算子
Transformation算子 intersection 交集 /* 交集 */ @Test def intersection(): Unit ={ val rdd1=sc.parallelize( ...
- 机器学习之shape
shape[:2] 取彩色图片的长和宽 shape[:3]取彩色图片的长和宽和通道 img.shape[0]:图像的垂直高度 img.shape[1]:图像的水平宽度 img.shape[2]:图像的 ...
- 用隧道协议实现不同dubbo集群间的透明通信
用隧道协议实现不同dubbo集群间的透明通信 前言 笔者最近完成了一个非常有意思的隧道机制(已在产线运行),可以让注册到不同zookeeper之间的dubbo集群之间能够正常进行通信.如下图所示: 例 ...
- Centos7安装RabbitMQ详细教程
MQ引言 什么是MQ MQ:message Queue翻译为消息队列,通过典型的生产者和消费者模型不断向消息队列中生产消息,消费者不断从队列中获取消息.因为消息的生产和消费都是一部的,而且只关心消息的 ...