Redis 是什么
开源的key-value的存储服务系统,也可以把它理解为是一种数据库。
Redis 的特性
No | 特点 | 说明 |
---|---|---|
1 | 速度快 | 10w OPS,数据存放在内存中达到数据访问很快,并且为单进程 |
2 | 持久化 | Redis 所有数据保持在内存中,对数据的更新将异步保存在磁盘上!达到 断电不怕丢数据 |
3 | 多种数据结构 | 开发常用的数据类型 |
4 | 支持多种编辑语言 | 支持开发常用的编程语言:Java、python、php、Ruby、Lua |
5 | 功能丰富 | 发布订阅、Lua脚本、事物功能 |
6 | 使用简单 | |
7 | 主从复制 | 对于数据的保护 |
8 | 高可用、分布式 | 2.8开始提供 Redis-Sentinel高可用。3.0开始支持Redis-Cluster分布式 |
典型应用场景
特点 | 说明 |
---|---|
1. 缓存系统 | 内存缓存数据 |
2. 计数器 | 转发量啊, 评论数啊 |
3. 消息队列系统 | 类似中间件(卡夫卡),提供消息队列 |
4. 排行榜功能 | 有序集合 |
5. 社交网络 | 粉丝数、关注数、时间轴 |
6. 实时系统 | 垃圾邮件过滤器 |
Linux 平台下的 Redis 安装
项目 | 配置 |
---|---|
操作系统 | RHL 7.4 |
redis版本 | 5.0.8 |
系统需要安装gcc
[root@rh74 ~]# yum install gcc*
开始安装
[root@rh74 ~]# tar -xvf redis-5.0.8.tar
[root@rh74 redis]# ln -s redis-5.0.8 redis
[root@rh74 redis]# make && make install --编译 及 安装
为了方便未来redis软件升级、方便管理,我们会创建软件所在目录的软连接。
看到如下的提示,说明安装完成。
CC childinfo.o
CC defrag.o
CC siphash.o
CC rax.o
CC t_stream.o
CC listpack.o
CC localtime.o
CC lolwut.o
CC lolwut5.o
LINK redis-server
INSTALL redis-sentinel
CC redis-cli.o
LINK redis-cli
CC redis-benchmark.o
LINK redis-benchmark
INSTALL redis-check-rdb
INSTALL redis-check-aof
Hint: It's a good idea to run 'make test' ;)
make[1]: Leaving directory `/root/redis-5.0.8/src'
cd src && make install
make[1]: Entering directory `/root/redis-5.0.8/src'
CC Makefile.dep
make[1]: Leaving directory `/root/redis-5.0.8/src'
make[1]: Entering directory `/root/redis-5.0.8/src'
Hint: It's a good idea to run 'make test' ;)
INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL install
make[1]: Leaving directory `/root/redis-5.0.8/src'
安装完成之后,redis的命令可以直接使用,不需要配置环境变量。
启动 Redis
redis 有三种启动方式:
启动模式 | 启动方法 |
---|---|
最简启动 | [root@rh74 redis]# redis-serve r 使用默认端口号启动redis服务,一切参数配置均为默认值,启动时log直接屏幕输出。 |
动态参数启动 | [root@rh74 ~]# redis-server --port 6380 可以指定端口号启动redis服务,一切参数配置均为默认值,启动时log直接屏幕输出。 |
配置文件启动 (推荐) | 接下来详细介绍部署+启动方法 |
配置文件启动方法
我们通常会在单机上部署多个redis,需要用端口号作为区分。
- 获取配置文件:根据系统自带配置文件基础上进行修改。
[root@rh74 redis]# mkdir config
[root@rh74 redis]# cp redis.conf config/
[root@rh74 redis]# cd config/
[root@rh74 config]# ll
total 64
-rw-r--r--. 1 root root 61797 May 14 05:08 redis.conf
[root@rh74 config]# cat redis.conf | grep -v "#" | grep -v "^$" > redis-7000.conf
[root@rh74 config]# ll
total 68
-rw-r--r--. 1 root root 1425 May 14 05:11 redis-7000.conf
-rw-r--r--. 1 root root 61797 May 14 05:10 redis.conf
- 不过本次我们以最简单配置,仅留4项。
[root@rh74 config]# vi redis-7000.conf
daemonize yes
port 7000
dir "/root/redis/data"
logfile "7000.log"
- 创建所需目录
[root@rh74 config]# cd ..
[root@rh74 redis]# mkdir data
正式启动
[root@rh74 redis]# redis-server config/redis-7000.conf
验证启动
- 通过查看系统进程
因为我分别用三个方法启动过redis,所以后台进程可以看到有三条:
[root@rh74 redis]# ps -ef | grep redis
root 9648 1800 0 05:03 pts/0 00:00:04 redis-server *:6379
root 9671 9652 0 05:06 pts/2 00:00:04 redis-server *:6380
root 9719 1 0 05:31 ? 00:00:00 redis-server *:7000
- log日志已生成
[root@rh74 redis]# cd data
[root@rh74 data]# ls
7000.log
客户端连接
其实就是进入redis软件中进行操作,使用redis-cli
命令
[root@rh74 ~]# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> exit
PS: 可执行文件说明
其实在安装配置完redis 软件之后,可以发现有这么几个目录,我这里分别给大家介绍一下:
[root@rh74 redis]# cd src/
[root@rh74 redis]# ls
目录 | 说明 |
---|---|
redis-server | redis 服务器,用来启动redis服务的。 |
redis-cli | redis 命令行客户端,用来连接客户端的 |
redis-banchmark | 性能测试 |
redis-check-aof | 修复aof工具,用于持久化功能 |
redis-check-dump | 修复rdb工具,用于持久化功能 |
redis-sentinel | Sentinel高可用 |