Redis支持哪些数据类型

前言
redis之所以被广泛使用,不只是因为它快,还因为它除了支持最简单的字符串(string)类型外,它还支持好几种数据类型:
哈希(hash)
列表(list)
集合(set)
有序集合(sorted set)
位图 ( bitmap )
string
string为最简单的类型,一个key对应一个value,它还可以存二进制的对象(bitmap)。
示例:
127.0.0.1:6379> set mykey aminglinux.comok127.0.0.1:6379> get mykeyaminglinux.com127.0.0.1:6379> mset key1 1 key2 a key3 c127.0.0.1:6379> mget key1 key2 key31) 12) a3) c hash
hash是键值对的集合。在 redis 中,hash是字符串字段和字符串值之间的映射。因此,它们适合表示对象。比如用户的昵称、年龄、性别、积分等。 示例:
127.0.0.1:6379> hset hash1 name aming127.0.0.1:6379> hget hash1 nameaming127.0.0.1:6379> hset hash1 age 30127.0.0.1:6379> hget hash1 age30127.0.0.1:6379> hgetall hash11) name2) aming3) age4) 30 list
list是一个链表结构,主要功能是push、pop获取一个范围的所有值等等。操作中key理解为链表的名字。 使用list 结构,我们可以轻松地实现最新消息排行等功能(比如新浪微博的 timeline )。list 的另一个应用就是消息队列,可以利用list的push操作,将任务存在list 中,然后工作线程再用pop操作将任务取出进行执行。
示例:
127.0.0.1:6379> lpush list1 aminglinux127.0.0.1:6379> lpush list1 1 2 3127.0.0.1:6379> lpush list1 aaa bbb127.0.0.1:6379> lrange list1 0 -11) aaa bbb2) 1 2 33) aminglinux“127.0.0.1:6379> lpop list1 set
set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。操作中key理解为集合的名字。比如在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。因为redis非常人性化的为集合提供了求交集、并集、差集等操作,那么就可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。
示例
127.0.0.1:6379> sadd set1 a127.0.0.1:6379> sadd set1 b127.0.0.1:6379> sadd set1 c127.0.0.1:6379> sadd set1 d127.0.0.1:6379> smembers set11) d2) b3) a4) c127.0.0.1:6379> srem set1 c//删除元素127.0.0.1:6379> sadd set2 a 2 b127.0.0.1:6379> sinter set1 set2 //交集127.0.0.1:6379> sunion set1 set2 //并集127.0.0.1:6379> sdiff set1 set2 //差集 sorted set
sorted set是有序集合,它比set多了一个权重参数score,使得集合中的元素能够按score进行有序排列,比如一个存储全班同学成绩的sorted set,其集合value 可以是同学的学号,而score就可以是其考试得分,这样在数据插入集合的时候,就已经进行了天然的排序。 示例
127.0.0.1:6379> zadd set3 12 abc127.0.0.1:6379> zadd set3 2 cde 123127.0.0.1:6379> zadd set3 24 123-aaa127.0.0.1:6379> zadd set3 4 a123a127.0.0.1:6379> zrange set3 0 -11) cde 1232) a123a3) abc4) 123-aaa 倒序
127.0.0.1:6379> zrevrange set3 0 -11) 123-aaa2) abc3) a123a4) cde 123 bitmap
bitmap,即位图,它从严格意义上来说,并不是一种独立的数据类型,而是一种特殊的string数据类型。它是一串连续的二进制数组(0和1),可以通过偏移量(offset)定位元素。
bitmap通过最小的单位bit来进行0|1的设置,表示某个元素的值或者状态,时间复杂度为o(1)。
由于bit是计算机中最小的单位,使用它进行储存将非常节省空间,特别适合一些数据量大且使用二值统计的场景。
示例
127.0.0.1:6379> setbit aaa:001 10001 1 # 返回操作之前的数值(integer) 0127.0.0.1:6379> setbit aaa:001 10002 2 # 如果值不是0或1就报错(error) err bit is not an integer or out of range127.0.0.1:6379> setbit aaa:001 10002 0(integer) 0127.0.0.1:6379> setbit aaa:001 10003 1(integer) 0  由于这种数据场景用的并不多,所以不多做解释了  


EA将与38 Studios签署协议 发行RPG游戏
电子记帐控税终端机设计的片上系统SOC芯片研究
Microchip推出首款完全可配置的碳化硅MOSFET数字栅极驱动器,可将开关损耗降低50%
大功率电源中的MOSFET功耗计算
电子管功放6p1和6p14哪个好
Redis支持哪些数据类型
4G DTU使用教程及注意事项
链状、环状硅酸盐类宝玉石材质反射率光谱特征分析
图为科技&深圳人工智能产业协会重磅推出边缘计算机全新概念
针对平板电脑的多种有源和无源器件设计方案
邯郸联通正式开通了2个5G试验基站
IBM 推出 5 亿美元的企业级 AI 风险投资基金
由蜂窝发射模块,讨论射频屏蔽方案
喜报!赛思入选2023年浙江省制造业单项冠军培育企业名单!
物联网技术分类对应频率是哪些
蔚来汽车自研芯片“杨戬”将于10月正式量产
小米公布伸缩式大光圈镜头技术,通过伸缩结构轻松收纳于手机之中
天能电池一直在走循环经济之路
Autodesk推出自动计算3D打印切片软件VariSlice
钮扣电池有哪些别?