Redis特点

  • 一个高性能Key-Value内存数据库。官方号称其OPS能够达到10w+。
  • 支持多种数据结构,如String、Hash Table、List、Set、Sorted Set等等。
  • 单线程模型,使用简单。
  • 丰富的功能,如发布订阅、Pipeline、慢查询等等。
  • 支持持久化。
  • 高可用分布式支持。

image.png

Redis的典型使用场景

  • 缓存
  • 计数器
  • 消息队列
  • 排行榜
  • 社交网络
  • 实时系统
  • 分布式会话

Redis的安装

Linux

  1. 下载: wget http://download.redis.io/releases/redis-3.0.7.tar.gz
  2. 解压: tar -zxvf redis-3.0.7.tar.gz
  3. 进入解压后目录,执行: make && make install
  4. 进入src目录,里面有编译后的可执行文件。

    make是编译redis。make install则会把redis安装到默认目录,即把redis编程产生的可执行文件复制到/usr/local/bin/目录下,这样就可以在任何目录下通过命令行调用这些可执行文件。

可执行文件说明

redis-server:使用它可以启动Redis服务器。
redis-cli:Redis命令行工具(命令行客户端),可用于连接Redis服务端。
redis-benchmark:Redis性能测试工具。
redis-check-aof:AOF文件检查工具(和持久化有关)。
redis-check-dump:RDB文件检查工具(和持久化有关)。
redis-sentinel:Senditnel服务器

三种启动方式

  • 最简启动:直接执行 redis-server
  • 动态参数启动:添加命令行参数,例如:redis-server --port 6380
  • 配置文件启动:指定配置文件: redis-sever configPath

生产环境推荐使用配置文件启动。由于redis是单线程模型,通常会采用“单机多实例”的方式在一台机器上启动多个Redis服务器,此时可以用不同的配置文件,且每个配置文件的端口号不同。

验证Redis服务器是否启动的方法

redis默认使用6379端口

  • ps aux | grep redis
  • netstat -antpl | grep redis
  • redis-cli -h ip -p port

    Redis客户端连接

    image.png
    客户端命令和返回值示例:
    image.png

image.png

Redis常用配置

  • daemonize:是否以守护进程的方式启动。默认是no,在前台运行。启动Redis的终端退出后,Redis也就退出了。推荐改为yes。
  • port:redis对外端口号。默认是6379。当要启动多个redis实例时,必须修改这个端口号。
  • logfile:Redis日志文件名。
  • dir:Redis工作目录。Redis运行中产生的持久化文件、日志文件等,都将放到这个目录下。
  • ……
    1. # redis-6382.conf
    2. daemonize yes
    3. port 6382
    4. dir "/opt/soft/redis/data"
    5. logfile "6382.log"

用Docker启动Redis

启动容器

$ docker pull redis:latest  # 拉取最新版本的redis

$ docker run \  # 启动redis容器 
-p 6379:6379 \  # 绑定本机6379端口到容器的6379端口
-v $PWD/data:/data \  # 挂载本机当前目录下的data目录到容器中/data目录,作为redis工作目录
-v $PWD/conf/redis-6379.conf:/etc/redis/redis.conf \  # 挂载配置文件
--name my-redis \  # 指定容器名
-d \ # 容器以守护态运行 
redis redis-server /etc/redis/redis.conf  # 指定镜像和启动命令

特别注意:
在使用Docker启动Redis时,配置文件中,千万不要添加 daemonize yes 这一项,否则容器启动后,将立即退出。因为对于容器来说,前台已经没有任何程序在执行了!
容器启动后就可以正常访问redis服务,和非容器化的Redis服务是完全一样的。

通过redis-cli访问

当我们使用Docker启动Redis时,通常我们不会下载Redis安装包并在本地安装redis-cli。若想使用redis-cli来访问,需要通过Redis镜像再启动一个容器,在其中运行redis-cli,并连接到Redis服务容器。这里的关键是,如何实现两个容器的互联。
最简单的方式,是通过 --link 参数,将Redis服务容器链接到redis-cli容器中:

$ docker run -it \
--link my-redis:redis \  # 将my-redis容器链接到本容器中,并重命名为redis。Docker可通过DNS服务将redis解析为Redis服务的IP地址。
--rm \ 
redis redis-cli -h redis -p 6379  # -h参数指定host,这里的host就是上面链接过来的redis

不过, --link 的方式已经过时,将来可能会被移除。官方推荐的方式,是通过自定义网络的形式,将Redis服务和Redis-CLI容器都放到同一个自定义网络中,从而实现互联。
参考: