• Redis 基础:Redis 数据类型


    Redis 数据类型

    Redis支持五种数据类型:string(字符串)、hash(哈希)、list(列表)、set(集合)及zset(sorted set:有序集合)。

    String(字符串)

    string时redis最基本的类型,可以理解为与Memcached一模一样的类型,一个key对应一个value。string类型时二进制安全的,意思是redis的string可以包含任何数据,比如:jpg图片或者序列化的对象。string类型是redis最基本的数据类型,一个key最大能存储512M。

    实例

    > SET name "Hello"
    OK
    > GET name 
    "Hello"
    

    在以上实例中我们使用了Redis的SET和GET命令,键为name,对应的值为"Hello",注意:一个键最大能存储512M。

    Redis 字符串命令

    SET key value:设置指定key的值;
    GET key:获取指定key的值;
    GETRANGE key start end:返回key中字符串的字串;
    GETSET key value:将给定key的值设置为value,并返回key的旧值(old value);
    GETBIT key offset:对key所存储的字符串值,获取指定偏移量上的位(bit);
    MGET key1[key2...]:获取所有(一个或多个)给定key的值;
    SETBIT key offset value:对key所存储的字符串值,设置或清除指定偏移量上的位(bit);
    SETEX key seconds value:将value关联到key,并将key的过期时间设为seconds(以秒为单位);
    SETNX key value:只有在key不存在时设置key的值;
    SETRANGE key offset value:用value参数覆写给定的key所存储的字符串值,从偏移量offset开始;
    STRLEN key:返回key所存储的字符串值的长度;
    MSET key value [key value ...]:同时设置一个或多个key-value对;
    MSETMX key value [key value ...]:同时设置一个或多个key-value对,当且仅当所有给定key都不存在;
    PSETEX key milliseconds value:这个命令和SETEX命令相似,但它以毫秒为单位设置key的生存时间,而不是像SETEX命令那样,以秒为单位;
    INCR key:将key中存储的数字值增1;
    INCRBY key increment:将key所存储的值加上给定的增量值(increment);
    INCRBYFLOAT key increment:将key所存储的值加上给定的浮点增量值(increment);
    DECR key:将key中存储的数字值减1;
    DECRBY key decrement:key所存储的值减去给定的减量值(decrement);
    APPEND key value:如果key已经存在并且是一个字符串,APPEND命令将指定的value追加到该key原来值(value)的末尾;
    

    Hash(哈希)

    Redis hash是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

    实例

    > HMSET myhash name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
    OK
    > HGETALL myhash
    1) "name"
    2) "redis tutorial"
    3) "description"
    4) "redis basic commands for caching"
    5) "likes"
    6) "20"
    7) "visitors"
    8) "23000"
    

    实例中我们使用Redis HMSET设置了redis的一些描述信息(name,description,likes,visitors)到哈希表的myhash中,每个hash可以存储2**32-1键值对(40多亿)。

    Redis hash命令

    HDEL key field1 [field2 ...]:删除一个或多个哈希表字段;
    HEXISTS key field:查看哈希表key中,指定的字段是否存在;
    HGET key field:获取存储在哈希表中指定字段的值;
    HGETALL key:获取在哈希表中指定key的所有字段和值;
    HINCRBY key field increment:为哈希表key中的指定字段的整数值加上增量increment;
    HINCRBYFLOAT key field increment:为哈希表key中的指定字段的浮点数值加上增量increment;
    HKEYS key:获取所有哈希表中的字段;
    HLEN key:获取哈希表中字段的数量;
    HMSET key field1 value1 [field2 value2]:同时将多个field-value(字段-值)对设置到哈希表key中;
    HSET key field value:将哈希表key中的字段field的值设为value;
    HSETNX key field value:只有在字段field不存在时,设置哈希表字段的值;
    HVALS key:获取哈希表中所有值;
    HSCAN key cursor[MATCH pattern][COUNT count];
    

    List(列表)

    Redis列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。一个列表最多可以包含2**32-1个元素(每个列表超过40亿个元素)。

    实例

    > LPUSH mylist redis
    (integer) 1
    > LPUSH mylist mongodb
    (integer) 2
    > LPUSH mylist mysql
    (integer) 3
    > LRANGE mylist 0 10
    
    1) "mysql"
    2)"mongodb"
    3)"redis"
    

    在以上实例中我们使用了LPUSH将三个值插入了名为mylist的列表中。

    Redis 列表命令

    BLPOP key1[key2] timeout:移除并获取列表中的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止;
    BRPOP key1[key2] timeout:移除并获取列表中的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止;
    BRPOPLPUSH source destination timeout:从列表中弹出一个值,将淌出的元素插入到另一个列表中并返回它;如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止;
    LINDEX key index:通过索引获取列表中的元素;
    LINSERT key BEFORE|AFTER pivot value:在列表的元素前或后插入元素;
    LLEN key:获取列表长度;
    LPOP key:移除并获取列表的第一个元素;
    LPUSH key value1[value2]:将一个或多个值插入到列表头部;
    LPUSH key value:将一个值插入到已存在的列表头部;
    LRANGE key start stop:获取列表范围内的元素;
    LREM key count value:移除列表元素;
    LSET key index value:通过索引设置列表元素的值;
    LREIM key start stop:对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间内的元素都将被删除;
    RPOP key:移除并获取列表最后一个元素;
    RPOPLPUSH source destination:移除列表的最后一个元素,并将该元素添加到另一个列表并返回;
    RPUSH key value1[value2]:在列表中添加一个或多个值;
    RPUSHX key value:为已存在的列表添加值;
    

    Set(集合)

    Redis的Set是String类型的无序集合,集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis中集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1),集合中最多可以包含2**32-1个元素(每个列表超过40亿个元素)。

    实例

    > SADD myset redis
    (integer) 1
    > SADD myset mongodb
    (integer) 1
    > SADD myset mysql
    (integer) 1
    > SADD myset mysql
    (integer) 0
    > SMEMBERS myset
    
    1) "mysql"
    2) "mongodb"
    3) "redis"
    

    在以上实例中我们通过SADD命令向名为myset的集合插入三个元素。

    Redis 集合命令

    SADD key member1[member2]:向集合添加一个或多个成员;
    SCADD key:获取集合的成员数;
    SDIFF key1[key2]:返回给定所有集合的差集;
    SDIFFSTORE destination key1[key2]:返回给定所有集合的差集并存储在destination中;
    SINTER key1[key2]:返回给定所有集合的交集;
    SINTERSTORE destination key1[key2]:返回给定所有集合的交集并存储在destination中;
    SISMEMBER key member:判断member元素是否是集合key的成员;
    SMEMBERS key:返回集合中所有成员;
    SMOVE source destination member:将member元素从source集合移动到destination集合;
    SPOP key:移除并返回集合中的有个随机元素;
    SRANDMEMBER key [count]:返回集合中一个或多个成员;
    SUNION key1[key2]:返回所有给定集合的并集;
    SUNIONSTORE destination key1[key2]:将所有给定集合的并集存储在destination集合中;
    SSCAN key cursor [MATCH pattern][COUNT count]:迭代集合中的元素;
    

    Sorted Set(有序集合)

    Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)去可以重复。集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1),集合中最多可以包含2**32-1个元素(每个列表超过40亿个元素)。

    实例

    > ZADD mysset 1 redis
    (integer) 1
    > ZADD mysset 2 mongodb
    (integer) 1
    > ZADD mysset 3 mysql
    (integer) 1
    > ZADD mysset 3 mysql
    (integer) 0
    > ZADD mysset 4 mysql
    (integer) 0
    > ZRANGE mysset 0 10 WITHSCORES
    
    1) "redis"
    2) "1"
    3) "mongodb"
    4) "2"
    5) "mysql"
    6) "4"
    

    在以上实例中我们通过ZADD命令向redis的有序集合中添加了三个值并关联上分数。

    Redis 有序集合命令

    ZADD key score1 member1[score2 member2]:向有序集合添加一个或多个成员,或者更新已存在成员的分数;
    ZCARD key:获取有序集合的成员数;
    ZCOUNT key min max:计算在有序集合中指定区间分数的成员数;
    ZINCRBY key increment member:有序集合中对指定成员的分数加上增量increment;
    ZINTERSTORE destination numkeys key [key...]:计算给定的一个或多个有序集的交集并将结果存储在新的有序集合key中;
    ZLEXCOUNT key min max:在有序集合中计算指定区间内成员数量;
    ZRANGE key start stop [WITHSCORES]:通过索引区间返回有序集合指定区间内的成员;
    ZRANGEBYEX key min max[LIMIT offset count]:通过字典区间返回有序集合的成员;
    ZRANGEBYSCORE key min max [WITHSCORES][LIMIT]:通过分数返回有序集合指定区间内的成员;
    ZRANK key member:返回有序集合中指定成员的索引;
    ZREM key member[member...]:移除有序集合中的一个或多个成员;
    AREMRANGEBYEX key min max:移除有序集合中给定的字典区间的所有成员;
    ZREMRANGEBYRANK key start stop:移除有序集合中给定的排名区间的所有成员;
    ZREMRANGEBYSCORE key min max:移除有序集合中给定的分数区间的所有成员;
    ZREVRANGEBYSCORE key max min[WITHSCORES]:返回有序集合中指定分数区间内的成员,分数从高到低排序;
    ZREVRANK key member:返回有序集合中指定成员的排名,有序集合成员按分数值递减(从大到小)排序;
    ZSCORE key member:返回有序集合中成员的分数值;
    ZUNIONSTORE destination numkeys key [key...]:计算给定的一个或多个有序集的并集,并存储在新的key中;
    ZSCAN key cursor[MATCH pattern][COUNT count]:迭代有序集合中的元素(包括元素成员和元素分值);
    
  • 相关阅读:
    C++笔记(2018/2/6)
    2017级面向对象程序设计寒假作业1
    谁是你的潜在朋友
    A1095 Cars on Campus (30)(30 分)
    A1083 List Grades (25)(25 分)
    A1075 PAT Judge (25)(25 分)
    A1012 The Best Rank (25)(25 分)
    1009 说反话 (20)(20 分)
    A1055 The World's Richest(25 分)
    A1025 PAT Ranking (25)(25 分)
  • 原文地址:https://www.cnblogs.com/love9527/p/9258938.html
Copyright © 2020-2023  润新知