Redis组件介绍(四)

写在前面

今天继续学习后面的知识。

Redis 操作命令

操作 List 相关 API

  1. LPUSH

    • 说明: 将某个值加入到一个 key 列表的头部。当列表不存在时会创建。
    • 语法: LPUSH key value [value ...]
    • 返回值: 成功返回列表的元素个数,失败返回 0。
  2. LPUSHX

    • 说明: 与 LPUSH 类似,但必须保证 key 存在。
    • 语法: LPUSHX key value
    • 返回值: 成功返回列表的元素个数,失败返回 0。
  3. RPUSH

    • 说明: 将某个值加入到一个 key 列表的末尾。
    • 语法: RPUSH key value [value ...]
    • 返回值: 成功返回列表的元素个数,失败返回 0。
  4. RPUSHX

    • 说明: 与 RPUSH 类似,但必须保证 key 存在。
    • 语法: RPUSHX key value
    • 返回值: 成功返回列表的元素个数,失败返回 0。
  5. LPOP

    • 说明: 返回并移除列表左边的第一个元素。
    • 语法: LPOP key
    • 返回值: 被删除的元素。
  6. RPOP

    • 说明: 返回并移除列表右边的第一个元素。
    • 语法: RPOP key
    • 返回值: 被删除的元素。
  7. LRANGE

    • 说明: 获取指定下标区间内的元素。
    • 语法: LRANGE key start stop
    • 示例: LRANGE list 0 -1
  8. LLEN

    • 说明: 获取列表的元素个数。
    • 语法: LLEN key
  9. LSET

    • 说明: 设置指定索引的值,相当于修改这个位置的值。
    • 语法: LSET key index value
  10. LINDEX

    • 说明: 获取指定索引位置的元素。
    • 语法: LINDEX key index
  11. LREM

    • 说明: 删除列表中重复的元素,设置删几个,就会删几个。
    • 语法: LREM key count value
    • 说明: count 为删除的数量。
  12. LTRIM

    • 说明: 保留列表中特定区间内的元素,其他元素删除。
    • 语法: LTRIM key start stop
  13. LINSERT

    • 说明: 在某个元素之前或之后插入新元素。
    • 语法: LINSERT key before|after pivot value

操作 Set 相关 API

  1. SADD

    • 说明: 为集合添加元素。
    • 语法: SADD key member [member ...]
    • 返回值: 添加了的元素个数。
  2. SMEMBERS

    • 说明: 显示集合中的所有元素(无序)。
    • 语法: SMEMBERS key
  3. SCARD

    • 说明: 返回集合中元素的个数。
    • 语法: SCARD key
  4. SPOP

    • 说明: 随机返回并删除集合中的一个元素。
    • 语法: SPOP key
  5. SMOVE

    • 说明: 从一个集合中移动元素到另一个集合,必须是同种类型。
    • 语法: SMOVE source destination member
  6. SREM

    • 说明: 从集合中删除一个元素。
    • 语法: SREM key member [member ...]
    • 返回值: 删除的元素个数。
  7. SISMEMBER

    • 说明: 判断集合中是否含有某个元素。
    • 语法: SISMEMBER key member
    • 返回值: 存在返回 1,不存在返回 0。
  8. SRANDMEMBER

    • 说明: 随机返回集合中的元素,可以指定返回的个数。
    • 语法: SRANDMEMBER key [count]
  9. SDIFF

    • 说明: 去掉第一个集合中其它集合含有的相同元素。
    • 语法: SDIFF key [key ...]
  10. SINTER

    • 说明: 求集合的交集。
    • 语法: SINTER key [key ...]
  11. SUNION

    • 说明: 求集合的并集。
    • 语法: SUNION key [key ...]

