Redis的五大数据类型

Redis数据类型

数据类型

key(键)

  1. keys *
    • 查询当前库的所有键
  2. exists <key>
    • 判断某个键是否存在
  3. type <key>
    • 查看键的类型
  4. del <key>
    • 删除某个键
  5. expire <key> <seconds>
    • 为键值设置过期时间,单位秒
  6. ttl <key>
    • 查看还有多少秒过期,-1表示永不过期,-2表示已过期
  7. dbsize
    • 查看当前数据库的key的数量
  8. flushdb
    • 清空当前库
  9. flushall
    • 通杀全部库

String(字符串)

  • 是Redis最基本的类型,一个key对应一个value;
  • 是二进制安全的,即Redis的String可以包含任何数据,比如jpg图片或者序列化对象;
  • 是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M。
  1. get <key>
    • 查询对应键值对
  2. set <key> <value>
    • 添加键值对
  3. append <key> <value>
    • 将给定的value追加到原值的末尾
  4. strlen <key>
    • 获取值的长度
  5. setnx <key> <value>
    • 只有在key不存在时设置key的值
  6. incr <key>
    • 将key中储存的数字值加1;
    • 只能对数字值操作,如果为空,新增值为1
  7. decr <key>
    • 将key中储存的数字值减1;
    • 只能对数字值操作,如果为空,新增值为-1
  8. incrby/decrby <key> <步长>
    • 将key中储存的数字值增减。自定义步长
  9. mset <key1> <value1> <key2> <value2> …
    • 同时设置一个或多个key-value对
  10. mget <key1> <value1> <key2> <value2> …
    • 同时获取一个或多个value
  11. msetnx <key1> <value1> <key2> <value2> …
    • 同时设置一个或多个key-value对,当且仅当所有给定key都不存在,才会执行成功
  12. getrange <key> <起始位置> <结束位置>
    • 获取值的范围,类似java中的substring
  13. setrange <key> <起始位置> <value>
    • 用value覆写key所储存的字符串的值,从<起始位置>开始
    • setrange
  14. setex <key> <过期时间> <value>
    • 设置键值的同时,设置过期时间,单位秒
  15. getset <key> <value>
    • 以新换旧,设置了新值同时获取旧值
    • getset

List(列表)

  • 单键多值
  • Redis列表是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或尾部(右边)
  • 它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差
  1. lpush/rpush <key> <value1> <value2> …
    • 从 列表头部(左边)/ 列表尾部(右边)插入一个或多个值
  2. lpop/rpop <key>
    • 从 列表头部(左边)/ 列表尾部(右边)弹出一个值
    • 如果弹出值后,列表中没有值了,那么键会自动删除
  3. rpoplpush <key1> <key2>
    • 从key1列表尾部(右边)弹出一个值, 并将该值添加到另一个key2列表并返回
    • rpoplpush
  4. lrange <key> <start> <stop>
    • 按照索引下标获得元素(从列表头部(左边)向列表尾部(右边))
  5. lindex <key> <index>
    • 按照索引下标获的元素(从列表头部(左边)向列表尾部(右边))
  6. llen <key>
    • 获取列表长度
  7. linsert <key> before/after <value> <newvalue>
    • 在value的前面或后面插入newvalue
    • linsert
  8. lrem <key> <count > <value>
    • 从列表头部(左边)删除count 个<value> (从列表头部(左边)向列表尾部(右边))
      • count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
      • count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
      • count = 0 : 移除表中所有与 VALUE 相等的值。
    • 返回值为被移除元素的数量。 列表不存在时返回 0 。
    • lrem

set(集合)

  • set对外提供的功能与list类似,是一个列表的功能,特殊之处在于set可以自动去重,当需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的;
  • set是String类型的无序、无重复集合,通过HashTable实现的,它的底层是一个value为null的hash表,所以添加、删除、查找的复杂度都是O(1)。
  1. sadd <key> <value1> <value2> …
    • 将一个或多个成员加入到集合key当中,已经存在于集合的成员将被忽略
  2. smembers <key>
    • 取出该集合的所有成员值
  3. sismember <key> <value>
    • 判断集合key是否存在value值,有则返回1,没有则返回0
  4. scard <key>
    • 获取该集合的成员个数
  5. srem <key> <value1> <value2> …
    • 删除集合中的一个或多个成员
  6. spop <key> [count]
    • 随机移除key 的一个或多个元素,移除后会返回移除的元素
  7. srandmember <key> <count>
    • 返回集合中一个或多个随机数
      • 如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
      • 如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
    • 不会删除元素
  8. smove <key1> <key2> <value>
    • 将value元素从key1集合移动到key2集合
    • value元素会从key1集合中删除
  9. sinter <key1> <key2> …
    • 返回给定所有集合的交集
  10. sunion <key1> <key2> …
    • 返回给定所有集合的并集
  11. sdiff <key1> <key2> …
    • 返回给定所有集合的差集

hash(哈希)

  • 是一个键值对集合
  • 是一个String类型的field和value的映射表,Hash特别适合用于存储对象
  • 类似Java里面的Map<String,Object>
  1. hset <key> <field> <value>
    • 设置哈希表key中域filed的值为value
  2. hget <key> <field>
    • 获取哈希表 key中域filed的值
  3. hmset <key> <field1> <value1> <field2> <value2> …
    • 同时将多个 field-value (域-值)对设置到哈希表key中
  4. hexists <key> <filed>
    • 查看哈希表key中,域filed是否存在
  5. hkeys <key>
    • 列出该哈希表key所有的域filed
  6. hvals <key>
    • 列出该哈希表key所有的value值
  7. hincrby <key> <filed> <increment>
    • 为哈希表 key 中的指定字段的整数值加上增量increment
  8. hsetnx <key> <field> <value>
    • 将哈希表key中的域field的值设置为value,当且仅当域field不存在

zset(sorted set:有序集合)

  • 和set一样也是String类型元素的集合,且不允许重复的成员
  • 不同的是每个元素都会关联一个double类型的分数
  • Redis通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复
  1. zadd <key> <score1> <member1> <score2> <member2> …
    • 向有序集合key添加一个或多个成员,或者更新已存在成员的分数
  2. zrange <key> <start> <stop> [WITHSCORES]
    • 获取有序集合key中,下标在start、stop之间的元素
    • 带WITHSCORES,可以让分数score一起和值返回到结果集
  3. zrangebyscore <key> <min> <max> [WITHSCORES] [limit ofseet count]
    • 获取有序集合key中,所有score值介于min和max之间(包括等于min或max)的成员。有序集合成员按score值递增(从小到大)依次排序
  4. zrevrangebyscore <key> <max> <min> [WITHSCORES] [limit ofseet count]
    • 同zrangebyscore,但是排序方式是从大到小
  5. zincrby <key> <increment> <member>
    • 有序集合key中对指定成员member的分数score加上增量 increment
  6. zrem <key> <member1> <member2> …
    • 移除有序集合中的一个或多个成员
  7. zcount <key> <min> <max>
    • 计算在有序集合key中指定区间分数min-max的成员数
  8. zrank <key> <member>
    • 返回有序集合key中指定成员member的索引 (排名),从0开始

最后更新: 2020年07月18日 09:48

原始链接: http://ligangit.com/2020/07/17/Redis-五大数据类型/

× 请我吃糖~
打赏二维码