1 入门概述

1.1 是什么?

  • Redis:REmote DIctionary Server(远程字典服务器)
  • 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。
  • Redis 与其他 key - value 缓存产品有以下三个特点
  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
  • Redis支持数据的备份,即master-slave模式的数据备份

1.2 能干嘛?

  • 内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
  • 取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面
  • 模拟类似于HttpSession这种需要设定过期时间的功能
  • 发布、订阅消息系统
  • 定时器、计数器

1.3 去哪下?

1.4 怎么玩?

  • 数据类型、基本操作和配置
  • 持久化和复制,RDB/AOF
  • 事务的控制
  • 复制

2 VMWare+VMTools千里之行始于足下

  • VMWare虚拟机的安装
  • CentOS或者RedHad5的安装
  • 如何查看自己的linux是32位还是64位

    getconf LONG_BIT
    返回是多少就是几位
  • VMTools的安装
  • 设置共享目录
  • 上述环境都OK后开始进行 Redis 的服务器安装配置

3 Redis的安装

3.1 Windows版安装

  • 下载地址:https://github.com/microsoftarchive/redis/releases点击进入
  • 下载到的Redis支持32bit和64bit。根据自己实际情况选择,将64bit的内容cp到自定义盘符安装目录取名redis。 如 C:\reids
  • 打开一个cmd窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.conf 。
  • 如果想方便的话,可以把redis的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个redis.conf可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:
  • 这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。
  • 切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。
  • 设置键值对 set myKey abc
  • 取出键值对 get myKey

    重要提示:由于企业里面做Redis开发,99%都是Linux版的运用和安装,几乎不会涉及到Windows版,上一步的讲解只是为了知识的完整性,Windows版不作为重点,同学可以下去自己玩,企业实战就认一个版:Linux

3.2 Linux版安装

  1. 下载获得redis-6.2.1.tar.gz后将它放入我们的Linux目录/opt
  2. /opt目录下,解压命令:tar -zxvf redis-6.2.1.tar.gz
  3. 解压完成后出现文件夹:redis-6.2.1,将redis-6.2.1.tar.gz删除,并进入redis-6.2.1
rm -rf redis-6.2.1.tar.gz
cd redis-6.2.1/

redis 的Raft 算法_redis_03

  1. 在redis-6.2.1目录下执行make命令
  • 运行make命令时故意出现的错误解析:
    gcc 命令未找到
    解决:安装 gcc
    gcc是linux下的一个编译程序,是C程序的编译工具。
    GCC(GNU Compiler Collection) 是 GNU(GNU’s Not Unix) 计划提供的编译器家族,它能够支持 C, C++, Objective-C, Fortran, Java 和 Ada 等等程序设计语言前端,同时能够运行在 x86, x86-64, IA-64, PowerPC, SPARC 和 Alpha 等等几乎目前所有的硬件平台上。鉴于这些特征,以及 GCC 编译代码的高效性,使得 GCC 成为绝大多数自由软件开发编译的首选工具。虽然对于程序员们来说,编译器只是一个工具,除了开发和维护人员,很少有人关注编译器的发展,但是 GCC 的影响力是如此之大,它的性能提升甚至有望改善所有的自由软件的运行效率,同时它的内部结构的变化也体现出现代编译器发展的新特征。
  • 能上网:yum install gcc-c++
  • Redis Test(可以不用执行)

    下载TCL的网址:
    http://www.linuxfromscratch.org/blfs/view/cvs/general/tcl.html
    安装TCL
  1. 如果make完成后继续执行make install
  2. 在根目录下新建myredis文件夹:mkdir myredis
  3. 在 /opt/redis-6.2.1 目录下将redis.conf拷贝到myredis文件夹下:cp redis.conf /myredis/
  4. 进入myredis文件夹,修改redis.conf文件
cd /myredis
vim redis.conf

redis 的Raft 算法_java_04

  1. 进入到 /usr/local/bin 目录下:cd /usr/local/bin
  2. redis 的Raft 算法_redis_05


  • Redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何,服务启动起来后执行
  • Redis-check-aof:修复有问题的AOF文件,rdb和aof后面讲
  • Redis-check-dump:修复有问题的dump.rdb文件
  • Redis-cli:客户端,操作入口
  • Redis-sentinel:redis集群使用
  • Redis-server:Redis服务器启动命令
  1. 启动redis并测试:
redis-server /myredis/redis.conf
redis-cli -p 6379
ping

redis 的Raft 算法_java_06

  1. 关闭redis:shutdown
  2. redis 的Raft 算法_java_07

  3. 单实例关闭:redis-cli shutdown
    多实例关闭,指定端口关闭:redis-cli -p 6379 shutdown

4 Redis启动后杂项基础知识讲解

  1. 单进程
  • 单进程模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行效率。
  • Epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
  1. 默认16个数据库,类似数组下表从零开始,初始默认使用零号库
    设置数据库的数量,默认数据库为0,可以使用SELECT <\dbid>命令在连接上指定数据库id databases 16
  2. Select命令切换数据库
  3. Dbsize查看当前数据库的key的数量
  4. Flushdb:清空当前库
  5. Flushall;通杀全部库
  6. 统一密码管理,16个库都是同样密码,要么都OK要么一个也连接不上
  7. Redis索引都是从零开始
  8. 默认端口是6379