Redis

Redis

数据结构/命令

String

  • 特性

    • 长度最大为512m
    • 使用mset mget减少网络通讯次数
  • key键的设置规则

    • 命名格式
    • <>:<>:<>……
  • 命令

    • SET key value [EX seconds] [PX milliseconds] [NX 必须不存在|XX 必须存在]

      • Set 不加过期时间重新设置后 失效时间失效

      • SETEX

        • SET VALUE EX
      • SETNX

        • SET VALUE NX
      • PSETEX

        • SET VALUE PX
      • SETEX/SETNX/PSETEX 为原子操作同一时间完成 redis锁 避免死锁。成功时返回OK

    • GET key

      • Get 只能取字符串类型
    • TTL/PTTL 获取失效时间

      • TTL秒
      • PTTL毫秒
    • del 删除

    • mset key value [key value……]。原子性操作

    • MSETNX KEY VALUE [KEY VALUE……]

      • 只有所有键都不存在时才会设置成功 原子性操作
      • 成功返回1 不成功返回0
    • MGET key……

    • GETSET key value

      • 设置新值返回旧值
      • key不存在时返回nil
    • exists key……

      • 返回存在的个数
      • 不存在时返回0
    • expire key seconds

      • 为键值设置过期时间
    • INCR key

      • INCR 为目标键值加1 如果不能转换为数字则报错
      • 64位有符号数字. 001不能转换为数字
    • incrby key value

      • 同上incr value 为增量
    • Incrbyfloat key increment

      • 只保留小数点后17位
      • 增量亦只保存至后17位
    • decr key

      • 目标键值减1 如果不能转换为数字则报错
    • Decrby key value

      • 同decr value为变量
    • strlen key

      • 获取字符串长度,键值不存在时返回0
      • 计算文章长度
    • APPEND key value

      • 将value值追加到已有的值尾部
      • 日志存储
    • SETRANGE key offset value

      • 从目标位置开始替换字符串 数据为空时补零字节
    • GETRANGE KEY START END

      • 获取起始位置的字符串 , 不支持回绕
      • 文章预览功能

Hash

  • 特性

    • 键值对个数最多为2^32-1个,也就是4294967295个
  • 命令

    • HSET KEY FIELD VALUE [FIELD VALUE……].

      • 创建新field时返回1 覆盖旧值返回0.
      • 每秒处理7.5万请求 单个4ms
    • HSETNX KEY FIELD VALUE [FIELD VALUE……]

      • 设置成功返回1 给定域存在时返回0
    • HGET KEY FIELD

      • 获取field下值
    • HEXISTS KEY FIELD

      • field是否存在
    • HDEL KEY FIELD [field……]

      • 在Redis2.4以下的版本里, HDEL 每次只能删除单个域,如果你需要在一个原子时间内删除多个域,请将命令包含在 MULTI / EXEC 块内。
    • HGETALL

      • 获取 key对应的所有的field 和value
      • 按照插入顺序排列
    • HLEN key

      • 获取 hash 表下阈值的数量
    • HSTRLEN key field

      • 获取阈值对应数据的长度
    • HMSET KEY FIELD VALUE [FIELD VALUE……]

      • 每秒处理7.1 万请求。单个5ms。 4.0开始弃用。
    • HMGET key field……

      • 获取field 下的值
    • HKEYS key

      • 获取所有的field
    • HVALS key

      • 获取所有的值
    • HINCRBY KEY FIELD

      • 同string型
    • HINCRBYFLOAT KEY field increment

      • 同string型
    • HSCAN key cursor [MATCH pattern] [COUNT count]

      • 迭代哈希表中的键值对
      • cursor - 游标
      • pattern - 匹配的模式
      • count - 指定从数据集里返回多少元素,默认值为 10

list

  • 特性

    • 值可重复
    • 自然排列
    • list的元素个数最多为2^32-1个,也就是4294967295个
  • 命令

    • lpush key element……

      • 2.4 版本之前只能单个元素输入 原子操作
    • Lrange key start end

      • 数据逆序输出
    • Lpushx key value [value……]

      • 将数据插入list 表头。和lpush的区别在于list不存在时不做任何操作.
    • Rpush key element……

      • 将数据插入list右边
    • Rpushx key value

      • 将数据插入list右边,list不存在时,不进行插入
    • Lpop key

      • 移除头元素
    • Rpop key

      • 移除尾元素
    • Rpoplpush source Destination.

      • 将源队列队尾元素弹出插入目标队列队头。
      • 源队列与目标队列相同时,循环队列
    • lrem key count value

      • 移除 value元素。count >0从头开始。count=0删除所有 count<0从队尾开始
    • Llen key

      • 获取list的长度,如果目标键值不为list 则返回错误
    • lindex key index

      • 返回指定位置上的数据
    • Linsert key before|after pivot value

      • 子主题 1
    • Lset key index value

      • 替换目标位置值
    • Ltrim key start end

      • 保留区间范围内的数据
    • Blpop key [key……] timeout

      • 阻塞时弹出队列 直到key 中有数据可以弹出
      • 多个客户端设置时 按照先阻塞先服务
    • Brpop key [key……] timeout

      • 同blpop
    • bRpoplpush source Destination timeout

      • 阻塞时弹出队列

