首页 > 数据库 >Redis的数据类型

Redis的数据类型

时间:2024-07-06 14:30:13浏览次数:9  
标签:... set 数据类型 Redis 语法 例子 key 格式

1、五种常见的数据类型

              String

                        String类型的三种格式

                                字符串

                                int

                                float

                             注意:字符串类型的最大空间不能超过512m   

                         String类型常见的命令  

                                 SET:添加或者修改已经存在的一个String类型的键值对

语法格式:

         set key value 

                例子: set name tian

                                 GET:根据key获取String类型的value

语法格式

         get key

               例子 > get name
                           "tian"

                                 MSET:批量添加多个String类型的键值对

语法格式

         mset key value [key value ...] 

                例子>mset age 12 add 河南

                                 MGET:根据多个key获取对应的String类型的value

语法格式

        mget key [key ...]

        例子>mget age add
                1) "12"
                2) "河南"

                                 INCR:让一个整型的key自增1

语法格式 

        incr key

            例子>incr age
                     13

                                 INCRBY:让一个整形的key自增并指定步长

语法格式

        incrby key increment

                例子> incrby age 2
                           15

                                 INCRBYFLOAT:让一个浮点类型的数字自增并指定步长

语法格式

        incrbyfloat key increment

               例子>incrbyfloat money 1
                        11

                                SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行 【使用场景:分布式锁】

语法格式

         setnx key value

                例子> setnx a 123
                          1

                                SETEX:添加一个String类型的键值对,并且指定有效期

语法格式

         setex key seconds value
               例子> setex b 10 123 
                          OK

 10秒之后会自动删除b

                        使用场景

                                 计数功能,验证码存储,分布式锁等等

              Hash

                     以键值对的方式设置数据,值的内容是hash数据。hash对应java中的map集合。

                     常用命令   

                             hset: 设置单个键值对

语法格式

                 hset key field value  key代表着对象 field代表属性 value代表属性值 

                例子> hset userInfo name tian
                           1

                             hget:  获取单个键对应的值

语法格式

                 hget key field

                例子> hget userInfo name
                           tian

                             hmset: 批量设置键值对

语法格式

         hmset key field value [field value ...]

         例子>hmset userInfo age 23 address 河南
                   OK

                

                              hmget:批量获取键值对

语法格式

         hmget key field [field ...]

        例子> hmget userInfo name age address 
                   tian
                   23
                   河南

                              hgetall:  获取某个键的所有键值对数据

语法格式

         hgetall key
        例子>hgetall userInfo
                name
                tian
                age
                23
                address
                河南

                              hdel:  删除某个键值对数据

语法格式        

         hdel key field [field ...]
        例子> hdel userInfo address
                  1

                              hkeys: 获取所有的键

语法格式

        hkeys key
        例子> hkeys userInfo
                   name
                   age

                               hvals: 获取所有的值

语法格式

        hvals key
        例子> hvals userInfo
                tian
                23

                               hlen: 获取键值对的个数

语法格式

        hlen key
        例子> hlen userInfo
                  2

                                del键: 删除redis键数据

语法格式

         del key [key ...]
         例子> del userInfo
                      1

                       使用场景 

                                用来存储各种资源信息。如:用户信息,部门信息,订单信息等等

       

              List

                     以键值对方式存储数据,值的部分是一个list列表。值允许重复,数据可以通过索引来获取。

                      常见的命令  

                                lpush:从左边添加数据

语法格式

        lpush key value [value ...]

        例子>lpush userInfo 1 2 3
                  3

                                rpush:从右边添加数据

语法格式

        rpush key value [value ...]
        例子>rpush userInfo 4 5 6
                  6

                                lpop:从左边弹出数据

语法格式

         lpop key

         例子> lpop userInfo        
                    3

                                rpop:从右边弹出数据

语法格式

         rpop key

         例子> rpop userInfo        
                    6

                                llen:返回列表长度

语法格式

         llen key

         例子> llen userInfo        
                    4

                                lindex:返回列表中指定索引位置的数据【索引为-1,表示获取最后一个值】

