一、数据类型
1、String类型
1.1 基本的key-value类型,Redis利用C语言写的,但是Redis并没有用C的字符串表示,而是自己构建了一种简单的动态字符串。相比C的原生字符串,Redis的SDS不光可以保存文本数据还可以保存二进制数据,并且获取字符串长度的复杂度为O(1)
1.2 常用命令:set、get、strlen、incr、decr、setex等
1.3 应用场景:一般常用在需要计数的场景,比如用户访问次数、热点文章的转发等
2、list类型
2.1 list即是一种链表。链表是一种非常常见的数据结构,特点是易于数据元素的插入和删除可以灵活调整链表的长度。许多高级语言java也有linkedlist,redis的list实现是一个双向链表。
2.2 常用命令rpush,lpop,lpush,rpop,lrange,llen等
应用场景:发布与定于或者消息队列、慢查询。
3、Hash
3.1 类似于jdk8中的hashmap,内部实现也差不多(数组+链表),不过redis的hash做了更多的优化。hash是一个string类型的field和value的映射表,特别适用于存储对象,后续操作的时候,可以仅仅修改对象的某个字段。比如hash数据结构来存储用户信息,商品信息等。
3.2 常用命令:hset、hmset、hexists、hget、hgetall、hvals等
3.3 应用场景:系统中对象数据的存储。
(hmset userInfoKey name "guide" description "dev" age "24"
)
4、Set
4.1 类似于java中的hashset,redis中的set类型是一种无需集合,集合中元素没有先后。set可以轻易实现交集、并集、差集等。比如共同粉丝共同关注等。
4.2 sadd、spop,smembers,sismember,scard,sinterstore,sunion等
4.3 需要存放的数据不能重复以及需要获得数据的交集和并集等
5、zset
5.1 和set相比,sorted增加了一个权重参数score,使得集合中的元素能够按score进行有序排列,还可以通过score的范围获取元素。有点像java hashmap和treeset的结合体
5.2 常用命令:zadd、zcard,zscore、zrange,zrevrange,zrem等
5.3 需要对数据某个权重进行排序的场景。比如直播系统中,实时排行信息,包含直播间礼物排行,在线用户列表,各种礼物排行等。
6、bitmap
6.1 bitmap存储的是连续的二进制数字(0和1),通过bitmap,只需要一个bit位来表示某个元素对应的值,key就是对应元素本身。bitmap很节省空间
6.2 常用命令:setbit、getbit、bitcount、bitop
6.3 应用场景:适合需要保存状态信息(签到、登录)并需要进一步对这些信息进行分析的场景,用户签到情况,活跃用户情况,用户行为统计,比如用户是否点赞过某个视频
7、
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。