字符串(String):可以存储任意类型的数据,比如字符串、整数、浮点数等。
Redis中String数据类型的常用命令包括:
SET key value,设置键key的值为value。GET key,获取键key的值。STRLEN key,获取键key的值的长度。APPEND key value,将值value追加到键key的值的末尾。INCR key,将键key的值加1。DECR key,将键key的值减1。INCRBY key increment,将键key的值增加指定的increment值。DECRBY key decrement,将键key的值减少指定的decrement值。EXPIRE key seconds,为键key设置过期时间,单位为秒。DEL key,删除指定的键key。应用场景: 一般常用在需要计数的场景,比如用户的访问次数、热点文章的点赞转发数量等等。
列表(List):按照插入顺序存储一组有序的元素,元素可以重复。可以执行从列表头部或尾部插入、删除、修剪等操作。
Redis中List数据类型的常用命令包括:
LPUSH key value1 [value2 ...],将一个或多个值插入到列表key的左边。RPUSH key value1 [value2 ...],将一个或多个值插入到列表key的右边。LRANGE key start stop,获取列表key中指定范围内的元素。LLEN key,获取列表key的长度。LPOP key,从列表key的左边弹出并返回第一个元素。RPOP key,从列表key的右边弹出并返回第一个元素。LINSERT key BEFORE|AFTER pivot value,在列表key中,在元素pivot前或后插入新元素value。LSET key index value,将列表key中索引位置的元素设置为value。LINDEX key index,获取列表key中索引位置的元素值。LTRIM key start stop,保留列表key中指定范围内的元素,其他元素删除。应用场景: 发布与订阅或者说消息队列、慢查询。
存储键值对的无序集合,适合存储对象的属性。可以对单个哈希键执行设置、获取、删除操作,也可以对整个哈希执行获取全部键值对等操作。
Redis中Hash数据类型的常用命令包括:
HSET key field value,设置哈希表 key 中字段 field 的值为 value。HGET key field,获取哈希表 key 中字段 field 的值。HMSET key field1 value1 [field2 value2 ...],同时设置多个字段的值。HMGET key field1 [field2 ...],同时获取多个字段的值。HGETALL key,获取哈希表 key 中的所有字段和值。HEXISTS key field,判断哈希表 key 中是否存在字段 field。HDEL key field1 [field2 ...],删除哈希表 key 中的一个或多个字段。HLEN key,获取哈希表 key 中字段的数量。HKEYS key,获取哈希表 key 中的所有字段。HVALS key,获取哈希表 key 中的所有值。应用场景: 系统中对象数据的存储。
集合(Set):存储唯一、无序的元素集合,不允许重复。可以对集合进行添加、删除、查找、交集、并集等操作。
Redis中Set数据类型的常用命令包括:
SADD key member1 [member2 ...],向集合key中添加一个或多个元素。SMEMBERS key,获取集合key中的所有成员。SISMEMBER key member,判断元素member是否是集合key的成员。SCARD key,获取集合key的基数。SREM key member1 [member2 ...],从集合key中移除一个或多个元素。SPOP key,从集合key中随机移除并返回一个元素。SRANDMEMBER key [count],从集合key中返回一个或多个随机元素。SINTER key1 [key2 ...],计算给定多个集合的交集。SUNION key1 [key2 ...],计算给定多个集合的并集。SDIFF key1 [key2 ...],计算给定多个集合的差集。应用场景: 需要存放的数据不能重复以及需要获取多个数据源交集和并集等场景。
有序集合(Sorted Set):存储唯一、有序的元素集合,每个元素都关联一个分数,用于根据分数排序。可以对有序集进行添加、删除、查找、按照分数范围获取等操作。
Redis中有序集合(Sorted Set)数据类型的常用命令包括:
ZADD key score1 member1 [score2 member2 ...],向有序集合key中添加一个或多个成员,每个成员都关联一个分数进行排序。ZCARD key,获取有序集合key的成员数量。ZSCORE key member,获取有序集合key中指定成员的分数。ZINCRBY key increment member,将有序集合key中指定成员的分数增加increment。ZRANGE key start stop [WITHSCORES],按索引区间获取有序集合key的成员,可选择同时返回成员的分数。ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count],按分数范围获取有序集合key的成员,可选择同时返回成员的分数,并可设置偏移量和数量。ZREM key member1 [member2 ...],从有序集合key中移除一个或多个成员。ZCOUNT key min max,计算有序集合key在指定分数范围内的成员数量。ZRANK key member,获取有序集合key中指定成员的排名,按分数从小到大排序,排名从0开始。ZREVRANK key member,获取有序集合key中指定成员的分数值,按分数从大到小排序,排名从0开始。应用场景: 需要对数据根据某个权重进行排序的场景。比如在直播系统中,实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕消息(可以理解为按消息维度的消息排行榜)等信息。
Bitmap 存储的是连续的二进制数字(0 和 1),通过 bitmap, 只需要一个 bit 位来表示某个元素对应的值或者状态,key 就是对应元素本身 。我们知道 8 个 bit 可以组成一个 byte,所以 bitmap 本身会极大的节省储存空间。
Redis中位图(Bitmap)数据类型的常用命令包括:
SETBIT key offset value,设置位图key中指定偏移量上的位值为value(0或1)。GETBIT key offset,获取位图key中指定偏移量上的位值。BITCOUNT key [start end],统计位图key中指定范围内(闭区间)的值为1的位的数量。
BITOP AND destkey key [key ...],对指定的一个或多个位图key执行逻辑与操作,并将结果存储到destkey中。BITOP OR destkey key [key ...],对指定的一个或多个位图key执行逻辑或操作,并将结果存储到destkey中。BITOP NOT destkey key,对指定的位图key执行逻辑非操作,并将结果存储到destkey中。BITOP XOR destkey key [key ...],对指定的一个或多个位图key执行逻辑异或操作,并将结果存储到destkey中。GETRANGE key start end,获取位图key中指定范围内的子位图。SETRANGE key offset value,设置位图key中指定范围内的位值为value,并返回修改后的位图。应用场景: 适合需要保存状态信息(比如是否签到、是否登录…)并需要进一步对这些信息进行分析的场景。比如用户签到情况、活跃用户情况、用户行为统计(比如是否点赞过某个视频)。