redis常用数据类型


前言

redis 是一种高性能的key-value数据库,所以对key的操作是最基础的东西,这里写的关于key与redis常用数据类型的一些东西。


一、key操作

1.查看当前库所有的key

keys *

2.判断某个key是否存在

exist key

3.查看key的数据类型

type key

4.删除指定的key数据

del key

unlink key 根据value 选择非阻塞删除

这两个都能删除数据

unlink 删除数据,仅将keys 从keyspace 元数据中删除,真正的删除会在后续异步操作

5.设置过期时间

expire key 10 默认是以秒为单位

6.查看剩余存在时间

ttl key -1表示永不过期 -2表示已过期

二、String相关操作

1.简介

String 是Redis 最基本的类型,一个key 对应一个value

String类型是二进制安全的。意味着Redis的string 可以包含任何数据

String类型是redis最基本的数据类型,一个redis中的字符串value最多可以是512M

2.增删改查

2.1 添加数据

添加单个key-value
set key value

setnx key value
setnx只有在key不存在时才设置key的值
在这里插入图片描述
添加多个key-value
mset key value key value key value …
在这里插入图片描述在这里插入图片描述
msetnx key value key value key value…
在这里插入图片描述
msetnx 在设置中,只要有一个key被设置过,其他的都不会成功

在这里插入图片描述
设置过期时间的同时设置内容
setex key 秒数 value
在这里插入图片描述

设置新值的时候,获得旧值

在这里插入图片描述

2.2 删除数据

del key(1就代表删除成功了)

在这里插入图片描述

2.2 修改数据

如果我们需要重新修改一遍
set key 新的value

在这里插入图片描述

如果我们需要在原来的value的基础上添加数据
append key value

在这里插入图片描述

需要注意的是,
1.如果所写的key是不存在的,append会自动添加一个key。也就说,在key不存在的情况下,该命令的效果和set key value的效果是相同的

在这里插入图片描述

2.如果你想往里面添加空格,value可以写成 这样的形式" "
如果你想添加的字符串里面有空格,也要在 " " 里面写,比如"hello world"

在这里插入图片描述
指定位置添加字符串
setrange key 下标值 value
在这里插入图片描述
这个类似于word 的insert模式

我提醒几点

第一,在该命令中,修改的文字从指定的下标值开始,
比如说,你指定了从3下标值开始改,那么下标值3的那个位置就变了,请看上面那个图

第二,修改的字数是不受限制的,没有说,只能修改以前那些字数,超字数就报错了
在这里插入图片描述

2.3 查看数据

因为是key-value数据库,所有我们知道key就能查看数据,命令也很简单

查看单个数据

get key

上面已经多次用到了get,这里就不再演示了
查看多个数据
mget key key key
在这里插入图片描述
这样无聊也是行的
在这里插入图片描述
获取字符串片段
我个人觉得其实就是切片操作
getrange key start end(下标)
在这里插入图片描述
关于切片,读者应该很熟悉了,我只提醒几点

redis的下标值是从0开始的
两边都是闭区间

2.4 对数字类型进行加减操作

2.4.1 增加

自增1
incr key(要注意,只能对数字值进行操作)
在这里插入图片描述

在这里插入图片描述
增加特定数字
incrby key 数字

在这里插入图片描述

2.4.2 减少

自减1
decr key

在这里插入图片描述

减少特定数字
decrby key 数字
在这里插入图片描述

这些数字可以减少到负数
在这里插入图片描述

2.5 获取字符串长度

strlen key

在这里插入图片描述

三、list操作

1.简介

list这种数据结构是单键多值

关于redis的list,可以简单的理解为双向链表,至于底层的东西具体是什么样子,以后再了解吧

2.增

因为底层是双向链表,所以很多操作要分左右

lpush key value value value value …

从左边插入一个或多个值(注意顺序,1因为从左往右先添加,所以在最右边,也就是第三个)
在这里插入图片描述
rpush key value value value value …
在这里插入图片描述
问,如果我先使用左push,添加1,2,3,然后再使用右push 4,5,6,请问这些数字的顺序是什么。好好想一想再看答案吧。
在这里插入图片描述

linsert key before(after) value newvalue在这里插入图片描述

3.删

lpop key 从左边删除一个值
在这里插入图片描述

rpop key 从右边删除一个值
在这里插入图片描述
注意:如果值删完了,key也不存在了

在这里插入图片描述

从右边吐出一个值,插入到key列表左边
rpoplpush key1 key2
在这里插入图片描述
替大家试过了,没有lpoprpush

从左边删除n个value(从左到右)

lrem key n value

注意,假设你的list里面存在2个"v1",你的n写成一个大于2的数也是可以的,不会报错

在这里插入图片描述

4.改

