首页 > 其他 > 详细

Redis-04-数据类型

时间:2020-09-19 17:52:40      阅读:31      评论:0      收藏:0      [点我收藏+]
  • RedisKey基本命令

    • # 查看所有属性名
      keys *

      技术分享图片

    • # 设置属性的过期时间,应用场景:单点登录、热点数据、过期时间
      expire 属性名 时间(以秒为单位)
      # 查看属性剩余时间
      ttl 属性名

      技术分享图片

    • # 查看属性类型
      type 属性名

      技术分享图片

    • 其他命令的学习可以查看官方文档

 

1、String,字符串

    • # 设置值
      set 属性名 属性值
      # 设置值的同时设置过期时间
      setex 属性名 过期时间 属性值
      # 设置值,如果该值不存在创建成功,如果该值存在,创建失败(分布式锁时常用)
      setnx 属性名 属性值
      # 批量设置多个值
      mset 属性名 属性值 属性名 属性值 属性名 属性值 ......
      # 批量设置多个值,如果其中有一个属性已经存在,则所有值都设置失败
      msetnx 属性名 属性值 属性名 属性值 属性名 属性值 ......
      # 设置对象,值为json字符串
      set 对象名 {属性名:属性值,属性名:属性值,属性名:属性值......}
      set 对象名:属性名 属性值
      #获取属性的值后修改属性值
      getset 属性名 属性值

    技术分享图片

    技术分享图片

    • # 查询属性值
      get 属性名
      # 批量查询属性值
      mget 属性名 属性名 ......
      # 查询对象的属性值
      get 对象名:属性名 对象名:属性名 ......
      mget 对象名:属性名 对象名:属性名 ......
    • # 查询属性值的长度
      strlen 属性名

    技术分享图片

    • # 从当前数据库中移除该值
      move 属性名 当前数据库号

    技术分享图片

  • 改、替换

    • # 替换字符串,从初始字符值开始替换字符
      getrange 属性名 初始字符值 替换字符

    技术分享图片

  • 追加

    • # 在字符的尾部追加字符,返回的是新字符的长度,如果该属性不存在,相当于新建一个属性
      append 属性名 属性值

      技术分享图片

  • 截取

    • # 截取字符串,不改变原属性值,结尾字符值为-1时,截取到最后一个字符
      getrange 属性名 初始字符值 结尾字符值

    技术分享图片

  • 判断是否存在

    • # 判读某个列是否存在,返回1,表明该值存在,返回0,表明该值不存在
      exists 属性名

      技术分享图片

  • 自增、自减、步长

    • # 加1操作
      incr 属性名
      # 减1操作
      decr 属性名
      # 设置步长
       # 增加
      incrby 属性名 步长
       # 减少
      decrby 属性名 步长

    技术分享图片

  • 应用场景

    • 计数器

    • 统计数量

    • 对象缓存存储

 

2、List,列表

    • # 在列表的头部设置值
      lpush 列表名 列表值
      lpush 列表名 列表值1 列表值2 列表值3 ......
      # 在列表的尾部设置值
      rpush 列表名 列表值
      rpush 列表名 列表值1 列表值2 列表值3 ......
      # 把列表中的最后一个值弹出,并把该值放到新的列表中
      rpoplpush 原列表 新列表

    技术分享图片

    • # 获取列表的值
      lrange 列表名
      # 获取指定下标的值
      lindex 列表名 下标
      # 查询列表长度
      llen 列表名

    技术分享图片

  • 改、替换

    • # 更新列表中指定下标的值,列表或者下标不存在,报错
      lset 列表名 下标 值

    技术分享图片

    • # 删除列表中的第一个元素
      lpop 列表名
      # 删除列表中的最后一个元素
      rpop 列表名
      # 删除指定的值,如果有重复值,可以指定移除几个
      lrem 列表名 个数 列表值

    技术分享图片

    技术分享图片

  • 插入

    • # 在列表中的某一个元素之前或之后插入值
      linsert 列表名 before或after 被插入的元素值 要插入的元素值

    技术分享图片

  • 截断

    • # 截断列表,会改变列表中的值
      ltrim 列表名 初始下标 结束下标

    技术分享图片

  • 判断是否存在

    • # 判断列表是否存在
      exists 列表名

    技术分享图片

  • 应用场景

    • 队列

 

