redis简单入门介绍

时间:2022-04-05 05:18:21

1.redis介绍

 

  • 什么是NoSQL : NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充。
  • 什么是redis : Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如有(字符串类型,散列类型,列表类型,集合类型,有序集合类型)
  • redis的应用场景 :  
    • 缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)

    • 分布式集群架构中的session分离

    • 任务队列。(秒杀、抢购、12306等等)

    • 网站访问统计
    • 数据过期处理(可以精确到毫秒)

 

2.redis的安装和运行

  • redis的安装环境 : redis是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境。 安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc

    yum install gcc-c++
  • redis安装
    • 源码下载 : 从官网下载http://download.redis.io/releases/redis-3.0.0.tar.gz 将 redis-3.0.0.tar.gz拷贝到/usr/local的新建文件夹redis下 
      cp redis-3.0.0.tar.gz /usr/local/redis
    • 解压源码 : 
      tar -zxvf redis-3.0.0.tar.gz
    • 编译 : 进入解压后的目录进行编译
      //进入文件夹
      cd /usr/local/redis-3.0.0
      //编译
      make
    • 安装到指定目录 : 如/usr/local/redis
      //进入编译好的目录
      cd /usr/local/redis-3.0.0
      //安装到指定目录
      make PREFIX=/usr/local/redis install
    • 配置文件 : 从编译目录复制redis.conf文件到安装目录的/bin目录下
      //进入编译好的目录
      cd /usr/local/redis-3.0.0
      //复制redis.conf文件到安装目录的/bin下
      cp redis.conf /usr/local/redis/bin
    • 此时安装目录下的文件redis简单入门介绍

      redis简单入门介绍

  • redis启动
    • 前端启动 : 直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法。如下图

      redis简单入门介绍

    • 后端启动 : 
      • 修改redis.conf配置文件, daemonize no 改成daemonize yes  
      • 执行如下命令启动redis
        cd /usr/local/redis
        ./bin/redis-server ./redis.conf
      • 查看是否启动
        ps -aux|grep redis
  • 启动多个redis进程( 了解 )
    • 创建多个redis目录,以端口号命名,比如:创建6379、6380两个目录,将redis的安装文件bin和redis.conf拷贝至这两个目录
    • 修改6379目录下的redis.conf设置端口号为6379

      修改6380目录下的redis.conf设置端口号为6380

    • 启动6379和6380目录下的redis-server程序:

      cd 6379

      ./redis-server redis.conf 

      cd 6380

      ./redis-server redis.conf 
  • redis停止 : 强行终止Redis进程可能会导致redis持久化数据丢失。正确停止Redis的方式应该是向Redis发送SHUTDOWN命令
    //进入redis安装目录
    cd /usr/local/redis/bin
    //使用redis的客户端工具关闭redis
    ./redis-cli shutdown
  • 连接redis客户端
    • redis的客户端 : 在redis的安装目录中有redis的客户端,即redis-cli(Redis Command Line Interface),它是Redis自带的基于命令行的Redis客户端
    • 连接服务端 : 执行bin/redis-cli连接redis服务端redis简单入门介绍

      从上图得知redis-cli默认连接本机的redis,本机的redis没有启动则报上图中的错误。

      指定连接redis服务的ip和端口:redis简单入门介绍

       

  • 向redis服务器发送命令 : redis-cli连接上redis服务后,可以在命令行发送命令
    • ping : 

      Redis提供了PING命令来测试客户端与Redis的连接是否正常,如果连接正常会回复PONGredis简单入门介绍

    • set/get : 使用set和get可以向redis设置数据,获取数据redis简单入门介绍

       

    • del : 删除指定key的内容
      //例如
      set name lisi
      get name lisi
      del name

       

    • Keys * : 查看当前库中所有key值
      Keys *

       