修改某个值
lset key index value 将下标为 index 的值替换成为value

在这里插入图片描述

5.查

lrange key start end (下标从左向右)
在这里插入图片描述

我替大家试过了,没有rrange

5.获取列表长度

llen key
在这里插入图片描述

6.按照索引下标获取元素(从左到右)

lindx key index

列表的索引我相信各位已经很熟了
在这里插入图片描述

四、set操作

redis 的set 是一个自动去重的无序集合。跟python的set挺像的。

1.增

**sadd key value1 value2…**可以将一个或多个member元素加入到集合key中,已经存在的member元素将被忽略

在这里插入图片描述

2.删

srem key value1 value2 … 删除集合中的某个元素
在这里插入图片描述
spop key 随机从该集合中删除一个值
在这里插入图片描述
srandmember key n 随机 从该集合中取出n个值,不会从集合中删除
在这里插入图片描述

3.改

我暂时还没看到可以对里面的值进行修改的操作

4.查

smembers key 取出该集合的所有值
在这里插入图片描述

在这里插入图片描述

scard key返回该集合的元素个数
在这里插入图片描述

5.set之间的运算

为了更好的演示,我新创建了两个set
s1 有 1 2 3 4
s2 有 2 3 5 6
请记住他们,我们下面都是基于这两个来演示
在这里插入图片描述
smove key1 key2 value 把集合中的一个值从一个集合移动到另外一个集合

在这里插入图片描述
sinter key1 key2 返回两个集合的交集元素
在这里插入图片描述
sunion key1 key2 ** 返回两个集合的并集元素
在这里插入图片描述
sdiff key1 key2 返回两个集合的
差集**元素(key1中的,不包含key2中的)
在这里插入图片描述

6.判断是否存在value

sismember key value 判断集合 key 是否为含有该value值,有1,没有0
在这里插入图片描述

五、hash 操作

1.简介

hash这种数据类型,不是一个key对应一个value,而是一个key对应一张表,
key→fields→values

2.数据结构

Hash 类型对应的数据结构是两种:ziplist (压缩列表),hashtable(哈希表),当field-value长度较短且个数较少时,使用ziplist,否则使用hashtable。

3.增

设置单个field value
hset key field value
在这里插入图片描述
设置多个field value
hmset key field value field value …
hset key field value field value …

注意!!! HSET过去只能设置一个键值对。而且,如果您需要一次设置多个,则必须使用HMSET(M表示多重)。几年前进行了更改,以允许两个命令都接受多个对。现在HMSET是多余的。根据Redis 4.0.0,HMSET被视为已弃用(但是还可以继续使用)。请在新代码中使用HSET。

在这里插入图片描述
当且仅当域field不存在时才能添加成功
hsetnx key field value
在这里插入图片描述

在这里插入图片描述

4.删

hdel key field
在这里插入图片描述

5.改

使用hset这种就能对表进行修改

6.查

取出全部的field-value
hgetall key
在这里插入图片描述
取出全部的field
hkeys key
在这里插入图片描述
取出全部的value
hvals key
在这里插入图片描述
取出单个的value
hget key field
在这里插入图片描述

7.判断存在

hexists key field
查看哈希表key中,给定域field是否存在

8.对数字进行操作

还记得user:1001中的id吗?我们可以比较方便的进行自增和自减操作。

在这里插入图片描述

五、zset 操作

1.简介

有序集合zset与普通集合的相同之处在于,他们都是一个没有重复元素的字符串集合

不用之处在于,zset会指定一个**评分(score)**进行排序(score 可以重复)

2.增

zadd key score1 value1 score2 value2,
将一个或多个member元素及其score值加入到有序集key当中
在这里插入图片描述

3.删

zrem key value
删除该集合下,指定值的元素
在这里插入图片描述

4.改

zincrby key increment value 为元素的score 加上值

在这里插入图片描述

5.查

查所有

zrange key start stop [withscores]
默认是从小到大排序
返回有序集合key中,下标在start stop 之间的元素
withsocres就是说带不带scores显示,可写可不写
在这里插入图片描述
**zrevrange key start stop [withscores]**从大到小

在这里插入图片描述

根据分数查所有

zrangebyscore key min max [withscores]

根据分数来把values选择出来,withscores可写可不写

在这里插入图片描述

zrevrangebyscore key max min [withscores]
同上面一样,但是变成了从大到小排序

但是要注意!!! 参数变成了先写max 再写 min
在这里插入图片描述
查看元素分数
zscore key member
查member元素的分数

在这里插入图片描述
查看集合中元素个数

zcard key
在这里插入图片描述
查看指定分数范围内的元素个数

zcount key min max

在这里插入图片描述

6.排序

zrank key value 返回该值在集合中的排名,从0开始

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值