• Redis命令操作简介及五种value数据类型


    转自:https://blog.csdn.net/ty4315/article/details/52050721

    Redis是使用键值存储数据,key必须是字符串value支持五种数据类型,最新版本又新增加了两种这里暂不介绍。下面会介绍redis的一些基本命令的使用。

    首先启动redis并登录客户端。

     

    Redis中的命令不区分大小写。

    一:基本命令及string类型

    1:help set

    帮助命令

    2:select 1

       Redis默认有16个库通过select命令切换,库之间隔离默认登录0号库

    3:del a

       删除key a

    4:keys *  key a*

    查询库中已存在的key

    5:exists a

       查看当前库中是否存在keya,存在返回1

    6:set a 1

       Key:a  value:1

    7:get a

       查看key为a的value值

    8:mset a 1 b 2

       一次创建多个key

    9:mget a b

       一次查看多个key

    10:append a x

       向key中追加字符串

    11:strlen a

       返回key a 的长度

    12:incr b;key b的value加1

    decr b; key b的value减1

    incrby b 2; key b的value按步长加

    decrby b 2; key b的value按步长减

    incrbyfloat b 0.9; key b的value加0.9

    incrbyfloat b -0.9; key b的value减0.9

    此命令要求value的值可以进行加减运算

    二:hash类型

      Hash类型的key为字符串value为key:value且value只能为字符串。格式<string:<string:string>>,关键字h。

    13:hset user_01 namejack

       创建键user_01,value为<name:jack>

    14:hget user_01 name

       查看键user_01,value中key为name的值

    15:hmset user_01 nametom age 10

       一条命令创建多个

    16:hmget user_01 nameage

       一条命令查看多个

    17:hexists user_01 name

       查看键user_01中key为name的value

    18:hdel user_01 name

       删除键user_01中key为name

    19:hiincrby user_01 age2

       键user_01种key为age的按步长增加,也可负数减

    20:hkeys user_01

       显示键user_01中所有的key

    21:hvals user_01

       显示键user_01中所有的value

    22:hlen user_01

       显示键user_01中key的个数

    23:hgetall user_01

       显示键user_01中所有的键值对

    三:List类型

       List类型是有序的采用双向链表LinkedList实现,访问两边数据快中间慢,最多可以有2的32次方-1个元素。格式<string,<string,string,…>>,关键字l。

    24:lpush list1 a b c

       创建键为list1,value为a,b,c。顺序是从左向右开始添加,所以执行lrange list1 0 -1输出是c b a

    25:lrange list1  0 -1

       查看键list1全部元素

    26:lindex list1 0

       查看键list1中下标为0的元素

    27:lset list1 0 xx

       更改键list1中下标为0 的元素

    28:llen list1

       显示键list1的长度,元素个数

    29:lpop list1

       返回并删除键list1中最左边的value

    30:rpop list1

       返回并删除键list1中最右边的value

      pop让我想起python中列表和字典也有类似的方法功能也相近

    31:ltrim list1 0 4

       按下标截取键list1中的元素,下标如果都超出实际范围则list1被删除

    四:set类型

       Set数据类型不重复,无序,最多可以有2的32次方-1个元素,关键字s。

    32:sadd set1 a b c d

       创建键set1,value为字符串a,b,c,d

    33:smembers set1

       查看键set1

    34:sismember set1 a

       查看键set1中是否含有字符串a

    35:srem set1 a

       删除键set1中的字符串a

    36:spop set1

       随机删除键set1中的一个元素

    37:scard  set1

       显示键set1中的元素个数

    38:sdiff set1 set2

       显示set1中元素不存在于set2中的元素

    39:sinter set1 set2

       显示set1与set2的交集

    40:sunion set1 set2

       显示set1和set2的并集

    41:sinterstore  set3  set1  set2

       将set1和set2的交集存入set3中

      注:sdiff,sinter,sunion会影响性能,最后将结果存起来。

    五:sorted set类型

        Sorted set是在set的基础上增加一个分值并根据这个分值进行排序,关键字z。

        我们可以改变元素的分值以便于调整元素位置

        它比list更耗内存

        使用散列表读取中间数据速度快

        若元素的分值一样则按照ASCII的顺序排列

    42:zadd  zset1 1 a 2 b

        创建zset1,元素a的分值为1元素b的分值为2

    43:zscore zset1 a

        查看zset1中元素a的分值

    44:zrange zset1  0 10

        查看zset1中,按下标0到10查看

    45:zrevrange  zset1 0 -1

        查看zset1中元素,倒序。

    46:zincrby zset1 1 a

        元素a的分值增加1,负数时为减少

    47:zcount zet1 0 4

        返回zset1中分值0到4的元素的个数

    48:zcard  zset1

        返回zset1中元素个数

    49:zrem  zset1 a

         删除zset1中的元素a

    50:zrangebyscore  zset1 0 4

          显示zset1中分值大于等0小于等于4的元素

            zrangebyscore  zset1 0 (4

           显示zset1中分值大于等0小于4的元素

    51:zadd  zset1 +inf n

           增加n元素分值正无穷

           Zadd  zset1 –inf m

           增加m元素分值负无穷

    52:zrangebyLex  zset1 [a  [wangww

            若zset1中的分值都一样则可使用此命令按照元素名称的顺序显示。此命令需2.8.9版本以上

             zrangebyLex  zset1 [a  [wangww

            显示元素名称大于等于a 小于等于wangwu的元素,值中[表示大于等于  (表示大于

    53:zrank zset1 a

          显示zset1中a的下标

    六:键的生存时间

    54:expire name 10

          expire可以设置一个key的有效时间,生存时间单位是秒。

    55:ttl name

         ttl是查看key还剩下多少有效时间,默认是永久有效返回-1,当超过有效时间后返回-2。

    56:persist name

         Persist命令可以取消一个key的剩余时间使之成为永久有效

    57:expireat name 1471849200

         Expireat可以指定一个key在什么时间失效,另外我们可以在linux下使用date来得到一个时间点

         [root@hadoop0~]# date +%s

         1469881946

         [root@hadoop0~]# date --date="2016-08-22" +%s

         1471849200

         实际工作中可以用来实现手机验证码,电商秒杀,游戏排行榜等功能,指定剩余有效时间。

    七:其它命令

    58:type name

          查看key值的类型

    59:brpop key1 key2 3

        从key1开始取值

    60:publish subscribe 发布订阅

         Subscribe订阅一个频道,publish命令发布的内容通过subscribe可以看到,取消订阅功能是unsubscirbe。

         Psubscribe订阅一批频道,unpsubscribe取消

         下图显示在频道ch1中发布’my nameis jack’

         

          下图显示订阅了ch1频道并查看到了my nameis jack

          

          以下是批量订阅发布

          

           

          

    61:flushall  flushdb

           Flushall命令清除redis实例的所有数据

           Flushdb命令清除当前数据库的所有数据

    总结:

       1:set命令会强制废除一个key的原有类型将其变更为字符串类型。

       2:redis是按照key来存储数据的它没有提供按条件查询,但可以使用zrangebyscore和zrangebylex来实现条件查询。

  • 相关阅读:
    nginx win10 配置启动bat脚本
    linux ctrl + s 导致锁死 解决
    linux 执行shell 不小心导致无限死循环解决
    linux vim 意外退出导致下次vim进入报错提示恢复
    vue 自定义组件使用vmodel属性的具体说明,重点说明参数的定义
    echarts 官网首页能进去,但是演示和文档地址进不去的 win10解决办法
    mysql 报错 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled
    elementui h5 引入elementui 报错提示没有字体
    .net 中文传参
    ASP.NET, IE6下URL中文乱码问题 ASP.NET程序,当URL后缀包含奇数个中文字符
  • 原文地址:https://www.cnblogs.com/jpfss/p/10842680.html
Copyright © 2020-2023  润新知