我是靠谱客的博主 缥缈百合,最近开发中收集的这篇文章主要介绍Redis入门到精通(三),Redis的数据结构与操作指令(一),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一.Redis中常见的数据结构

        众所周知啊,Redis中有五大数据结构,分别是String,List,Set,ZSet和Hash。接下来我会简单介绍一下几中数据结构的操作指令和使用场景,各位看官如果有所收获的话点个赞在走咯。

        本来应该先讲key的操作,但是key的操作演示需要其他值,我就先说说如何操作String,然后将key的操作放在String后面各。

1.String

1.1.String结构

一个value对应一个key

keyvalue
namevictory
age18

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机构模拟图

keyvaluevaluevalue
namesvictoryvictory1victory2
ages181920

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的数据结构与操作指令(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部