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主要作用是:
作为一个独立的缓存
- 应用A 和应用B 有一些公共数据需要双方都能够存储、更新和查询,那么该用什么方式来实现呢?
- 每个人都接触过的方式是:关系数据库。
- 此时再加个条件,这些数据不需要被持久化,且需要非常快速的可以进行操作和查询。
So,redis就是这样一个软件:
它将数据存储在内存中,通过它提供的各种丰富的API,你可以按照你的需要进行各种不同数据结构的增删改查。因为它的数据在内存中,所以它非常快。
3. 下载与安装
可以在官网找到下载链接:http://redis.io/
我下的版本是:redis-3.0.7.tar.gz
Linux下(这里是CentOS7)安装步骤:
- 编译源程序
##这一部分是将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
- 安装
##这一部分是将目标文件进行链接 - linking,链接需要的库和目标文件生成可执行文件
[root@iZ28gss3aiwZ redis-3.0.7]# cd src/
[root@iZ28gss3aiwZ src]# make install
- 为了方便管理,将可执行文件移动到公共目录中去
##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
- 先修改配置文件
[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
- 指定配置文件,并启动
[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文件中有很多配置项,都很重要,他也自带的有英文解释,需要时自己去配置。
- 进入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