Redis学习笔记

Redis学习笔记

概念篇


  1. Redis数据库(REmote DIctionary Server):

    • 定义:开源的、使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存、亦可持久化的日志型、Key-Value数据库。
    • 值的类型
      • 字符串-string
        • 最基本的数据类型
        • 相关命令:
          set <key> <value>
          get <key>
          
          示例:
          set tom "cat"
          get tom
                   
      • 哈希-hash
        • 定义: string 类型的 field 和 value 的映射表
        • 相关命令:
          hmset <key> <field1> <value1> <field2> <value2>
          hget <key> <field1>
          
          示例:
          // 设置2个field-value对
          HMSET runoob field1 "Hello" field2 "World"
          HGET runoob field1
                   
      • 列表-list
        • 定义:简单的字符串列表,可以左插到列表头部,也可以右插到列表尾部。
        • 相关命令:
          // lpush-list push
          lpush <key> <value>
          
          示例:
          lpush runoob redis
          lpush runoob mongodb
                   
      • 集合-set
        • 定义:String类型的无序集合。
        • 相关命令
          // sadd-set add
          sadd <key> <member>
          
          示例:
          sadd runoob redis
          sadd runoob mongodb
                   
        • 添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0。
        • 集合内元素不允许重复。
      • 有序集合-zset(sorted sets)
        • 定义:string类型元素的集合,且不允许重复的成员。
        • 区别:每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。
        • 相关命令:
          // zadd-zset add
          zadd <key> <score> <menber>
          
          示例:
          zadd runoob 0 redis
                   
    • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存。
  2. Redis安装:

    • redis-server:redis服务程序
    • redis-cli:测试客户端

Redis命令篇


  1. 启动Redis客户端:

    • Redis客户端:redis-cli
    • 相关命令:
      // 连接本地的Redis服务
      redis-cli
      
      // 连接远程的Redis服务
      redis-cli -h <hostname> -p <portname> -p <password>
      
      示例:
      redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
         
  2. Redis事务:

    • 定义:一次执行多个命令 / 打包的批量执行脚本。
    • 事务的3个阶段:
      • 开始事务
        • 命令:multi
        • 附:discard:取消事务
      • 命令入队
      • 执行事务
        • 命令:exec
    • Redis事务的执行不具备原子性,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。。
  3. Redis脚本:

    eval <script> <numkeys> <key> [<key>...] <arg> [<arg>...]
    
    示例:
    EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
       
    • eval命令参数说明:

      参数 描述
      script 脚本代码
      numkeys key的数量
      key
      arg 参数
    • Redis脚本使用 Lua 解释器来执行脚本。

    • Redis 2.6 版本通过内嵌支持 Lua 环境。

  4. Redis连接:

    • 相关命令:
      // 验证密码是否正确
      auth <password>
      
      // 查看Redis服务是否运行
      ping
      
      // 关闭连接
      quit
      
      // 切换到指定序号的数据库
      select <index>
         

高级篇


  1. Redis驱动下载页面下载Redis For Java的驱动包。

  2. 常用API:

    // 连接redis服务
    Jedis jedis = new Jedis("localhost");
    
    // 验证Redis服务密码
    jedis.auth("123456");
    
    // 插入字符串数据
    jedis.set("key1", "value1");
    
    // 查看字符串数据
    jedis.get("key1");
    
    //插入列表数据
    jedis.lpush("key2", "value2_1");
    jedis.lpush("key2", "value2_2");
    
    //获取列表数据
    List<String> list = jedis.lrange("key2", 0, 2);
       

  目录