redis数据类型and常用操作命令

    技术2022-07-12  99

    一、redis常用命令

    keys * 查看当前所有的键exists < key > 判断某个键是否存在type < key > 查看键的类型del < key > 删除一个键expire < key > < seconds > 为一个键设置过期时间,单位秒ttl < key> 查看某个键还有多长时间过期,-1表示永不过期,-2表示过期dbsize 查看当前库中有多少条信息flushdb 清空当前库flushall 清空全部库

    二、redis的五大数据类型

    String数据类型 String是redis中最基础的数据类型,是二进制安全的,可以包含任何数据,redis中一个String类型的value大小最多可以是512M

    操作字符串的指令:

    get < key > 查询对应键值

    set < key > < value > 添加键值对

    append < key > < value > 将给定的value添加到原值得末尾

    strlen < key > 获取值的长度

    setnx < key > < value > 只有key不存在时添加键值对

    incr < key > 将key中存储的数字值增1(只对数字值操作),如果为空,则设置为1

    decr < key > 将key中存储的数字值减1(只对数字值操作),如果为空,则设置为-1

    incrby / decrby < key > < 步长 > 将key中的值自增减,自定义步长(就是一次加减多少)

    mset < key1 > < value1 > < key2 > < value2 > … 一次添加多个键值对

    mget < key1 > < key2 > … 一次获取多个键的值

    msetnx < key1 > < value1 > < key2 > < value2 > … 一次添加若干个不存在的键值对,只有所有键值对不存在的时候添加

    getrange < key > < 起始位置 > < 结束位置 > 获取key值得字串,起始位置和结束位置都包含

    setrange < key > < 起始位置 > < value > 替换key值中得字串,从起始位置开始

    setex < key > < seconds > < value > 添加键值对得同时设置过期时间

    getset < key > < value > 以新换旧,设置新值得同时获取旧值

    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 | after < value > < newvalue > 在指定得元素前或者后面添加一个元素

    lrem < key > < n > < value > 从左边删除n个value ,n为0得时候,删除所有得value

    set数据类型 redis中得set对外提供的功能与List类似是一个列表得功能,特殊之处set可以排重,set是一个无序的集合,底层是一个value值为null的hash表,所有添加,删除,查找的复杂度都是o(1)

    对set的操作命令:

    sadd < key > < value1 > < value2 > … 将一个或多个元素添加到key集合中,如果集合中存在要添加的元素,则忽略该元素

    smembers < key > 取出集合的所有值

    sismembers < key > < value > 判断集合key中是否存在value,如果不存在返回0,有则返回1

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

    srem < key > < value1 > < value2 > … 删除集合中某些元素

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

    srandmembers < key > < n > 随机从集合中取出n个元素,而且不会从集合中删除这些元素

    sinter < key1 > < key2 > 返回两个集合的交集元素

    sunion < key1 > < key2 > 返回两个元素的并集元素

    sdiff < key1 > < key2 > 返回两个集合的差集元素

    hash数据类型 redis中hash是一个键值对集合,适合用于存储对象,类似于Java中的map

    对hash的操作命令:

    hset < key > < field > < value > 给key集合中添加 一个键值对

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

    hmset < key > < field1 > < value1 > < field2 > < value2 > … 向key集合中添加多个键值对

    hexists < key > < field > 查看名为key的hash表中是否存在field

    hkeys < key > 查看名为key的hash表中所有field

    hvals < key > 查看名为key的hash表中所有value

    hgetall < key > 查看所有的键值

    hincrby < key > < field > < increment > 为名为key的hash表中field的值加上增量increment

    hsetnx < key > < filed > < value > 如果名为key的hash表中不存在field,则向其中添加该键值对

    zset数据类型 redis中有序集合zset与普通集合set非常相似,只是zset中的每一个元素比set的中的每一个元素多一个评分,zset就是按照这个评分来实现排序的,而且评分可以重复,因此可以从zset集合中按照评分范围和次序来查找元素。

    对zset的操作命令:

    zadd < key > < score1 > < value1 > < score2 > < value2 > … 向名为key的zset集合中添加若干个评分为score的value

    zrange < key > < start > < stop > [withscore] 返回名为key的zset集合中start到stop的元素,如果带上withscore就会连评分一起返回

    zrangebyscore < key > min max [withscore] [limit offset count] 返回zset集合中min到max(包含min,max)之间的元素

    zrevrangebyscore < key > max min [withscore] [limit offset count] 这是zrangebyscore的逆序形式

    zincrby < key > < increment > < value > 为元素的评分加上增量increment

    zrem < key > < value > 删除指定的value

    zcount < key > < min > < max > 统计集合中分数区间元素的个数

    zrank < key > < value > 返回value在集合中的排名,从零开始

    Processed: 0.011, SQL: 9