操作 ZSet 相关 API

  1. ZADD

    • 说明: 添加有序集合元素。
    • 语法: ZADD key score member [score member ...]
    • 示例: ZADD zset 2 xiaohu 3 xiaohu2
  2. ZCARD

    • 说明: 返回有序集合的元素个数。
    • 语法: ZCARD key
  3. ZRANGE

    • 说明: 返回有序集合中指定范围的元素(升序)。
    • 语法: ZRANGE key start stop [WITHSCORES]
  4. ZREVRANGE

    • 说明: 返回有序集合中指定范围的元素(降序)。
    • 语法: ZREVRANGE key start stop [WITHSCORES]
  5. ZRANGEBYSCORE

    • 说明: 按照分数查找范围内的元素。
    • 语法: ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
    • 示例: ZRANGEBYSCORE zset 0 20 WITHSCORES LIMIT 0 2
  6. ZRANK

    • 说明: 返回指定成员的排名(升序)。
    • 语法: ZRANK key member
  7. ZREVRANK

    • 说明: 返回指定成员的排名(降序)。
    • 语法: ZREVRANK key member
  8. ZSCORE

    • 说明: 显示某个元素的分数。
    • 语法: ZSCORE key member
  9. ZREM

    • 说明: 移除指定成员。
    • 语法: ZREM key member [member ...]
  10. ZINCRBY

    • 说明: 给指定元素增加分数。
    • 语法: ZINCRBY key increment member
    • 说明: 如果需要减分,increment 可以是负数。

操作 Hash 相关 API

  1. HSET

    • 说明: 设置一个或多个 key/value 对。
    • 语法: HSET key field value [field value ...]
  2. HMSET

    • 说明: 设置多个 key/value 对。
    • 语法: HMSET key field value [field value ...]
  3. HSETNX

    • 说明: 设置一个不存在的 key 的值。
    • 语法: HSETNX key field value
    • 返回值: 设置成功返回 1,失败返回 0。
  4. HGET

    • 说明: 获取指定 key 对应的值。
    • 语法: HGET key field
  5. HGETALL

    • 说明: 获取所有 key/value 对。
    • 语法: HGETALL key
  6. HMGET

    • 说明: 获取多个 key 对应的值。
    • 语法: HMGET key field [field ...]
  7. HDEL

    • 说明: 删除指定的 key/value 对。
    • 语法: HDEL key field [field ...]
    • 返回值: 删除成功的个数。
  8. HEXISTS

    • 说明: 判断某个 key 是否存在。
    • 语法: HEXISTS key field
    • 返回值: 存在返回 1,不存在返回 0。
  9. HKEYS

    • 说明: 获取所有的 key。
    • 语法: HKEYS key
  10. HVALS

    • 说明: 获取所有的 value。
    • 语法: HVALS key
  11. HINCRBY

    • 说明: 为指定 key 对应的值进行加法运算(只能针对数值做运算)
    • 语法: HINCRBY key field increment
  12. HINCRBYFLOAT

    • 说明: 为指定 key 对应的值增加浮点数。
    • 语法: HINCRBYFLOAT key field increment

Redis 主从复制

主从复制架构

主从复制主要用于数据冗余备份,从节点用于数据同步,但无法自动处理主节点故障。

主从复制架构图

搭建主从复制

  1. 准备工作

    • 创建三个目录:master, node1, node2。
    • 拷贝 redis.conf 配置文件到各目录:
      cp redis-7.0.0/redis.conf ./master/
      cp redis-7.0.0/redis.conf ./node1/
      cp redis-7.0.0/redis.conf ./node2/
      
  2. 配置文件修改

    • master
      port 6379
      protected-mode no
      
    • node1
      port 6380
      protected-mode no
      replicaof <masterip> <masterport>  # 例如:replicaof 192.168.40.110 6379
      
    • node2
      port 6381
      protected-mode no
      replicaof <masterip> <masterport>  # 例如:replicaof 192.168.40.110 6379
      
  3. 启动 Redis 实例

    cd /usr/local/soft/bigdata/redis-install
    redis-server ./master/redis.conf
    redis-server ./node1/redis.conf
    redis-server ./node2/redis.conf