redis中文官网

主要内容:

  • Redis数据结构
  • Redis通用命令
  • String类型
  • Hash类型
  • List类型
  • Set类型
  • SortedSet类型

(一)Redis数据结构

Redis自身是一个Map,采用key:value的形式存储
数据类型指的是存储的数据的类型,也就是value的类型;key一般是String类型,value类型如下:
在这里插入图片描述

(二)Redis通用命令

  1. 查询符合条件的所有key
KEYS  pattern    # 示例: keys b*   - -查询以b开头的key

* 匹配任意数量的任意字符
? 匹配一个任意字符
[] 匹配一个指定字符

  1. 删除一个指定的key
DEL key  
  1. key是否存在
EXISTS key
  1. key类型
type key
  1. 设置过期时间
EXPIRE key seconds      #  示例: expire age 10
  1. 查询key过期剩余时间
TTL key	    # -1永久有效   -2已删除
  1. 清空数据
DBSIZE  返回当前数据里面keys的数量
FLUSHDB  清空当前数据库里面的所有数据
FLUSHALL   清空所有数据库里面的所有数据
  1. 帮助性命令
help 命令名称
help @组名
  1. 退出命令
quit
exit

(三)string类型

一个存储空间存储一个数据。通常使用字符串,如果字符串以整形的形式存入,可作为数字进行操作。
在这里插入图片描述

(1)基本操作

命令:

  • 添加/修改数据 :set key vlaue
  • 获取数据 :get key
  • 添加/修改多个数据 :mset key1 value1 key2 value2 …
  • 获取多个数据 :mget key1 key2 …
  • 将给定 key 的值设为 value ,并返回 key 的旧值(old value): getset key value
  • 追加信息(如果原始数据存在就追加,否则新建):append key value
  • 添加键值对,前提这个key不存在,否则不执行:setnx name xxx
  • 获取字符串长度(个数):strlen key
  • 返回 key 中的子字符: getrange key start end
  • 删除数据 :del key

示例:
在这里插入图片描述
在这里插入图片描述

说明:set 和mset选择
在这里插入图片描述
具体使用set 还是mset根据实际情况分析:比如一亿条数据,如果使用mset,会进程阻塞,一直等这个操作,拆分100万一条,份100次发送。如果只有5条数据,就用mset,节省时间。

(2)拓展操作

  • 设置数值数据增加
    incr key 默认加1
    incrby key value
    incrbyfloat key value

  • 设置数值数据减少
    decr key 默认减1
    decrby key value

  • 设置数据具有指定的生命周期
    setex key seconds vlaue
    psetex key milliseconds value

在这里插入图片描述在这里插入图片描述
key的设置约定:
项目名:业务名:类型:id

(四)hash类型

  • 新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用 存储对象信息
  • 需要的存储结构:一个存储空间保存多个键值对
  • hash类型:底层使用哈希表结构存储数据

在这里插入图片描述
hash存储结构优化: 如果field数量较少,存储结构优化为类数组结构;如果field数量较多,存储结构使用HashMap结构。

(1)基本操作

命令

  • 添加/修改数据 :hset key field vlaue
  • 获取数据 :①hget key field ----- ②hgetall key
  • 添加/修改多个数据 :hmset key field1 value1 field2 value2 …
  • 获取多个数据 :hmget key field1 field2 …
  • 获取哈希表中字段的数量:hlen key
  • 删除数据 :hdel key field

(2)拓展操作

  • 获取哈希表中是否存在指定的字段 : hexists key filed
  • 获取哈希表中所有的字段名或字段值:① hkeys key ----- ② hvals key
    在这里插入图片描述
  • 为哈希表 key 中的指定字段的整数值加上增量 increment : hincrby key field increment
  • 为哈希表 key 中的指定字段的浮点数值加上增量 increment : hincrbyfloat key field increment
  • 添加一个hash类型的key的field值,前提field不存在,否则不执行:hsetnx

(五)List操作

与java中的LinkedList类似,可以看做是一个双向链表结构,既支持正向检索也可以反向检索。

特征:

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般

(1)操作

  1. 新增或修改
    将一个或多个值插入到列表左侧: lpush key value1 value2…
    将一个或多个值插入到列表右侧: rpush key value1 value2…
  2. 获取数据
    获取列表指定范围内的元素:lrange key start end
    通过索引获取列表中的元素: lindex key index
    获取列表长度: llen key
  3. 移除
    移出并获取列表的第一个元素: lpop key
    移除列表的最后一个元素: rpop key
  4. 规定时间内移除
    blpop key1 [key2] timeout
    brpop key1 [key2] timeout
  5. 拓展
    移除列表元素:lrem key count value
    将一个值插入到已存在的列表头部: lpushx key value1

在这里插入图片描述
在这里插入图片描述

(2)注意事项

在这里插入图片描述

(六)Set操作

特性:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

在这里插入图片描述
在这里插入图片描述

(1)操作

  1. 添加数据
    sadd key member1 [member2]…
  2. 查看数据
    smembers key
  3. 删除数据
    srem key member1 [member2]…
  4. 获取数据总量
    scard key
  5. 判断集合中是否包含该数据
    sismember key member
  6. 随机获取集合指定数量的数据
    srandmember key count
  7. 随机获取集合中的一个元素并移除
    spop key [count]
  8. 两个集合的交集、并集、差集
    sinter key1 key2… 交集
    sunion key1 key2… 并集
    sdiff key1 key2… 差集
  9. 两个集合的交集、并集、差集,并存储到指定集合中
    sinterstore destination key1 key2… 交集
    sunionstore destination key1 key2… 并集
    sdiffstore destination key1 key2… 差集
  10. 将指定数据从原始集合中移动到目标集合中
    smove source destination

(2)注意事项

在这里插入图片描述

(七) Sorted_set操作

底层实现是一个跳表SkipList加hash表。
特性:

  • 可排序
  • 元素不重复
  • 查询速度快

在这里插入图片描述

在这里插入图片描述

(1)操作

  1. 添加数据
zadd  key score1  member1 [score2  member2]...
  1. 删除数据
zrem key member1 [member2]...
  1. 获取指定元素的score和排名
zscore key member  #score
zrank key member   #排名
  1. 获取元素个数
zcard key   # 获取所有元素个数
zcount key min max   #统计score范围内的元素个数
  1. 获取指定范围内的元素
zrange key start stop   # 按照score排序后,获取指定排名范围内的元素
zrangebyscore key start stop  # 按照score排序后,获取指定score范围内的元素
  1. 两个集合的交集、并集、差集
  zinter   key1 key2...    交集
  zunion key1 key2...    并集
  zdiff     key1  key2...    差集
  1. 两个集合的交集、并集、差集,并存储到指定集合中
  zinterstore   destination keys   key1 key2...    交集
  zunionstore destination  keys  key1 key2...    并集
  zdiffstore     destination   key1 key2...    差集
  1. 自增
zincrby key increment member

(2)注意事项

降序则在命令的z后面加rev即可,如:zrevrange key start stop
在这里插入图片描述

(六)综合案例

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