Redis数据类型扫盲,常见的类型及使用场景介绍。了解常用的操作命令有助于帅气的你能够判断出在合适的场景中使用哪种合适的命令,没有最好只有最合适❤️
String(单值单value)
- String是redis最基本的数据类型,你可以理解成和Memcached一模一样的类型,一个key对应一个value
- String类型是二进制安全的,意思是redis的String可以包含任何数据,比如jpg图片或者序列化的对象
- String类型是redis最基本的数据类型,一个redis中字符串value最多可以是512M
//获取某个key
get key
//设置某个key
set key
//向value的末尾添加字符串,返回元素的长度
append key value
//获取元素的长度
strlen key
incr key 将key加一(一定要是数字才能进行加减)
线程安全的将一个数字加一,适合应用在投票,点击量之类计数的场景
decr key 将key减一
incrby key increment 将key加increment
decrby key increment 将key减increment
getrange/setrange(范围内取值/范围内设置值 (左闭右闭))
setex(set with expire)设置带过期时间的key
setnx(set is not exist)如果这个key不存在的话就设置
基于redis的分布式锁可能会用到这个命令
mset/mget/msetnx 批量键值操作
getset(先get在set)
Hash 哈希,(kv模式不变,但v是一个键值对)类似java中的Map
- redis hash 是一个键值对集合
- redis hash 是一个string类型的key和value的映射表,hash特别适用于存储对象
- 类似java里面的Map<String,Object>
//设置一个key中的一个字段
hset key field value
//获取一个key中的一个字段
hget key field
//批量设置key中的字段
hmset key field value [field value ...]
//批量获取key中的字段
hmget key field [field ...]
//获取key中所有的字段
hgetall key
//删除key中的字段
hedel key field [field ...]
hlen key(这个key中有多少个键值对)
hexists key field(判断key中有没有指定的field)
hkeys key/kvals key(获取指定key里面的key/获取指定key里面的value)
hincrby/hincybyfloat 将一个key中的field增加指定数值
hsetnx key filed value(如果key中的filed不存在就设置进去)
List 列表(单值多value)
- redis列表是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边) 或者尾部(右边),它的底层实际是个链表
- left,right都可以添加
- 如果key不存在,创建新的链表
- 如果key存在,新增内容
- 如果key中的value全部移除,对应的key也就没有了
- 链表的操作无论头和尾效率都极高,但假如是对中间元素进行操作,效率一般般
//左边插入
lpush key element [element ...]
//右边插入
rpush key element [element ...]
//获取元素
lrange key start stop
lpop/rpop(头/尾 弹出元素)
lindex 按照索引下标获得元素(从上到下)
llen(长度)
lrem key count value(批量删除key中的count个value)
ltrim key start stop(截取key 从start到stop 左闭右闭 并重新赋值给key)
rpoplpush source destination(从源元素底部弹出一个元素放到目标元素头部上)
lset key index value(将索引上的值改成value)
linsert key BEFORE|AFTER pivot value(在指定值的前或后添加value)
Set 集合 (单值多value)
//添加元素
sadd key member [member ...]
//获取全部元素
smembers key
//判断指定value是否存在key中
sismember key member
scard key (获取集合里面的元素个数)
srem key value (删除集合中的指定value)
srandmember count(随机取出count个值)注意原始集合中的元素不变
spop key (随机出栈一个元素) 注意 弹出的元素不在原始集合中了
smove key1 key2 value(将key1里面的value移到keys中)
Zset 有序集合
- redis zset 和 set一样也是string类型元素的集合,且不允许重复的成员
- 不同的是每个元素都会关联一个double类型的分数
- redis正是通过这个分数来为集合中的成员进行从小到大排序,zset的成员是唯一的,但分数(score)却可以重复
zadd:时间复杂度O(Mlog(N)) zrange
zrangebyscore key min max (按照排序的号来筛选)
zrangebyscore key min max limit 开始下标 多少步
zrem key value 删除某个value
zcard 获取个数
zcount key min max (获取一个区间的分数的数量)
zrank key value (拿到value的下角标)/zrevrank key value (逆序拿到下角标)
zscore key value(拿到指定key中的value的分数)
zrevrange key(倒叙显示所有的value)
到此Redis的经典五大数据类型已经介绍完毕了,bitmap,HyperLogLog,GEO,等的数据类型,我们下期再见🔥