Redis之五大数据类型

Redis数据类型

本仙鱼最近在学Linux,然后就学了Redis,感觉很有意思,来做一下分享.
  • Redis是一种典型的Nosql(非关系)型数据库,存储方式不再是关系型数据库中的表(table)的形式,而是"Key-Value"的存储方式;
  • 对于数据量多,数据交互效率要求高的场景,可以考虑使用redis;
  • 数据类型一共有五大类:String,List,Set,ZSet,Hash,下面我们一个一个介绍一下:

1 String

1 这个String可不是你想当然的字符串,而是一个一个Key-Value;注意这里的映射关系的一对一,即一个Key对应一个Value,如下表:
KeyValue
id1
usernamexiaoming
age18
genderboy
2 在Linux中操作的相关指令及描述
指令示例描述
setset username mingming设置一个Key为username,Value为mingming(同一个Key重复此操作将覆盖前面设置的Value)
getget username获取Key为username的Value值
msetmset age 18 gender boy同时设置多个Key-Value:age-18,gender-boy
mgetmget username age boy同时获取多个Key对应的Value值
getsetgetset username xiaming获取Key为username的value值并修改为xiaoming
strlenstrlen username获取Key为username对应的Value值得长度
appendappend username aaa为Key为username得Value追加aaa,前提是这个Key是存在得
getrangegetrange username 3 5截取Key为username的Value对应的下标为3-5之间的内容,对原始的值没有影响
setexsetex username 8 zhangsan对Key设置存活期,对,就是你让他或多长时间,单位是秒
psetexpsetex username 8000 zhangsan和上面的这个一样,只是单位为毫秒
setnxsetnx username mingming这个操作和set一样都是设置Key-Value,只是若Key存在时,set会覆盖Value的值,而setnx不会覆盖,只有当Key是不存在时才会生效
msetnxmsetnx username ming age 19 gender boy这个操作和mset类似都是设置多个Key-Value,当设置的Key已存在时,mset覆盖Key对应的Value值,msetnx不会覆盖,只有当Key不存在时才生效
decr/incrdecr age /incr age对Key为age的Value进行加一/减一的操作,这里只能操作Value为integer类型的Key
decrby/incrbydecrby age 5/incrby age 5对Key为age的Value进行加减5的操作,这里只能操作Value为integer类型的Key
incrbyfloatincrbyfloat age 10.6根据提供的数据加入浮点数(若想减的话加一个负的浮点数就可以啦)
keys *keys *查看所有的Key
ttlttl username查看Key为username的剩余存活时间
deldel username删除Key为username的Key-Value
flushDBflushDB删除当前库中的所有数据(Redis默认是有0-15,一共16个库)
selectselect 5选择Redis的第六个库(库为0-15)
后面的三个后面的同样适用哇,如此细致到位的指令,贴心不,点个赞哇~

2 List

1 List不就是集合嘛,这里的List是一个Key对应了多个Value值,可以理解为是一对多的Key-Value,这里的Value是有序的┗|`O′|┛ 嗷~~
KeyValue
usernamexiaoming,zhangsan,lisi
age18,19,20,21
2 在Linux中操作的相关指令及描述
指令示例描述
lpushlpush username mingming lisi zhangsan将某个(几个)值加入到一个key列表头部
lpushxlpush username lisi同lpush,但是必须要保证这个key存在
rpushrpush username haha hehe heihei将某个(几个)值加入到一个key列表末尾
rpushxrpushxusername lala tuitui同rpush,但是必须要保证这个key存在
lpoplpop username返回和移除列表的第一个元素
rpoprpop username返回和移除列表的最后一个元素
lrangelrange username 0 5获取某一个下标区间内的元素(下标从0开始)
llenllen username获取列表元素个数
lsetlset username 4 yyyy设置某一个位置的元素(替换已有的某个值)
lindexlindex username 2获取某一个位置的元素
lremlrem username 2 mmnn从列表头起,删除对应位置开始的指定元素
ltrimltrim username 2 6保留列表中特定区间内的元素,将其他的元素删除
linsertlinsert username after/before oldvalue newvalue在某一个元素之前,之后插入新元素

3 Set

1 Set也是一个一对多的Key-Value,与List不同的是这里的Key对应的Values们是无序的

在这里插入图片描述

2 在Linux中操作的相关指令及描述
指令示例描述
saddsadd username lisi wangwu为集合添加元素
smemberssmembers username显示集合中所有元素 无序
scardscard username返回集合中元素的个数
spopspop username随机返回并移除一个元素
smovesmove oldset newset hahah从一个集合中向另一个集合移动元素
sremsrem username mingming从集合中删除一个元素
sismembersismember username mingming判断一个集合中是否含有这个元素
srandmembersrandmember username 2随机返回元素,对原始数据没有影响
sdiffsdiff username1 username2减去两个集合中共有的元素
sintersinter username1 username2求交集
sunionsunion username1 username2求并集

4 ZSet

1 说到ZSet你可能会有一个疑问,上面已经介绍了Set,这个ZSet是个什么鬼?Set集合的Key对应的Values是无序的,那么ZSet就是加了一些规则,使Set好像变的有序了,实际上还是无序的…你能转过来不?

在这里插入图片描述

2 话不多说,直接上指令吧(简略的一写,累啊~)
指令示例描述
zaddzadd username 1 a 2 b 3 c添加一个有序集合元素,根据元素的score排序,这里的1, 2,3emmm,你理解为权重吧,越小越靠前
zcardzcard username返回集合的元素个数
zrangezrange username 1 5返回一个范围内的元素
zrangebyscorezrangebyscore key min max按照分数查找一个范围内的元素
zrankzrank key xx返回对应元素的排名
zrevrankzrevrank key xx返回对应元素倒序排名
zscorezscore key xxx显示某一个元素的分数
zremzrem key 4移除某一个元素
zincrbyzincrby key score xx给某个特定元素加分

5 Hash

1 Hash哈希,说到这里我想起来了二叉树,老兔子生小兔子的故事,哈哈算是比较形象的比喻吧,前面的四种数据类型都是Key对应Value,注意了,Hash中的Key对应的是一个一个的Key-Value,如下图:

在这里插入图片描述

2 在Linux中操作的相关指令及描述
指令示例描述
hsethset user username xiaoming设置一个key/value对
hgethget user username获得一个key对应的value
hmsethmset user age 18 school qh设置多个key/value
hmgethmget user age school获得多个key的value
hgetallhgetall user获得所有的key/value对
hdelhdel user username age删除某一个key/value对
hexistshexists user username判断一个key是否存在
hkeyshkeys user获得所有的key
hvalshvals user获得所有的value
hsetnxhsetnx key filed value设置一个不存在的key的值
hincrbyhincrby key filed 2为value进行加法运算
hincrbyfloathincrbyfloat key filed 2.2为value加入浮点值
到这里你学会了吗?反正我是会咯
有问题请在留言中给出,给孩子点个赞吧~
仙鱼提前祝您端午节快乐~
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值