前戏
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
Redis的优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
安装
window下安装
下载地址:https://github.com/MSOpenTech/redis/releases
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘
redis很小,只有几MB,我们只需要解压就可以了,默认的文件名比较长,我们可以重命名为redis,如下
打开cmd,切换到redis目录下,运行下面命令就可以启动
redis-server.exe redis.windows.conf
如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。
这时候另启一个 cmd 窗口,原来的不要关闭,不然就无法访问服务端了。
切换到 redis 目录下运行:
redis-cli.exe -h 127.0.0.1 -p 6379
centos安装
linux下我们可以通过yum安装或者是源码安装。
yum安装
# 前提得配置好阿里云yum源,epel源 # 查看是否有redis包 yum list redis
#安装redis yum install redis -y
#安装好,启动redis systemctl start redis
源码安装
上面我们用yum安装了redis,简单易操作,那为什么还要用源码安装呢?
- 编译安装时可以指定扩展的module(模块),php、apache、nginx都是一样有很多第三方扩展模块,如mysql,编译安装时候,如果需要就定制存储引擎(innodb,还是MyIASM)
- 编译安装可以统一安装路径,linux软件约定安装目录在/opt/下面(源码安装可以指定目录安装, configure --prefix=/opt/python36/)
- 软件仓库版本一般比较低,编译源码安装可以根据需求,安装最新的版本
1.在线下载redis源码包,可以下载到opt下,后面就不需要指定路径了
wget http://download.redis.io/releases/redis-5.0.6.tar.gz
2.解压缩redis源码包,如果源码包带有.gz结尾,需要通过gzip指令扩展,也就是-z的参数
tar -zxvf redis-5.0.6.tar.gz
3.切换目录到redis源码包
cd redis-5.0.6/
4.由于redis没有configure脚本,直接就有了makefile,因此可以直接编译且安装
make #编译 make install #安装
#此两条命令可以缩写为一条 make && make install
编译安装完成后,redis默认会将redis命令添加到环境变量中/usr/local/bin底下
/opt/redis-5.0.6下有个redis.conf文件,这是redis的配置文件,里面有些配置,在下篇文章里我们自定义一个配置文件进行启动redis
bind 127.0.0.1 # 不允许远程连接,可以改为bind 0.0.0.0 protected-mode yes # 没有设置redis密码,不让连接 port 6379 # 端口
docker安装
拉取redis镜像
docker pull redis
启动redis镜像
docker run -d --name myredis -v /opt/docker/data/redis:/data redis
我们查询到官网上的redis镜像存储数据的目录在/data
目录,然后我们存储在本地/opt/docker/data/redis
使用参数-v 本机位置:容器内位置
进入redis内部
docker exec -it myredis /bin/bash