语法格式

         lindex key index
         例子> lindex userInfo 2
                    4

                      使用场景  

                           存储各种列表。如:粉丝列表,主播列表,消息列表等等

              Set

                        以键值对方式存储。值的部分是一个set集合。值没有次序,不允许重复

                        常用命令

                                sadd:以特定键添加一组set数据

语法格式

        sadd key member [member ...]
        例子>sadd car 12
                 1

                                srem:删除特定数据

语法格式

         srem key member [member ...]
          例子>srem car 12
                    1

                                smembers:返回set中的所有元素

语法格式

         smembers key

         例子> smembers car
                        12
                        14
                        15

                        18

                                sismember:测试set中是否存在某个值

语法格式

        sismember key member

        例子> sismember car 10
                   0  //不存在
                > sismember car 12
                    1  //存在

                                scard:返回set中值的个数

语法格式

        scard key
        例子>scard car
                  4

                                spop:随机弹出(删除)一个或多个值

语法格式

         spop key [count]

         例子> spop car  //count不写默认是1 随机弹出一个
                    18   

         例子>spop car 2 //随机弹出两个值
                  15
                   12

                                srandmembeer:随机返回set中的值

语法格式

         srandmember key [count]

         例子> srandmember car //count不写默认是1 随机返回一个
                    14

         例子>srandmember car 2  随机返回两个值
                 14
                  4

                                sinter:求两个或多个set的交集

语法格式

        sinter key [key ...]

        例子>sinter car car2
                        2
                        3
                        4

                                sinterstore:将一个set的值或多个交集的结果,存储到另一个 set中

语法格式

         sinterstore destination key [key ...]

         例子>sinterstore car4 car  //将car中所有的值存储导car4中
                       4

         例子>  sinterstore car3 car car2 //将两个set交集的结果,存储到另一个 set中
                        3

                        使用场景 

                                存储不重复元素,求多个集合交集。如:共同爱好,共同粉丝等等

              SortedSet

                          以键值对方式添加数据,值的部分是set,但是每个set元素都要指定一个分数(权重\小数)  不允许重复,按照权重排序

                         常用命令

                                zadd:添加一组set数据

语法格式   

           zadd key [NX|XX] [CH] [INCR] score member [score member ...]

           例子> zadd score 12 tian 100 run 
                     2

                                zrem:删除一个数据

语法格式

          zrem key member [member ...]
          例子> zrem score tian
                        1         

                                zcard:统计元素个数

语法格式

        zcard key

        例子>  zcard score
                        1 

                                zcount:统计某个范围(分数)的元素个数

 语法格式

          zcount key min max

          例子> zcount cat 1 3
                    2

                                zrangebyscore:返回指定分数范围的元素内容

语法格式

        zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

        例子> zrangebyscore cat 1 3
                   1

                               zrange:返回有序集key中,在指定区间内的成员。其中成员的位置按score值从小到大来排序。具有相同score值的成员按字典序来排序。

语法格式

          zrange key start stop [WITHSCORES]
          例子>   zrange cat 1 3
                        3
                        5

                                zscore:返回指定键的分数

语法格式

        zscore key member
        例子>  zscore score run
                   100

                         使用场景       

                                排行榜、弹幕消息、地理位置相关的等等

2、三种特殊的数据类型

             GEO

                     基于sorted set数据结构实现的,利用geohash算法将经度和纬度编码为二进制字符串,并作为sorted set的score值

                   常用命令

                          geoadd:将一个或多个地理空间位置(经度、纬度、名称)添加到指定的key中

语法格式

        geoadd key longitude latitude member [longitude latitude member ...]

        例子> geoadd  coordinate  112.42  34.16  "河南"
                   1

longitude经度 【取值范围在-180~180】

latiude纬度     【取值范围-85.05112878~85.05112878】

                          geopos:返回一个或多个地理空间位置的经度和纬度

语法格式

        geopos key member [member ...]
        例子> geopos coordinate "河南"
                  112.41999775171279907
                  34.15999982501106302

                          geodist:返回两个地理空间位置之间的距离,可以指定单位(m,km,mi,ft) 

