微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Redis

一、数据类型

  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] 举报,一经查实,本站将立刻删除。

相关推荐