3、Set,不可重复的集合

    • # 设置值
      sadd 集合名 集合值

    技术分享图片

    • # 查看集合值
      smembers 集合名
      # 查询集合的长度
      scard 集合名
      # 随机查询集合中的某一个值
      srandmember 集合名
      # 随机查询集合中的某几个值
      srandmember 集合名 个数

    技术分享图片

    • # 删除集合中的某个元素
      srem 集合名 值
      # 随机删除集合中的某一个值
      spop 集合名

    技术分享图片

  • 移动

    • # 移动集合1中的某个值到另外一个集合2
      smove 集合1 集合2 值

    技术分享图片

  • 判断是否存在

    • # 判断某个值是否存在集合中
      sismembers 集合名 值

    技术分享图片

  • 差集、交集、并集

    • # 集合A - 集合B
      sdiff A B
      # 集合A ∩ 集合B
      sinter A B
      # 集合A ∪ 集合B
      sunion A B

    技术分享图片

  • 应用场景

    • 共同关注

    • 推荐好友

 

4、Hash,哈希表,key-value

    • # 设置一个值
      hset 哈希表名 字段名 字段值
      # 批量设置值
      hmset 哈希表名 字段名1 字段值 字段名2 字段值 ......
      # 新增一个值,如果已经存在该值,则新增失败
      hsetnx 哈希表名 字段名 字段值

    技术分享图片

    • # 查询字段值
      hget 哈希表名 字段名
      # 批量查询值
      hmget 哈希表名 字段名1 字段名2 ......
      # 查询哈希表全部的字段名和值
      hgetall 哈希表名
      # 只查询哈希表中的所有字段
      hkeys 哈希表名
      # 只查询哈希表中的所有字段值
      hvals 哈希表名
      # 查询哈希表的长度
      hlen 哈希表名

    技术分享图片

    • # 删除哈希表中的某一个字段
      hdel 哈希表名 字段名

    技术分享图片

  • 增量、减量

    • # 增加字段值
      hincrby 哈希表名 字段名 增量
      # 删除字段值incr
      hincrby 哈希表名 字段名 减量(负值)

    技术分享图片

  • 判断是否存在

    • # 判断哈希表中的某个字段是否存在
      hexists 哈希表名 字段名

    技术分享图片

  • 应用场景

    • 本质和String很相似,Hash适合做对象的存储,String适合做字符串的存储

    • 适合存储对象或者易变动的信息

 

5、ZSet、有序集合

    • # 增加一个值
      zadd 集合名 序号 集合值
      # 增加多个值
      zadd 集合名 序号 集合值 序号 集合值 ......

    技术分享图片

    • # 查看集合中的所有元素
      zrange 集合名 0 -1
      # 查看集合中的元素个数
      zcard 集合名
      # 查询某一个区间的值的个数
      zcount 集合名 最小值 最大值

    技术分享图片

    • # 移除集合中的某个元素
      zrem 集合名 集合值

    技术分享图片

  • 排序

    • # 升序语法:zrangebyscore 集合名 最小值 最大值 [显示key] [限制个数]
      zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
      ?
      # 从小到大排序,只显示value
      zrangebyscore 集合名 -inf +inf
      # 从小到大排序,显示key和value
      zrangebyscore 集合名 -inf +inf withscores
      ?
      # 降序语法:zrevrange key start stop [WITHSCORES]
      zrevrange 集合名 开始值 结束值 [WITHSCORES]

    技术分享图片

  • 应用场景

    • 排序

    • 排行榜

    • 带权重执行操作

 

6、Geospatial,地理位置

原理:底层是Zset,所以可以用Zset的命令操作Geo