3.jedis的使用

 

  • Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#C++、php、Node.js、Go等。
             在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。 在企业中用的最多的就是Jedis
  • jar 包 
    • pom坐标
      <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>2.7.0</version>
      </dependency>
    • jar包redis简单入门介绍
      • 连接redis操作

        // 单实例连接redis  注意:如果连接超时 请将服务器的6379端口开放

            @Test

        publicvoid testJedisSingle() {

               Jedis jedis = new Jedis("192.168.101.3", 6379);

               jedis.set("name", "bar");

               String name = jedis.get("name");

               System.out.println(name);

               jedis.close();

            }

      • 使用连接池连接 : 通过单实例连接redis不能对redis连接进行共享,可以使用连接池对redis连接进行共享,提高资源利用率,使用jedisPool连接redis服务
        @Test
        public void pool() {
        JedisPoolConfig config
        = new JedisPoolConfig();
        //最大连接数
        config.setMaxTotal(30);
        //最大连接空闲数
        config.setMaxIdle(2);

        JedisPool pool
        = new JedisPool(config, "192.168.101.3", 6379);
        Jedis jedis
        = null;

        try {
        jedis
        = pool.getResource();

        jedis.set(
        "name", "lisi");
        String name
        = jedis.get("name");
        System.out.println(name);
        }
        catch(Exception ex){
        ex.printStackTrace();
        }
        finally{
        if(jedis != null){
        //关闭连接
        jedis.close();
        }
        }

        }

         

4.常用的redis命令

 

  • 赋值 
    SET key value
    127.0.0.1:6379> set test 123
    OK
  • 取值
    GET key
    127.0.0.1:6379> get test
    "123“
  • 删除
    Del key
    127.0.0.1:6379> del test
    (integer)
    1
  • 数值增减
    • 递增数字 : 当存储的字符串是整数时,Redis提供了一个实用的命令INCR,其作用是让当前键值递增
      127.0.0.1:6379> incr num
      (integer)
      1
      127.0.0.1:6379> incr num
      (integer)
      2
      127.0.0.1:6379> incr num
      (integer)
      3
    • 增加指定的整数 : INCRBY key increment
      127.0.0.1:6379> incrby num 2
      (integer)
      5
      127.0.0.1:6379> incrby num 2
      (integer)
      7
      127.0.0.1:6379> incrby num 2
      (integer)
      9
    • 递减
      127.0.0.1:6379> set num 10
      OK
      127.0.0.1:6379> decr num
      (integer)
      9
      127.0.0.1:6379> decr num
      (integer)
      8
      127.0.0.1:6379> decr num
      (integer)
      7
      127.0.0.1:6379> decr num
      (integer)
      6
      127.0.0.1:6379>
    • 减少指定数 : DECRBY key decrement 
      127.0.0.1:6379> decr num
      (integer)
      6
      127.0.0.1:6379> decr num
      (integer)
      5
      127.0.0.1:6379> decrby num 3
      (integer)
      2
      127.0.0.1:6379> decrby num 3
      (integer)
      -1
    • 向尾部追加值 APPEND key value 

      //APPEND的作用是向键值的末尾追加value。如果键不存在则将该键的值设置为value,
      即相当于 SET key value。返回值是追加后字符串的总长度。
      127.0.0.1:6379> set str hello
      OK
      127.0.0.1:6379> append str " world!"
      (integer)
      12
      127.0.0.1:6379> get str
      "hello world!"
    • 获取字符串的长度  strlen key  
127.0.0.1:6379> strlen str 
(integer)
0
127.0.0.1:6379> set str hello
OK
127.0.0.1:6379> strlen str
(integer)

 

 

4.持久化

 

  • 简介 : 

    Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化

             Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合使用
  • RDB持久化 : RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘。
  • AOF持久化 : 

    默认情况下Redis没有开启AOF(append only file)方式的持久化,可以通过appendonly参数开启:

    appendonly yes

    开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬

    盘中的AOF文件

 

5.redis主从复制 (了解) 

 

  • 什么是主从复制 : 持久化保证了即使redis服务重启也会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障,如下图:redis简单入门介绍
  • 配置 : 无需进行配置 只需要在从服务器(也就是另一台redis服务)修改一下redis.conf
    •  修改从redis服务器上的redis.conf文件,添加slaveof 主redisip  主redis端口
    • redis简单入门介绍

      上边的配置说明当前该从redis服务器所对应的主redis是192.168.101.3,端口是6379

 

结语:至此,redis的简单入门就结束了,如果文中有什么不妥指出敬请指正,redis还有更多内容请参考专业文档,感谢阅读.