[笔记迁移][Redis][2]Redis数据类型

版权声明:Collected by Bro_Rabbit only for study https://blog.csdn.net/weixin_38240095/article/details/83216420

一、Redis五大数据类型概述

数据类型 说明
String 最基本的类型。
二进制安全,即Redis的String可以包含任何数据,如图片或序列化的对象。
Redis中一个String型value最多可以为512M。
Hash
类似Java中Map
一个键值对集合。
Redis中一个Hash是一个String型的field和value的映射表,特别适合用于存储对象。
List 简单的String列表,按照插入顺序排序。
底层实际是一个双向循环链表,因此可以添加一个元素至列表的头部或尾部。
Set String型的无序无重复元素集合。
通过HashTable实现。
Zset (sorted set) String型的元素集合,且不允许包含重复的成员。
与Set不同的是每个元素都会关联一个Double型的分数。 Redis正是通过分数来为集合中的成员进行从小到大的排序。
ZSet的成员是唯一的,但分数却可以重复。

二、Redis常用数据类型操作命令

查找手册(全):http://redisdoc.com/

  1. Redis Key 操作

    命令 说明
    KEYS {pattern} keys * 查看当前库所有键
    EXISTS {key} 判断某个key是否存在于当前库
    存在则返回1,否则返回0
    MOVE {key} {dbid} 将当前库中key对应键值对移动到指定库
    EXPIRE {key} {secs} 给当前库中key(对应的键值对)设置过期时间
    超时即从当前库中移除
    TTL {key} time to leave的缩写,查看key(对应的键值对)还有多少秒过期,过期则移除
    -1表示永不过期,-2表示已过期
    TYPE {key} 查看指定key的类型
  2. Redis String 操作

    命令 说明
    SET {key} {val}
    GET {key}
    APPEND {key} {newVal} 向key对应的String型val追加newVal
    STRLEN {key} 获取key对应的String型val长度
    INCR/DECR {key} 使key对应的val加/减1,只有数字才能加减
    INCRBY/DECRBY {key} {num} 使key对应的val加/减num,只有数字才能加减
    GETRANGE {key} {start} {end} 获取key对应的String型val的start~end范围的值,与subString类似
    若start=0, end=-1则会返回整个val
    SETRANGE {key} {start} {content} 从key对应val的start处开始设置值
    SETEX {key} {secs} {val} set with expire的缩写
    添加键值对的同时指定过期时间
    SETNX {key} {val} set if not exist的缩写
    添加键值对前进行检查是否存在。若不存在,则添加
    MSET {key1} {val1} {key2} {val2} more set的缩写
    添加/设置多个键值对
    MGET {key1} {key2} more get的缩写
    获取多个键值对
    MSETNX {key1} {val1} {key2} {val2} more set if not exist
    注意,不能是混合键值对组合
    GETSET {key} {new_val} 返回key对应的String型val,并设置为new_val
  3. Redis-List 操作
    集合,类链栈:L-左-顶;R-右-底
    因此,头尾操作效率极高,对中间进行操作效率惨淡

    命令 说明
    LPUSH/RPUSH {key} {vals} 向key指定的List中添加vals元素集
    LPUSH:从vals元素集左面开始“压栈”,最后一个元素为“栈顶”
    RPUSH:从vals元素集右面开始“压栈”,第一个元素为“栈顶”

    若key指定的List不存在,则会创建并填充
    LRANGE {keys} {start} {end} 获取“栈顶”从start~end范围内的元素
    LPOP/RPOP {key} LPOP:弹出“栈顶”元素并返回
    RPOP:弹出“栈底”元素并返回

    当List中的值全被“弹出”移除,其对应的key也就消失
    LINDEX {key} {index} 返回key指定的List中索引为index的元素(栈顶为0)
    LLEN {key} 返回key指定的List的长度
    LREM {key} {num} {val} 从key指定的List中删除num个val(自栈顶开始),返回实际删除的数量
    当num=0时,表示删除List中全部指定的val
    LTRIM {key} {start} {end} 截取key指定的List中start~end范围内的值为新List并重新赋给key
    RPOPLPUSH {src_key} {dest_key} 弹出{src_key}指定List的“栈底”元素并添加值{dest_list}的“栈顶”后返回
    LSET {key} {index} {val} 将key对应的List中index所指元素设置为val
    LINSERT {key} BEFORE/AFTER {target_val} {new_val} 在key指定的List中已存在的target_val前/后插入新值
  4. Redis-Set
    集合,相同元素只会被维持一份

    命令 说明
    SADD {key} {vals} 向key指定的Set添加vals元素集

    若key指定的Set不存在,则会创建并填充
    SMEMBERS {key} 获取key指定Set的所有元素
    SISMEMBER {key} {val} 判断val是否是key指定Set中的元素
    SCARD {key} 获取key指定Set的大小
    SREM {key} {val} 删除key指定Set中的val
    SRANDMEMBER {key} {num} 返回key指定Set中的num个随机元素
    SPOP {key} 随机弹出一个元素并返回
    SMOVE {src_key} {dest_key} {val} 将src_key指定的Set中的val移到dest_key所制定的Set中
    SDIFF {target_key} {src_key} 以target_key所指Set为参照,获取差集
    SINTER {key1} {key2} 获取交集
    SUNION {key1} {key2} 获取并集
  5. Redis-Hash操作
    Hash类似于Map,一个Hash可以维持多个键值对

    命令 说明
    HSET {out_key} {inner_key} {val} 添加/设置 {out_key}所指Hash中{inner_key}的值为{val}
    HGET {out_key} {inner_key} 获取{out_key}所指Hash中{inner_key}的值
    HMSET {out_key} {inner_key1} {val1} {inner_key2} {val2} 同时设置{out_key}所指Hash中的多个键值对
    HMGET {out_key} {inner_key1} {inner_key2} 同时获取{out_key}所指Hash中的多个键值对的值
    HGETALL {out_key} 获取{out_key}所指Hash中所有键值对
    HDEL {out_key} {inner_key} 删除{out_key}所指Hash中{inner_key}的键值对
    HLEN {out_key} 获取{out_key}所指Hash中的键值对个数
    HEXISTS {out_key} {inner_key} 检查{out_key}所指Hash中{inner_key}所指键值对是否存在
    HKEYS {out_key} 获取{out_key}所指Hash中的所有键值对的key
    HVALS {out_key} 获取{out_key}所指Hash中的所有键值对的val
    HINCRBY/HINCRYBYFLOAT {out_key} {inner_key} 使{out_key}所指Hash中{inner_key}对应的数值“加”
    HSETNX {out_key} {inner_key} {val} 检查{out_key}所指Hash中是否包含{inner_key}所指键值对,若不包含,则添加
  6. Redis-Zset(sorted set)
    在Set的基础上,增加一个Score的位置( 成为一对 )。Set的结构:Key v1 v2 v3; Zset结构:Key score1 v1 score2 c2

    命令 说明
    ZADD {key} {score1} {val1} {score2} {val2} 向{key}所指的Zset中添加“score,val”的键值对
    ZRANGE {key} {start} {end} 获取{key}所指Zset{start}到{end}范围内的值
    默认情况下只返回值,没有分数,可以在后面加添WITHSCORES以返回"score,val"键值对
    ZRANGEBYSCORES {key} {low_score} {high_score} 获取{key}所指Zset中分数介于{low_score}与{high_score}的值

    默认包含上下界,可以使用({low_score} ({high_score} 代替以不包含上下界

    可以使用LIMIT {start_index} {steps} 对返回的结果的个数再一次限制
    ZREM {key} {val_under_score} 删除{key}所指Zset中{val_under_score}这个值,即删除元素
    ZCARD {key} 获取{key}所指的Zset中的"score,val"键值对的个数
    ZCOUNT {key} {low_score} {high_score} 获取{key}所指Zset中分数介于{low_score}和{high_score} 之间的个数
    ZRANK {key} {val} 获取{key}所指的Zset中的{val}的下标
    ZSCORE {key} {val} 获取{key}所指Zset中的{val}分数
    ZREVRANK {key} {val} 逆序获取{key}所指Zset中{val}的下标
    ZREVRANGE {key} {start} {end} 逆序获取{key}所指Zset{start}到{end}范围内的值
    ZREVRANGEBYSCORES {key} {high_score} {low_score} 逆序获取{key}所指Zset中分数介于{low_score}与{high_score}的值

猜你喜欢

转载自blog.csdn.net/weixin_38240095/article/details/83216420
今日推荐