版权声明: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/
-
Redis Key 操作
命令 说明 KEYS {pattern} keys * 查看当前库所有键 EXISTS {key} 判断某个key是否存在于当前库
存在则返回1,否则返回0MOVE {key} {dbid} 将当前库中key对应键值对移动到指定库 EXPIRE {key} {secs} 给当前库中key(对应的键值对)设置过期时间
超时即从当前库中移除TTL {key} time to leave的缩写,查看key(对应的键值对)还有多少秒过期,过期则移除
-1表示永不过期,-2表示已过期TYPE {key} 查看指定key的类型 -
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则会返回整个valSETRANGE {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 -
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中全部指定的valLTRIM {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前/后插入新值 -
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} 获取并集 -
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}所指键值对,若不包含,则添加 -
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}的值