语法格式

         geodist key member1 member2 [unit]      【unit值有m、km、ft(英尺)、mi(英里) 】

         例子> geodist coordinate "河南" "洛阳"  【默认是m】
                        206080.3684

                >geodist coordinate "河南" "洛阳" km
                        206.0804

                          georadius:返回指定圆心和半径内的地理空间位置,可以指定返回坐标、距离、哈希值、数量、排序方式等,也可以将结果存储到另一个key中

语法格式

        georadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST]                 [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
         例子>georadius coordinate 115 34 400 km  【不带参数的只返回属性】
                        洛阳
                        河南

          例子> georadius coordinate 115 34 400 km withcoord  【withcoord参数表示查询的数据带有经度和纬度】
                        洛阳
                        112.1600005030632019
                        32.32000011046604726
                        河南
                        112.41999775171279907
                        34.15999982501106302

            例子>georadius coordinate 115 34 400 km withdist  【withdist参数表示到该坐标的距离】
                        洛阳
                        323.7739
                        河南
                        238.3386

            例子>   georadius coordinate 115 34 400 km withhash  【withhash 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。】
                         洛阳
                        4040354143677915
                        河南
                        4040687585057773
 

  • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。
  • WITHCOORD: 将位置元素的经度和纬度也一并返回。
  • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
  • COUNT 限定返回的记录数。
  • ASC: 查找结果根据距离从近到远排序。
  • DESC: 查找结果根据从远到近排序。

                         geohash:保存地理坐标

语法格式

        geohash key member [member ...]
        例子>geohash coordinate "洛阳"
                  wmxzb78mtk0

                          georadiusbymember:返回指定成员为圆心的指定半径内的地理空间位置,可以指定返回坐标、距离、哈希值、数量、排序方式等,也可以将结果存储到另一个key中           

语法格式

         georadiusbymember key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
        例子>georadiusbymember coordinate "洛阳"  300 km 【找出以洛阳 为中心半径300km范围的城市】
                洛阳
                河南

                   使用场景     

                        地理位置搜索、分析和展示。如地图应用、导航应用、位置服务应用等

                        统计某个区域内的商家或用户数量

                        查询某个位置附近的餐馆或酒店

                        计算两个位置之间的距离或行驶时间

                        显示某个位置周围的景点或活动

             BitMap  

                        bitmap类型的底层实现是SDS(simple dynamic string)和String类型相同,只是在操作时会将每个字节拆分成8个二进制位,是一种独特的String类型,它可以将一个String类型的值看做是一个由二进制组成的数组。一个bitmap类型的键最多可以存储2^32-1

                        常用命令

                                setbit 设置或清除指定偏移量上的位(bit)

语法格式

        setbit key offset value
        例子> setbit  activeCount 1 0
                        1

                                 getbit  获取二进制串某一位上面的value

语法格式

           getbit key offset

         例子>getbit  activeCount 1
                    0

                                bitop 主要对多个对应key的二进制串的值做and,or,xor, not操作

语法格式       

             bitop operation destkey key [key ...]     【operation :and、or、xor、not】

             例子>  bitop and sum activeCount activeCount1
                        1

                                 bitcount 统计某一个二进制串里面1的个数

语法格式

        bitcount key [start end]
        例子> bitcount sum 0 3
                   0

                                bitpos 用来查询一个二进制串里第一个0或者1的位置。

 语法格式

         bitpos key bit [start] [end]
         例子>bitpos  sum 0 1 3
                  -1

                        应用场景

                                统计用户活跃度,利用setbit和bitcount命令实现每天或每个月用户登录次数的统计

                                实现布隆过滤器,利用setbit和getbit命令实现快速判断一个元素是否存在于一个集合中

                                实现位图索引,利用bitop和bitpos命令实现对多个条件进行位运算和定位

                                设置黑白名单

             HyperLog

                        HyperLog是用来做基数统计的算法。优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的

                        常用命令

                                pfadd 添加指定元素到HyperLog

语法格式

        pfadd key element [element ...]
        例子> pfadd runoobkey redis
                        1

        例子>pfadd runoobkey mongodb mysql
                        1

                                pfcount 返回给定HyperLog的基数估算值

语法格式

         pfcount key [key ...]

        例子> pfcount runoobkey
                        3

                                pfmerge 将多个HyperLog合并为一个

语法格式

        pfmerge destkey sourcekey [sourcekey ...]
        例子> pfmerge runnoobkey2 runnoobkey runnoobkey1
                        OK

                应用场景

                        基数统计

标签:...,set,数据类型,Redis,语法,例子,key,格式
From: https://blog.csdn.net/qq_58076226/article/details/140104844

相关文章

  • 深入刨析Redis存储技术设计艺术(一)
    一、RedisObject1.1、Redis数据存储1.2、RedisObject的数据结构redis的value都封装在redisObject中redisObject的底层实现:redisObject的数据结构如下:server.htypedefstructredisObject{ unsignedtype:4; unsignedencoding:4; unsignedlru......
  • Oracle PL / SQL INTERVAL数据类型
    INTERVALYEARTOMONTH数据类型INTERVALYEARTOMONTH存储和操作年和月的间隔。语法是:INTERVALYEAR[(precision)]TOMONTHprecision指定“years”字段中的数字位数。我们必须在0..4的范围内使用整数字面值。默认值为2。以下代码显示如何将字面值分配到INTERVALY......
  • Redis 清理日志文件的策略
    目录Redis清理日志文件的策略1.Redis日志文件2.日志清理策略定期归档压缩归档文件设置日志文件大小限制注意事项结论Redis清理日志文件的策略在使用Redis时,日志文件可能会不断增长,占用磁盘空间。为了保持良好的系统性能和合理利用磁盘空间,我们需要实施一定的......
  • Redis怎么删除某个目录下的数据
    目录Redis怎么删除某个目录下的数据介绍步骤步骤1:连接到Redis步骤2:列出目录下的所有键步骤3:删除目录下的所有键步骤4:验证数据是否删除成功总结Redis怎么删除某个目录下的数据介绍在使用Redis进行缓存或数据存储时,有时候我们需要删除特定目录下的数据。本......
  • python实验二 数据类型、表达式及语句
    一、实验目的1.会使用Pycharm编辑器编写简单数据类型;2.掌握常量、变量的表示方式和简单操作;3.掌握Python语言中基本的输入和输出方法;4.掌握Python语言的各种运算符以及这些运算符的表达式;5.掌握字符串类型的格式化方法;6.能综合应用所学基础知识编写一些基本的程序。二、......
  • redis7.2 安装部署
    #redis7.2安装部署https://redis.io/download/https://github.com/redis/redis/tree/7.2wgethttps://github.com/redis/redis/archive/7.2.3.tar.gzredis-7.2.3]#yum-yinstallgccgcc-c++systemd-develuseraddredis-s/sbin/nologin-M#编译,生成system......
  • 面试必会之Redis篇
    01-你们项目中哪里用到了Redis?在我们的项目中很多地方都用到了Redis,Redis在我们的项目中主要有三个作用:使用Redis做热点数据缓存/接口数据缓存使用Redis存储一些业务数据,例如:验证码,用户信息,用户行为数据,数据计算结果,排行榜数据等使用Redis实现分布......
  • Redis 7.x 系列【19】管道
    有道无术,术尚可求,有术无道,止于术。本系列Redis版本7.2.5源码地址:https://gitee.com/pearl-organization/study-redis-demo文章目录1.往返时间2.管道技术3.代码演示4.其他批处理4.1原生批处理命令4.2事务4.3脚本1.往返时间官方文档Redis是一种基......
  • 安装Redis出现的问题
    当我使用brew下载redis时系统:macOS14$brewinstallredis报错信息:Error:git:unknownorunsupportedmacOSversion::dunnoError:'git'mustbeinstalledandinyourPATH!Warning:YouareusingmacOS14.Wedonotprovidesupportforthispre-releaseve......
  • Redis快速上手
    Redis检查Redis是否安装$redis-server--versionRedisserverv=7.2.4sha=00000000:0malloc=libcbits=64build=2d86b7859915655e如果成功安装,则会显示Redis的版本号。启动RedisMac:终端输入:$redis-serverWin:终端输入:$redis-server.exe启动后显示版本号和端口......