官方文档https://www.redis.net.cn/order/3685.html

  • 添加地理位置,geoadd

    • # 语法:geoadd key longitude latitude member
      # 有效的经度从-180度到180度,有效的纬度从-85.05112878度到85.05112878度
      geoadd 集合名 经度 纬度 名称 [经度 纬度 名称 ......]

    技术分享图片

  • 查询地理位置,geopos

    • # 语法:geopos key member [member ...]
      geopos 集合名 集合值 [集合值 ......]

    技术分享图片

  • 查询距离,geodist

    • # 语法:geodist key member1 member2 [m|km|ft|mi]
      geodist 集合名 元素1 元素 2 [里程单位]

    技术分享图片

  • 附近的人,以指定位置为中心,georadius

    • # 语法:georadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC]
      ?
      georadius 集合名 经度 维度 半径 里程单位 [经纬度位置] [距离] [距离hash表示] [count 个数] [递增|递减]
      ?
      # 根据 指定位置 的距离半径查询附近的人
      georadius 集合名 经度 维度 半径 里程单位
      # 根据 指定位置 的距离半径查询附近的人,以及直线距离
      georadius 集合名 经度 维度 半径 里程单位 WITHDIST
      # 根据 指定位置 的距离半径查询附近的人,以及直线距离哈希表示
      georadius 集合名 经度 维度 半径 里程单位 WITHHASH
      # 根据 指定位置 的距离半径查询附近的人,以及定位
      georadius 集合名 经度 维度 半径 里程单位 WITHCOORD
      # 根据 指定位置 的距离半径查询附近的人,并限制人数
      georadius 集合名 经度 维度 半径 里程单位 COUNT 个数

    技术分享图片

    技术分享图片

  • 附近的人,以集合中存在的元素为中心,georadiusbymember

    • # 语法:georadiusbymember key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC]
      ?
      georadiusbymember 集合名 元素 半径 里程单位 [经纬度位置] [距离] [距离hash表示] [count 个数] [递增|递减]
      ?
      # 根据 集合中的元素 的距离半径查询附近的人
      georadiusbymember 集合名 元素 半径 里程单位
      # 根据 集合中的元素 的距离半径查询附近的人,以及直线距离
      georadiusbymember 集合名 元素 半径 里程单位 WITHDIST
      # 根据 集合中的元素 的距离半径查询附近的人,以及直线距离哈希表示
      georadiusbymember 集合名 元素 半径 里程单位 WITHHASH
      # 根据 集合中的元素 的距离半径查询附近的人,以及定位
      georadiusbymember 集合名 元素 半径 里程单位 WITHCOORD
      # 根据 集合中的元素 的距离半径查询附近的人,并限制人数
      georadiusbymember 集合名 元素 半径 里程单位 COUNT 个数

    技术分享图片

  • 查询距离,距离用编码显示,geohash

    • # 语法:geohash key member [member ...]
      geohash 集合名 元素1 [元素2 ......]

    技术分享图片

 

7、HyperLogLog,计数

  • 应用场景

    • 网站访问量统计

    • # 语法:pfadd key element [element ...]
      pfadd 集合名 元素 [元素 ......]
  • 统计

    • # 语法:pfcount key [key ...]
      pfcount 集合 [集合 ......]
  • 合并

    • # 语法:pfmerge destkey sourcekey [sourcekey ...]
      pfmerge 目标集合 原集合 [原集合 ......]

    技术分享图片

 

8、BitMap,位运算场景

  • 应用场景

    • 存储结果为是或否的数据,如:是否打卡、是否登录、是否为活跃用户......

  • 设置值

    • # 语法:setbit key offset value
      setbit 集合名 位标志 值
  • 获得值

    • # 语法:getbit key offset
      getbit 集合名 位标志
  • 统计值

    • # 语法:bitcount key [start end]
      bitcount 集合名 [开始 结束]

    技术分享图片

Redis-04-数据类型

原文:https://www.cnblogs.com/LittleSkinny/p/13696838.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!