概述
一.Redis中常见的数据结构
众所周知啊,Redis中有五大数据结构,分别是String,List,Set,ZSet和Hash。接下来我会简单介绍一下几中数据结构的操作指令和使用场景,各位看官如果有所收获的话点个赞在走咯。
本来应该先讲key的操作,但是key的操作演示需要其他值,我就先说说如何操作String,然后将key的操作放在String后面各。
1.String
1.1.String结构
一个value对应一个key
key | value |
---|---|
name | victory |
age | 18 |
1.2.String设置key value
set key value #设置一个key,对应的值为value
set name victory #设置key为name,值为victory
set age 18 #设置key为age,值为18
1.3.String获取值
get key #根据key拿到对应的value值
get name #查找key为name对应的value值
get age #查找key为age对应的value值
1.4.String批量设置key value
mset key1 value1 key2 value2 #设置key1对应的值为value1,key2对应的值为value2
mset name victory age 18 #设置key为name的对应值为victory,key为age的对应值为18
1.5.String批量获取值
mget key1 key2 #批量获取key1,key2分别对应的value
mget name age #批量获取key为name的值和key为age的值
1.6.加法运算,前提key对应的value必须是数字类型的,否则会报错
ERR value is not an integer or out of range,且如果key不存在则初始化一个0
key对应的值加一
incr key #key对应的value加一(key不存在,则初始化为0,再加1)
incr age #age对应的value加一
对应key的值加自定义大小
incrby key increment #key对应的值加increment
incrby age 18 #age对应的值加18
设置为18,增长1后值为19,再增长18后为37
1.7.减法运算,前提同加法运算,如果key不存在则初始化一个0
key对应的值减一
decr key #key对应的value减一(key不存在,则初始化为0,再减1)
decr age #age对应的value减一
对应key的值加自定义大小
decrby key increment #key对应的值减increment
decrby age 18 #age对应的值减18
2.Redis中key的操作
keys * #查看所有的key
del key #删除指定的key
expire key 10 #设置key的过期时间为10秒(默认单位为秒)
ttl key #查看key的过期时间
库中存有两个key分别为name和age
删除name后可以看到只有age一个key
给age这个key设置10秒过期时间,10秒后age失效
重新设置两个key分别为name和age
设置age过期时间10秒,查看过期时间等过期后再尝试拿age就为空了
查看所有key只剩name一个key
select index #选择数据库的索引(默认有16个数据库,对应索引分别为0-15,index为数据库的索引)
flushdb #清空当前数据库
flushall #清空所有数据库(相当于删除Redis存储的所有数据)
Redis默认有16个库,我们可以通过可视化工具更加直观的查看
查看之前我们现在第一个库中存name0=victory0,age0=18.0
然后切换到第二个库,可以看到在端口号后面多了一个[1](如下图),并在库中存name1=victory1,age1=18.1
这时我们查看所有key时只有在第二个库中存的两个值,
然后我们flushdb后再查看当前库中发现当前库中是没有值的,但是在索引0的库中还是存在的
flushall之后所有16个库中的数据就被删除了
3.List
list在Redis中也是频繁使用到的一种数据结构,我们可以通过它来实现队列和栈。
List的结构为一个key对应多个value
List机构模拟图
key | value | value | value |
---|---|---|---|
names | victory | victory1 | victory2 |
ages | 18 | 19 | 20 |
3.1.左边进:
lpush key value1 value2 value3
#***从key对应的list中左边插入value1,再插入value2,再插入value3***
##注意插入顺序呦,在实现对列的时候很容易搞错!!!
3.2.右边进:
rpush key value1 value2 value3
#***从key对应的list中右边插入value1,再插入value2,再插入value3***
##注意插入顺序呦,在实现对列的时候很容易搞错!!!
3.3.左边出:
lpop key #移除并返回列表key的头(最左边)元素。
3.4.右边出:
rpop key #移除并返回列表key的尾(最右边)元素。
3.5.左边查(没有右边查):
lrange key start stop #返回列表key中指定区间内的元素
lrange key 0 -1 #查看key中的所有元素
3.6.删除key对应list中的元素
lrem key count value
#根据count值移除列表key中与参数value相等的元素
#count 0 : 从表头开始向表尾搜索,移除与value相等的元素,数量为count 。
#count < 0 : 从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值。
#count = 0 : 移除表中所有与value相等的值。
eg:
lrem name 1 victory #删除name列表中左边第1个“victory”
lrem name 0 victory #删除name列表中所有的“victory”
lrem name -1 victory #删除name列表中右边第1个“victory”
3.7.查找对应索引的元素
lindex key index #返回列表key中,下标为index的元素
lindex name 2 #取name集合中索引为2的元素
3.8.查范围
ltrim key start stop #对一个列表进行修剪,保留范围内的,范围外的删除
ltrim name 2 4 #删除name集合中索引为2 - 4以外的元素
3.10.Redis中实现栈和队列
list控制同一边进,同一边出就是栈
list控制一边进,另一边出就是队列
今天先到这里吧,感觉啰啰嗦嗦没多少东西就快3000字了,Redis数据结构中的最频繁的String和List就大致这些,还有Set,Zset和Hash放在下期讲吧,争取这周内更新。再下面几期会跟大家聊聊Redis的事务,发布订阅,持久化策略和淘汰策略的操作,以及我们的代码中该如何操作Redis。还望各位看官点个赞再走吧,给您劈个叉~
最后
以上就是缥缈百合为你收集整理的Redis入门到精通(三),Redis的数据结构与操作指令(一)的全部内容,希望文章能够帮你解决Redis入门到精通(三),Redis的数据结构与操作指令(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复