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

    一、字符串类型String

    redis的字符串可以存储任何类型的数据,redis的字符串是二进制安全的,也就是说存入什么数据取出的还是什么数据。

    1、赋值

    命令set key value

    2、取值

    命令get key

    3、取值的同时对key进行赋值操作

    命令getset key value

    4、删除

    命令del key

    5、数值增减

    命令incr key(每次增加1)

    命令incrby key increment(每次增加指定数字)

     

    6、数值递减

    命令decr key(每次减少1)

    命令decrby key increment(每次减少指定数字)

    7、向尾部追加值

    命令append key value(向键值尾部追加value,如果键不存在则将该键的值设置为value,即相当于set key value,返回值是追加后字符串的总长度)

    8、获取字符串长度

    命令strlen key(返回键值的长度,如果键不存在则返回0)

    二、散列类型Hash

     散列类型hash提供了字段和字段值的映射,字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。

    1、赋值

    命令hset key field value(一次只能设置一个字段值)

    命令hmset key field1 value1 field2 value2......(一次可以设置多个字段值)

    2、取值

    命令hget key field value(一次只能获取一个字段值)

    命令hmget key filed1 value1 field2 value2......(一次可以获取多个字段值)

    命令hgetall key(一次获取对象所有的属性值)

    3、删除字段

    命令hdel key field1 field2......(可以删除一个或多个字段,返回值是被删除的字段个数)

    4、增加数字

    命令hincrby key field increment(增加指定数字)

    5、判断字段是否存在

    命令hexists key field(一次只能判断一个字段是否存在)

    6、当字段不存在时赋值,如果字段已经存在,则不执行任何操作

    命令hsetnx key field value

    7、只获取字段名或字段值

    命令hkeys key

    命令hvals key

    8、获取字段数量

    命令hlen key

    三、列表类型List

    列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。

    列表类型内部是使用双向链表实现的,所以向列表两端添加元素的时间复杂度为O(1),获取越接近两端的元素速度就越快。

    1、向列表两端添加元素

    命令lpush  key value1 value2......

    命令rpush key value1

     

    2、查看列表

    命令lrange key start stop(获取列表中的某一片段,将返回start、stop之间的所有元素,包括两端的元素,索引从0开始;索引可以是负数,-1代表最后边的一个元素)

    3、从列表两端弹出元素

    命令lpop key

    命令rpop key

    lpop命令从列表左边弹出一个元素,会分两步完成,第一步是将列表左边的元素从列表中移除,第二步是返回被移除的元素值

    4、获取列表中元素的个数

    5、删除列表中指定的值

    命令lrem key count value(删除列表中count个值为value的元素,返回实际删除的元素的个数)

    当count>0时,lrem会从列表左边开始删除。

    当count=0时,lrem删除所有值为value的元素。

    当count<0时,lrem会从列表右边开始删除。

    6、获得/设置指定索引的元素值

     命令lindex key index(获得指定索引的元素值)

    命令lset key index value(设置指定索引的元素值)

    7、只保留列表指定片段,指定范围和lrange一致

     命令ltrim key start stop

    8、向列表中插入元素

    命令linsert key before|after pivot value(在列表中从左到右查找值为pivot的元素,在根据第二个参数是before还是after来决定将value插入到该元素的前面还是后面)

    9、将元素从一个列表转移到另一个列表

    命令rpoplpush source destination

    四、集合类型Set

     在集合中的每个元素都是不同的,且没有顺序。

    常用操作是想集合中加入或删除元素、判断某个元素是否存在,redis还提供了多个集合之间的交集、并集、差集的运算。

    1、增加/删除元素

    命令sadd key member1 member2 member3......

    命令srem key member1 member2 member3......

    2、获得集合中的所有元素

    命令smembers key

    3、判断元素是否在集合中,无论集合中有多少元素都可以极速地返回结果

    命令sismember key member

    4、集合的差集运算A-B(属于A并且不属于B的元素构成的集合)

    命令sdiff key1 key2

    5、集合的交集运算(属于A且属于B的元素构成的集合)

    命令sinter key1 key2

    6、集合的并集运算(属于A或者属于B的元素构成的集合)

    命令sunion key1 key2

    7、获得集合中元素的个数

    命令scard key

     

    8、从集合中弹出一个元素(由于集合是无需的,所以会从集合中随机选择一个元素弹出)

    命令spop key

    五、有序集合类型Zset

     1、增加元素(向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素。 )

    命令zadd key score1 member1 score2 member2

    127.0.0.1:6379> zadd scoreboard 80 zhangsan 89 lisi 94 wangwu
    (integer) 3
    127.0.0.1:6379> zadd scoreboard 97 lisi
    (integer) 0
    获取元素的分数
    ZSCORE key member
    127.0.0.1:6379> zscore scoreboard lisi
    "97"

    2、删除元素

    命令ZREM key member1 member2 member3......
    移除有序集key中的一个或多个成员,不存在的成员将被忽略。
    当key存在但不是有序集类型时,返回一个错误。

    127.0.0.1:6379> zrem scoreboard lisi
    (integer) 1

    3、获得排名在某个范围的元素列表
    命令ZRANGE key start stop [WITHSCORES] 照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素)

    127.0.0.1:6379> zrange scoreboard 0 2
    1) "zhangsan"
    2) "wangwu"
    3) "lisi“

    命令ZREVRANGE key start stop [WITHSCORES] 照元素分数从大到小的顺序返回索引从start到stop之间的所有元素(包含两端的元素)

    127.0.0.1:6379> zrevrange scoreboard 0 2
    1) " lisi "
    2) "wangwu"
    3) " zhangsan “

    如果需要获得元素的分数的可以在命令尾部加上WITHSCORES参数
    127.0.0.1:6379> zrange scoreboard 0 1 WITHSCORES
    1) "zhangsan"
    2) "80"
    3) "wangwu"
    4) "94"

    4、获得指定分数范围的元素 

    命令ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
    127.0.0.1:6379> ZRANGEBYSCORE scoreboard 90 97 WITHSCORES
    1) "wangwu"
    2) "94"
    3) "lisi"
    4) "97"
    127.0.0.1:6379> ZRANGEBYSCORE scoreboard 70 100 limit 1 2
    1) "wangwu"
    2) "lisi"

    5、增加某个元素的分数,返回值是更改后的分数。
    命令ZINCRBY key increment member
    给lisi加4分
    127.0.0.1:6379> ZINCRBY scoreboard 4 lisi
    "101“

    6、获得集合中元素的数量
    命令ZCARD key
    127.0.0.1:6379> ZCARD scoreboard
    (integer) 3
    7、获得指定分数范围内的元素个数
    ZCOUNT key min max
    127.0.0.1:6379> ZCOUNT scoreboard 80 90
    (integer) 1

    8、按照排名范围删除元素
    命令ZREMRANGEBYRANK key start stop
    127.0.0.1:6379> ZREMRANGEBYRANK scoreboard 0 1
    (integer) 2
    127.0.0.1:6379> ZRANGE scoreboard 0 -1
    1) "lisi"
    9、按照分数范围删除元素

    命令ZREMRANGEBYSCORE key min max
    127.0.0.1:6379> zadd scoreboard 84 zhangsan
    (integer) 1
    127.0.0.1:6379> ZREMRANGEBYSCORE scoreboard 80 100
    (integer) 1

    10、获取元素的排名
    命令ZRANK key member
    命令ZREVRANK key member
    从小到大
    127.0.0.1:6379> ZRANK scoreboard lisi
    (integer) 0
    从大到小
    127.0.0.1:6379> ZREVRANK scoreboard zhangsan
    (integer) 1

    keys命令
    1、设置key的生存时间
    Redis在实际使用过程中更多的用作缓存,然而缓存的数据一般都是需要设置生存时间的,即:到期后数据销毁。

    EXPIRE key seconds 设置key的生存时间(单位:秒)key在多少秒后会自动删除
    TTL key 查看key生于的生存时间
    PERSIST key 清除生存时间
    PEXPIRE key milliseconds 生存时间设置单位为:毫秒

    例子:
    192.168.101.3:7002> set test 1 设置test的值为1
    OK
    192.168.101.3:7002> get test 获取test的值
    "1"
    192.168.101.3:7002> EXPIRE test 5 设置test的生存时间为5秒
    (integer) 1
    192.168.101.3:7002> TTL test 查看test的生于生成时间还有1秒删除
    (integer) 1
    192.168.101.3:7002> TTL test
    (integer) -2
    192.168.101.3:7002> get test 获取test的值,已经删除
    (nil)

    返回满足给定pattern 的所有key
    redis 127.0.0.1:6379> keys mylist*
    1) "mylist"
    2) "mylist5"
    3) "mylist6"
    4) "mylist7"
    5) "mylist8"

    exists
    确认一个key 是否存在
    redis 127.0.0.1:6379> exists HongWan
    (integer) 0
    redis 127.0.0.1:6379> exists age
    (integer) 1
    redis 127.0.0.1:6379>
    从结果来数据库中不存在HongWan 这个key,但是age 这个key 是存在的
    del
    删除一个key
    redis 127.0.0.1:6379> del age
    (integer) 1
    redis 127.0.0.1:6379> exists age
    (integer) 0
    redis 127.0.0.1:6379>
    从结果来数据库中不存在HongWan 这个key,但是age 这个key 是存在的

    rename
    重命名key
    redis 127.0.0.1:6379[1]> keys *
    1) "age"
    redis 127.0.0.1:6379[1]> rename age age_new
    OK
    redis 127.0.0.1:6379[1]> keys *
    1) "age_new"
    redis 127.0.0.1:6379[1]>

    type
    返回值的类型
    redis 127.0.0.1:6379> type addr
    string
    redis 127.0.0.1:6379> type myzset2
    zset
    redis 127.0.0.1:6379> type mylist
    list
    redis 127.0.0.1:6379>
    这个方法可以非常简单的判断出值的类型

  • 相关阅读:
    js模版引擎Mustache介绍
    springMVC学习篇
    MyBatis参数传入集合之foreach动态sql
    eclipse注册码生成,在eclipse3.3.x上测试可用
    B
    jAVA笔记二
    J 分班(class)(NYIST 2019年校赛)
    H 幻方变换(puzzle)(NYIST 2019年校赛)
    E 旅游方案(travel)(南阳理工学院2019年校赛)
    ACM Computer Factory(网络流 POJ 3436,这可是我第一次写网络流)
  • 原文地址:https://www.cnblogs.com/xsl1995/p/10003491.html
Copyright © 2011-2022 走看看