前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《redis in action》redis的5种数据类型

《redis in action》redis的5种数据类型

作者头像
写一点笔记
发布2022-08-11 16:01:10
2850
发布2022-08-11 16:01:10
举报
文章被收录于专栏:程序员备忘录程序员备忘录

redis基础数据类型。redis提供的基础的数据类型包括string、list、set、hash、zset。其中我们在开发中可能比较常用的是string、list和set。因为这几种数据类型在各种编程语言来说都有。除此之外还有hash的这种基于key和value的映射数据类型,最后是比较特殊的zset。这几种数据类型的对比关系如下图所示:

代码语言:javascript
复制
string:string、int、flout类型的数据。
lsit:string类型的链表数据
set:不能重复的没有顺序的集合
hash:没有顺序,的key和value的映射
zset(sorted set):具有顺序特质的映射关系数据。

1.string

在redis中,string类型跟我们编程语言中的string类型的数据类型很类似,或者其他的key-value的存储类型。书上说了好多,感觉比较枯燥。这块的意思就是咋存一个key,然后对应的value是string类型的。然后redis提供了一些操作这个string的命令,包括get、set、del等。

这里是做的一些测试,比如set成功之后就能返回一个ok等等,书中对详细的过程都注释了。因为这块很简单,本人就不实操了。书中还对redis-client做了说明,也没啥重点。

2.List

这块说的是list就是通过一个统一的key来维护一个String集合,list数据机构提供的操作包括push和pop,具体的有从左侧或者右侧push(lpush,rpush),或者从左侧右侧获取(lpop,rpop),还有通过下标来获取lindex,还有通过一个范围来获取lrange,当然这里的l表示从左侧来获取。

这块的命令操作书中总结的很详细。这里本人也再打一遍汉字。

代码语言:javascript
复制
rpush list1 itme   #添加元素
rpush list1 itme1 #添加元素
lrange list1 0 -1 #获取全部列表  0 -1表示获取全部
lindex list1 1    # 获取下标为1的元素
lpop list1  #从左侧来弹出来一个元素

当然redis还提供了很多对list的操作,比如trim还是删除中间元素等等等。书中说第三章会详细介绍!


3.SET

redis的set和list是不一样的,list能够保持序列,但是set则通过hash表的方式保障数据的独一无二性。因为set是无序的,所以我们就不能像操作list那样push或者pop,事实上,我们添加或者移除元素使用的是sadd和srem命令,我们可以用sismember来查询一个元素是否在这个set里,当然也可以使用smember这个命令获取一个元素,但是要注意的是这个命令在大set的时候会比较慢。在表1.5中,sadd表示添加一个元素到set中,smembers表示返回一个元素,sismembers表示检测是否存在一个元素,srem表示如果一个元素存在那么就移除它。

这块原作者也总结的很好,这块翻译一下啊。

代码语言:javascript
复制
sadd set1 item #添加一个元素到set中
sadd set1 item2 #添加元素,在添加元素中,返回1表示之前没有存在,0表示已经存在了。
smembers set1 #smembers表示获取所有元素
sismembers set1 time4  #返回该元素是否存在 1表示存在,0表示不存在
srem set1 itme #删除一个元素,返回0表示没有该元素,1表示删除成功了。

当然set还有其他的命令,不限于这里的添加和删除,还有sinter,sunion,sdiff等等。这块还是在第三章中介绍,在第七章中会用set解决一些牛逼的问题哈。


4.HASH

在reids中的list和set都是维护元素的序列?,redis中的hash数据结构存储一个key到value的映射关系,这个value可以存储在的和前边string的存储体是一样的,如果这个value能作为一个int,那么这个value可以增加或者降低。在图中我们看到hash结构中key是唯一的,无序的。value是和key相关联的。

这块的命令有:

代码语言:javascript
复制
hset:添加一个元素到hash表中
hget:通过key获取一个元素
hgetall:获取hash中的所有元素
hdel :如果存在那么就删除一个元素
代码语言:javascript
复制
hset has1 key1 value1 #添加一个元素,返回1表示添加成功,返回0表示添加失败或者已经存在
hgetall has1  #获取hash中的所有元素
hdel has1 key1 #删除一个元素,返回1表示删除成功了,返回0表示不存在

如果我们对关系型数据的存储比较熟悉的话,我们可以认为redis的hash类似于文档存储到文档存储器中?或者是关系型数据库的一个记录,这时候我们可以认为单个或者多个属性是关系数据库的属性。


5.ZSET

和reids的hash一样,zset也是一种key和value的结构类型,这个key也是独一无二的,这个key其实是元素成员,value就是分数,这个value被限制为浮点数,zset数据类型拥有一个独一无二的特性在redis里,因为元素的顺序是通过其对应的浮点数的值来排列的。这个图中说的很明白!zset也提供了添加删除获取的命令。

代码语言:javascript
复制
zadd:添加一个元素(附带浮点数的那种哦)
zrange:通过位置来获取zset中的排序数据
zrangebyscore:通过积分范围来获取zset中的有序元素
zrem:移除一个元素
代码语言:javascript
复制
zadd zset1 1 items1 #添加一个元素,返回1表示添加成功,0表示已经存在
zrange zset1 0 -1 withscores #通过积分排序获取所有元素
zrangebyscore zset1 0 800 withscope #获取指定积分范围内的元素
zrem zset1 items1 #移除一个元素,返回1表示移除成功,0表示移除失败!
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 写点笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档