1. 什么是Redis?

redis是一个开源的,内存数据结构存储(in-memory data structure store),可以用作:

  • Database
  • Cache
  • Message Broker(消息总线/代理)

它支持以下数据结构:

  • string
  • hash
  • list
  • set
  • sorted set with range query(范围查询排序的集合)
  • bitmap
  • hyperloglogs
  • geospatial index with radius query

更加详细的介绍看官网更好:https://redis.io/,这里我只想记录下如何入门与快速理解。

2. 为什么要用Redis?

就我所在的公司工作内容来说,Redis主要作用是:

作为一个独立的缓存

  1. 应用A 应用B 有一些公共数据需要双方都能够存储、更新和查询,那么该用什么方式来实现呢?
  2. 每个人都接触过的方式是:关系数据库。
  3. 此时再加个条件,这些数据不需要被持久化,且需要非常快速的可以进行操作和查询。

So,redis就是这样一个软件:
它将数据存储在内存中,通过它提供的各种丰富的API,你可以按照你的需要进行各种不同数据结构的增删改查。因为它的数据在内存中,所以它非常快。

3. 下载与安装

可以在官网找到下载链接:http://redis.io/

我下的版本是:redis-3.0.7.tar.gz

Linux下(这里是CentOS7)安装步骤:

  1. 编译源程序
##这一部分是将redis的C源码进行编译 - compile,生成目标文件


##1. 进入tar包所在目录

[root@iZ28gss3aiwZ ~]# cd /home/zyx/
[root@iZ28gss3aiwZ zyx]# ls
redis-3.0.7.tar.gz

##2. 解压

[root@iZ28gss3aiwZ zyx]# tar zxf redis-3.0.7.tar.gz
[root@iZ28gss3aiwZ zyx]# cd redis-3.0.7/

##3. 编译

[root@iZ28gss3aiwZ redis-3.0.7]# make
  1. 安装
##这一部分是将目标文件进行链接 - linking,链接需要的库和目标文件生成可执行文件

[root@iZ28gss3aiwZ redis-3.0.7]# cd src/
[root@iZ28gss3aiwZ src]# make install
  1. 为了方便管理,将可执行文件移动到公共目录中去
##1. 创建两个目录bin:存放可执行文件;etc:存放配置文件

[root@iZ28gss3aiwZ src]# mkdir -p /usr/local/redis/bin
[root@iZ28gss3aiwZ src]# mkdir -p /usr/local/redis/etc

##2. 分别移动可执行文件、配置文件

[root@iZ28gss3aiwZ src]# mv /home/zhangyaxu/redis-3.0.7/redis.conf /usr/local/redis/etc/
[root@iZ28gss3aiwZ src]# mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-du
mp redis-cli redis-server /usr/local/redis/bin

4. 启动

在/usr/local/redis/bin中可以看到有如下可执行文件:

[root@iZ28gss3aiwZ bin]# ll
total 8548
-rwxrwxr-x 1 root root     566 Jan 25 22:57 mkreleasehdr.sh
-rwxr-xr-x 1 root root 2087539 May  2 14:15 redis-benchmark
-rwxr-xr-x 1 root root   25173 May  2 14:15 redis-check-aof
-rwxr-xr-x 1 root root   52820 May  2 14:15 redis-check-dump
-rwxr-xr-x 1 root root 2217117 May  2 14:15 redis-cli
-rwxr-xr-x 1 root root 4357563 May  2 14:15 redis-server
  1. 先修改配置文件
[root@iZ28gss3aiwZ etc]# vim redis.conf 
···

##修改默认的no为yes,也就是使用守护线程的方式启动redis-server

daemonize yes

## 安全设置

// 1. 绑定IP:设置可以访问本Redis程序的IP(IPV4和6都行),这样就保护了Redis,多个IP用空格隔开。

// 这个适用于你对要绑定IP所在的机器有完全控制权。因为这个绑定的意思是:Redis一启动就要对IP所在机器建立TCP Socket链接,而不是说仅仅是IP所在机器可以访问Redis

// 如果你不准备用IP控制redis访问权限就注释这个吧
bind 127.0.0.1 x.x.x.x ::1 ...

// 2. 密码:也可以设置一个密码,这个和绑定IP无需同时使用
requirepass yourPassword
···

## 常用设置

// 1. db文件地址,按需要设
dir /data/redis/data/
// 2. log文件地址,自己按需要设
logfile "/data/redis/logs/redis.log"
// 3. 设置内存,机器内存少,我就设置了400mb
maxmemory 400mb
  1. 指定配置文件,并启动
[root@iZ28gss3aiwZ bin]# ./redis-server /usr/local/redis/etc/redis.conf 

##另外,可以使用ps命令查看redis进程,可以发现已经启动且占用端口6379

[root@iZ28gss3aiwZ bin]# ps -ef|grep redis
root      1904     1  0 15:11 ?        00:00:00 ./redis-server *:6379
root      1908 31265  0 15:12 pts/1    00:00:00 grep --color=auto redis

##也可以查看6379端口占用

[root@iZ28gss3aiwZ bin]# netstat -tunpl | grep 6379
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      1904/./red
is-server tcp6       0      0 :::6379                 :::*                    LISTEN      1904/./red
is-server

另外,redis.conf文件中有很多配置项,都很重要,他也自带的有英文解释,需要时自己去配置。

  1. 进入redis客户端,redis-cli
// 正常无密码登录
[root@iZ28gss3aiwZ bin]# ./redis-cli
// 有密码时登录
[root@iZ28gss3aiwZ bin]# ./redis-cli -a 'yourPassword'

##另外,退出客户端操作如下

127.0.0.1:6379> quit

##关闭redis-server的操作有如下两种,pkill大家都懂,shutdown是redis-cli支持的关闭Server的操作

[root@iZ28gss3aiwZ bin]# pkill redis-server 
[root@iZ28gss3aiwZ bin]# ./redis-cli shutdown

特别注意

// 特别注意!特别注意!特别注意!不要忘记在防火墙添加端口,我的是CentOS7,所以如下
firewall-cmd --zone=public --add-port=6379/tcp --permanent