zoukankan      html  css  js  c++  java
  • Redis五大数据类型

    首先说明下,Redis是:单线程+多路IO复用技术!!!

           string

           set

     》  key  +   zset

                  list

           hash

           

    常用的几个命令:

      》keys *  查询当前库所有的key

      》exists <key> 判断某个键是否存在,存在返回1,不存在返回0

      》type <key>    返回键的类型

      》del <key>      删除指定的键和值

      》expire <key> <seconds>  为键设置过期时间,单位秒。   例子,手机验证码90秒过期。

      》ttl <key>    查看还有多少秒过期,-1表示永不过期,-2表示已经过期。

      》dbsize    查看当前库键的数量。

      》flushdb      清空当前库,谨慎操作,一般不用。

      》flushall    清空所有库 

    String类型

      》redis最基本的数据类型,一个key对应一个value。

      》string是二进制安全的,所以可以存放任何数据,例如图片、序列化的对象。

      》字符串value最多是512MB。

      相关命令

        保存数据  set   key  value

        获取数据  get  key

              mget   <key1>  <key2>  <key3> ...

              getrange <key>  起始值   结束值      获取value的起始值到结束的值。类似于字符串截取操作。

        追加数据  append  <key>  <value>    将value追加到,原先的value后

        获取值长度    strlen  <key>                     根据key获取值的长度

        设置    setnx  <key>  <value>  其实就是 set  not exists  设置值,当key不存在时;如果key存在则不起作用

              mset   <key1>  <value1>  <key2>  <value2>  ....    可以同时设置多对键值对。

              msetnx  <key1> <value1> <key2> <value2> .....    当且仅当所有给定的key都不存在时,设置成功。

              setrange <key>  <起始位置> <value>             把新的value值写入,从起始位置开始写。

              setex <key> <过期时间> <value>          设置键的同时,设置过期时间,单位秒。

              getset  <key>  <value>   设新值的同时,获取旧值。

        数值操作  incr <key>         将key中存储的数值加1;value只能是数值;如果值为空,则置为1   此时步长默认为1.

              decr <key>     将key中存储的数值减1;value只能是数值;如果值为空,则置为-1

              incrby/decrby  <key>  <步长>   按照指定的步长,增加减少。             

    set数据类型(可以去重,无序集合;底层是value是null的hash表,所以增加、删除、查找的时间复杂度都是O(1))

      sadd <key>  <value1> <value2> ....  将一个或多个值加入到集合key中,已经存在于集合的值将被忽略。

      smebers <key>    取出该集合的所有值。

      sismember <key> <value>      判断集合key知否含有该value,有则返回1,无则返回0.

      scard  <key>   返回集合元素个数。

      srem <key> <value1> <value2> ..   删除集合元素

      spop <key>  从集合中随机取一个元素。

      srandmember <key> <n>  随机从该集合取出n个值。

      sinter <k1> <k2>    返回两个集合的交集。

      sunion <key1><key2>  返回两个集合的的并集。

      sdiff <key1> <kwy2>     返回两个集合的差集。

    list数据类型(单键多值,有顺序;底层实际是双向链表)

       lpush/rpush <key> <value1> <value2>.....    从左边或者右边添加多个值。

      lpop/rpop <key>   从左边或右边吐出值;值在键在,值光键亡

      rpoplpush <key1> <key2>   从<key1>列表右边吐出一个值,插到<key2>列表左边

      lrange <key> <start> <stop>  按照索引下标获得元素(从左到右)

      lindex <key> <index>        按照下标获取元素(从左到右)

      llen <key>  获得列表的长度

      linsert <key> before <value> <newvalue>  在指定的<value>后面插入<newvalue>

      lrem <key> <n> <value>  从左边删除n个value.

    hash数据类型(hash是一个键值对集合;类似于java里的Map<String,Object>)

      hset <key> <filed> <value>       给key集合中的<filed>键赋值<value>

      hget <key> <filed>    从key集合中取出键为<filed> 的值

      hmset <key> <filed1> <value1> <filed2><vlaue2>...批量设置hash值

      hexists key <filed>   判断指定的key中是否存在filed.

      hkeys key 列出该key对应的hash集合所有的filed

      hvals <key> 列出该hash集合的所有的value

      hincrby key filed increment  为哈希表 key 中的域 field 的值加上增量 increment 

      hsetnx key filed value 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在

    zset数据类型

       Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score) ,这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。

      zadd  <key> <score1> <value1>  <score2> <value2>...

        将一个或多个 member 元素及其 score 值加入到有序集 key 当中

      zrange <key>  <start> <stop>  [WITHSCORES] 

        返回有序集 key 中,下标在<start> <stop>之间的元素

        带WITHSCORES,可以让分数一起和值返回到结果集。

      zrangebyscore key min max [withscores] [limit offset count]

        返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列

      zrevrangebyscore key max min [withscores] [limit offset count]

        同上,改为从大到小排列

      zincrby <key> <increment> <value>

        为元素的score加上增量

      zrem  <key>  <value> 

        删除该集合下,指定值的元素

      zcount <key>  <min>  <max>

        统计该集合,分数区间内的元素个数

       zrank <key>  <value>

        返回该值在集合中的排名,从0开始

  • 相关阅读:
    创建Variant数组
    ASP与存储过程(Stored Procedures)
    FileSystemObject对象成员概要
    Kotlin 朱涛9 委托 代理 懒加载 Delegate
    Kotlin 朱涛 思维4 空安全思维 平台类型 非空断言
    Kotlin 朱涛7 高阶函数 函数类型 Lambda SAM
    Kotlin 朱涛16 协程 生命周期 Job 结构化并发
    Proxy 代理模式 动态代理 cglib MD
    RxJava 设计理念 观察者模式 Observable lambdas MD
    动态图片 Movie androidgifdrawable GifView
  • 原文地址:https://www.cnblogs.com/xingrui/p/10162644.html
Copyright © 2011-2022 走看看