标签:场景 Redis bitmap 链表 set 常用命令
一、数据类型
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、
标签:场景,Redis,bitmap,链表,set,常用命令 来源: https://www.cnblogs.com/Alei777/p/16266713.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。