set

  • 特性

    • 元素个数最多为2^32-1个,也就是4294967295个
  • 命令

    • sadd key member [member……]

      • 子主题 1
    • Smenbers key

      • 获取set中所有的元素. 引起服务器阻塞
    • sismember key member

      • 判断value 值在不在set中
    • Spop key

      • 弹出一个随机元素
    • srandmember key count.

      • 随机返回元素,不删除set中的元素
    • srem key value

      • 返回被成功移除的元素数量
    • smove src destination value

      • 将源集合数据删除插入到目标集合
    • scard key

      • 返回集合中的基数
    • del key

      • 子主题 1
    • sscan

      • 子主题 1
    • sinter key [key……]

      • 获取集合的交集,共同好友,朋友圈的实现
    • sinterstore destination key [key……]

      • 将交集存储到目标集合中 直接覆盖
    • sunion key [key……]

      • 求并集
    • sunionstore destination key [key……]

      • 子主题 1
    • sdiff

      • 求差集
    • sdiffstore destination key [key……]

      • 子主题 1

zset

.

. 根据
zrangebylex key [|(min [|(max 成员分值相同的集合
zlexcount key min max. 成员分值相同的集合
zremrangebylex key min max 成员分值相同
zscan key couror [MATCH pattern] [COUNT count ]
zunionstore destination nums key [key……] [WEIGHTS index number] [AGGREGATE SUM|MIN|MAX]
zinterstore destination nums key [key……] [WEIGHTS index number] [AGGREGATE SUM|MIN|MAX]

  • 特性

  • 命令

    • zadd key [NK|XX] [CH] [INCR] score member [score member]

      • 子主题 1
    • zscore key value

      • 返回该value的score string型
    • zrange key start end [withscore]

      • 返回该有序集合
    • zincrby key incrment member

      • 子主题 1
    • zcard key

      • 子主题 1
    • zscan

      • 子主题 1
    • zcount key min max

      • 获取区间范围内符合的总数
    • zrevrange key start end [withscore]

      • 逆序
    • zrangebyscort key min max [withscore] [limit offset count].

      • min 和max 可以是-inf 或者+inf. (min (max 使用(符号为开区间
    • zrevrangebyscore

      • 子主题 1
    • zrank key value

      • 子主题 1
    • zrevrank key value

      • 子主题 1
    • zrem key member [member……]

      • 子主题 1
    • zremrangebyrank key start end

      • 子主题 1
    • zremrangebyscore key min max

      • 子主题 1
    • zrangebylex key min max [limit offset count]

    • 子主题 17

    • 子主题 18

HyperLogLog

Geo

Pub/Sub

BitMap

功能

数据库管理

自动过期

  • 过期策略

    • 定期删除

      • 定期删除,指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查是否过期,如果过期就删除

        • 实际上redis是每隔100ms就随机抽取一些key来检查和删除的。
    • 惰性删除

      • 惰性删除是指在你获取某个key的时候,redis会检查一下

        • 内存不够

          • 内存淘汰机制
  • 内存机制

    • 一写入就报错
    • 移除最近最少使用的key
    • 随机移除某个key
    • 设置过期时间
  • 淘汰机制

    • noeviction

      • 当内存不足以容纳新写入数据时,新写入操作会报错。这个一般很少用
    • allkeys-lru

      • 当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key,这个是最常用的。
    • allkeys-random

      • 当内存不足以容纳新写入数据时,在键空间中,随机移除某个key
    • volatile-lru

      • 当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。
    • volatile-random

      • 当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key。
    • volatile-ttl

      • 当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。

流水线

事务

Lua脚本

模块

发布与订阅

多机功能

  • 复制
  • Sentinel
  • 集群

底层存储

SDS

链表

字典

压缩列表

整数集合

客户端

Jedis

spring-boot-start-redis

持久化

rdb

aof

部署方式

集群

  • 读写分离

  • redis主从方式部署

    • 全量同步

    • 增量同步

      • 全量同步完成后主服务器写后同步执行写命令
        多个从服务器同时同步请求会导致io大增
  • redis哨兵

    • 类似于zookeeper的监控选举机制
  • redis自带集群

    • Redis集群并不支持处理多个keys的命令
    • 三主三从

XMind - Trial Version

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dave_Fong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值