当前位置 博文首页 > 文章内容

    Redis-04-数据类型

    作者: 栏目:未分类 时间:2020-09-19 17:02:24

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    • 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 集合名 [开始 结束]