一、常用数据类型和应用场景
Redis是一个Key-Value的存储系统,使用ANSI C语言编写。
key的类型是字符串。value的数据类型有:
常用的:string字符串类型、list列表类型、set集合类型、sortedset(zset)有序集合类型、hash类型。
不常见的:bitmap位图类型、geo地理位置类型。
Redis5.0新增一种:stream类型
注意:Redis中命令是忽略大小写,(set SET),key是不忽略大小写的 (NAME name)
1.String类型
Redis的String能表达3种值的类型:字符串、整数、浮点数 100.01 是个六位的串
1.1常用操作
命令名称 命令描述
set set key value 赋值
get get key 取值
getset getset key value 取值并赋值
setnx setnx key value 当value不存在时采用赋值
set key value NX PX 3000 原子操作,px 设置毫秒数
append append key value 向尾部追加值
strlen strlen key 获取字符串长度
incr incr key 递增数字
incrby incrby key increment 增加指定的整数
decr decr key 递减数字
decrby decrby key decrement 减少指定的整数
1.2应用场景
- 1、key和命令是字符串
- 2、普通的赋值
- 3、incr用于乐观锁 incr:递增数字,可用于实现乐观锁 watch(事务)
- 4、setnx用于分布式锁 当value不存在时采用赋值,可用于实现分布式锁
2.List表
list列表类型可以存储有序、可重复的元素
获取头部或尾部附近的记录是极快的
list的元素个数最多为2^32-1个(40亿)
2.1常用操作如下图所示
2.2应用场景
- 作为队列使用(先进先出)或者作为栈使用(先进后出)
列表有序可以作为栈和队列使用
- 可用于各种列表,比如用户列表、商品列表、评论列表等
3.Hash类型(散列表)
3.1常用操作
命令名称 命令格式 描述
hset hset key field value 赋值,不区别新增或修改
hmset hmset key field1 value1 field2 value2 批量赋值
hsetnx hsetnx key field value 赋值,如果filed存在则不操作
hexists hexists key filed 查看某个field是否存在
hget hget key field 获取一个字段值
hmget hmget key field1 field2 ... 获取多个字段值
hgetall hgetall key
hdel hdel key field1 field2... 删除指定字段
hincrby hincrby key field increment 指定字段自增increment
hlen hlen key 获得字段数量
3.2应用场景
对象的存储 ,表数据的映射
4.set集合类型
无序、唯一元素,集合中最大的成员数为 2^32 - 1
4.1常用操作
命令名称 命令格式 描述
sadd sadd key mem1 mem2.... 为集合添加新成员
srem srem key mem1 mem2.... 删除集合中指定成员
smembers smembers key 获得集合中所有元素
spop spop key 返回集合中一个随机元素,并将该元素删除
srandmember srandmember key 返回集合中一个随机元素,不会删除该元素
scard scard key 获得集合中元素的数量
sismember sismember key member 判断元素是否在集合内
sinter sinter key1 key2 key3 求多集合的交集
sdiff sdiff key1 key2 key3 求多集合的差集
sunion sunion key1 key2 key3 求多集合的并集
4.2 应用场景
适用于不能重复的且不需要顺序的数据结构
比如:关注的用户,还可以通过spop进行随机抽奖
5.Sortedset有序集合类型
SortedSet(ZSet) 有序集合: 元素本身是无序不重复的
每个元素关联一个分数(score),可按分数排序,分数可重复
5.1常用操作
命令名称 命令格式 描述
zadd zadd key score1 member1 score2member2 ... 为有序集合添加新成员
zrem zrem key mem1 mem2 .... 删除有序集合中指定成员
zcard zcard key 获得有序集合中的元素数量
zcount zcount key min max 返回集合中score值在[min,max]区间的元素数量
zincrby zincrby key increment member 在集合的member分值上加increment
zscore zscore key member 获得集合中member的分值
zrank zrank key member 获得集合中member的排名(按分值从小到大)
zrevrank zrevrank key member 获得集合中member的排名(按分值从大到小)
zrange zrange key start end 获得集合中指定区间成员,按分数递增排序
zrevrange zrevrange key start end 获得集合中指定区间成员,按分数递减排序
5.2应用场景
由于可以按照分值排序,所以适用于各种排行榜。比如:点击排行榜、销量排行榜、关注排行榜等。