七天玩转Redis | Day2、Redis五大数据类型使用详解总结

1. string类型

设定指定的key值

语法格式: set key value
key为键,value为值

127.0.0.1:6379[6]> set k1 v1
OK

获取指定key的值

get key

127.0.0.1:6379[6]> get k1
"v1"

返回key中字符的子串

GETRANGE key start end
start是截取开始的下标,end是截取结束的下标

127.0.0.1:6379[6]> getrange k2 2 5
"llo"

如果end的值超过了字符串的长度,那么还是截取到结尾为止,并且字符串的下标起始位置为0。

获取多个给定key的值

  上面我们讲了GET,但GET只能获取一个key的值,如果我们要一次获取多个,那么我们就要用MGET。

格式如下:
MGET key1 key2 key3…

127.0.0.1:6379[6]> mget k1 k2 k3
1) "v1"
2) "hello"
3) "world"

返回key对应字符的长度

格式如下:
STRLEN key

127.0.0.1:6379[6]> strlen k1
(integer) 2
127.0.0.1:6379[6]> strlen k2
(integer) 5

设置多个键值对

语法格式:
MSET key1 value1 key2 value2 key3 value3…

127.0.0.1:6379[6]> mset k4 v4 k5 v5 k6 v6
OK
127.0.0.1:6379[6]> mget k4 k5 k6
1) "v4"
2) "v5"
3) "v6"

将key中的数值加一
这个命令可以让我们存储的字符的值加一,并返回加后的结果,但如果key对应的不是数字的话,就会返回错误信息。

语法格式:
INCR key

127.0.0.1:6379[6]> set k7 10
OK
127.0.0.1:6379[6]> incr k7
(integer) 11
-- 如果不是数字的话
127.0.0.1:6379[6]> incr k1
(error) ERR value is not an integer or out of range

同样我们还可以指定数值进行增加

语法格式:
INCRBY key increment
increment是指需要增加的值

127.0.0.1:6379[6]> incrby k7 10
(integer) 21

将key的数值减一

语法格式:
DECR key

127.0.0.1:6379[6]> decr k7
(integer) 20

指定数值做减法

DECRBY key

127.0.0.1:6379[6]> decrby k7 10
(integer) 10

字符串追加
我们通过APPEND进行字符串的追加,格式如下:

APPEND key value

127.0.0.1:6379[6]> get k2
"hello"
127.0.0.1:6379[6]> append k2 ' world'
(integer) 11
127.0.0.1:6379[6]> get k2
"hello world"
127.0.0.1:6379[6]>

2. Hash类型

Hash类型其实就是string类型的映射表,之前我们都是单个单个的用key-value来存储数据,而Hash则可以存储多个key-value,这里我们用field-value来表示。
在这里插入图片描述
设置一个Hash数据
我们用HMSET来设置Hash数据,其中,H可以理解为Hash,M为Map,语法格式:

HMSET key field1 value1 field2 value2 …
key为这个Hash数据的一个索引
field为键
value为值

127.0.0.1:6379[6]> hmset h1 k1 v1 k2 v2 k3 v3
OK

获取指定hash表中的所有字段和值

语法格式:

HGETALL key

127.0.0.1:6379[6]> hgetall h1
1) "k1"
2) "v1"
3) "k2"
4) "v2"
5) "k3"
6) "v3"

获取hash表中指定字段的值

语法格式:

HFGET key field

127.0.0.1:6379[6]> hget h1 k1
"v1"

删除一个或多个hash表字段
这个操作是用HDEL,该命令可以删除指定hash表中的指定字段及其对应的值,格式如下:

HDEL key field1 field2 …

127.0.0.1:6379[6]> hdel h1 k1 k2 k3
(integer) 3

获取hash表中字段的数量

HLEN key

127.0.0.1:6379[6]> hlen h1
(integer) 3

获取hash表中的所有字段
该命令可以获取指定哈希表中所有的字段,但是不返回字段对应的值,格式如下:

HKEYS key

127.0.0.1:6379[6]> hkeys h1
1) "k1"
2) "k2"
3) "k3"

获取哈希表中所有的值
我们用HVALS获取所有值,但不获取字段,语法格式:

HVALS key

127.0.0.1:6379[6]> hvals h1
1) "v1"
2) "v2"
3) "v3"

List类型

  List类型相当于数据结构里的链表,可以对其进行头插和尾插。

将一个或多个元素
我们用LPUSH来从头部插入,L表示left。
语法格式:

LPUSH key value1 …
value可以插入多个,用空格隔开

127.0.0.1:6379[6]> lpush l1 test1 test2 test3
(integer) 3

将一个或多个元素插入列表尾部
用RPUSH从尾部插入,R表示right,语法格式:

RPUSH key value1 …

127.0.0.1:6379[6]> rpush l1 test4 test5 test6
(integer) 6

**注意:**经过以上的两轮插入,其排列为test3 test2 test1 test4 test5 test6

获取列表长度
如果我们想要查看指定列表中有多少个元素,获取列表的长度,那么可以使用LLEN命令,格式如下:

LLEN key

127.0.0.1:6379[6]> llen l1
(integer) 6

通过索引获取列表中的元素
我们可以用LINDEX来通过下标获取元素,格式如下:

LINDEX key index
index为对应下标

127.0.0.1:6379[6]> lindex l1 0
"test3"
127.0.0.1:6379[6]> lindex l1 5
"test6"

移除并获取第一个元素
LPOP可以益处第一个元素,并将其返回,语法格式:

LPOP key

127.0.0.1:6379[6]> lpop l1
"test3"

此时l1中就没有test3这个值了

移除并获取最后一个元素
语法格式:

RPOP key

127.0.0.1:6379[6]> rpop l1
"test6"

Set集合

set就是定义一个集合,集合中可以存放数据,且数据是无序且唯一的,不可重复。

添加一个或多个成员
向集合中添加元素的命令是SADD,返回值是插入的成员的个数,格式如下:

SADD key member1 …

127.0.0.1:6379[6]> sadd s1 t1 t2 t3
(integer) 3

获取集合中成员的个数
指令是SCARD,格式如下:

SCARD key

127.0.0.1:6379[6]> SCARD s1
(integer) 3

返回第一个集合与其他集合之间的差异

SDIFF key1 key2 …

127.0.0.1:6379[6]> sadd s2 t1 b ad
(integer) 3
127.0.0.1:6379[6]> sdiff s1 s2
1) "t3"
2) "t2"

s1[t1, t2, t3], s2[t1, b, ad],s1相比于s2,s1有t2和t3.

返回所给定所有集合的交集

SINTER key1 …

127.0.0.1:6379[6]> sinter s1 s2
1) "t1"

返回集合中的所有元素

SMEMBERS key

127.0.0.1:6379[6]> smembers s1
1) "t3"
2) "t1"
3) "t2"

ZSet

ZSet和Set类似,也是不允许重复成员的出现,但ZSet的成员是有序的,ZSet集合中的每个成员都会关联一个double类型的分数(可以理解为权重),而ZSet正是通过这些权重来排序的。

向一个有序的集合添加数据
通过ZADD命令,我们可以向有序集合中插入一个或多个成员,但是如果该成员已经存在的话,那么就会更新该成员所对应的分数,命令格式如下:

ZADD key score1 member1 [score2 member2…]
score为成员的分数
member为成员

127.0.0.1:6379[6]> zadd zs1 1 aa 2 bb 3 cc
(integer) 3

获取有序集合的成员数
ZCARD命令可以获得指定有序集合的成员变量个数,格式如下:

ZCARD key

127.0.0.1:6379[6]> zcard zs1
(integer) 3

计算有序集合中指定区间分数的成员数

ZCOUNT key min max
key为要查询的有序集合的索引
min为区间的最小值
max为区间的最大值

127.0.0.1:6379[6]> zcount zs1 1 2
(integer) 2

根据分数返回有序集合指定区间内的成员

ZRANGEBYSCORE key min max [WITHSCORES]
key表示查询的集合的索引
min表示score的最小值
max表示score的最小值
[WITHSCORES]是可选的,表示是否带上对应的score

127.0.0.1:6379[6]> zrangebyscore zs1 1 3
1) "aa"
2) "bb"
3) "cc"
127.0.0.1:6379[6]> zrangebyscore zs1 1 3 withscores
1) "aa"
2) "1"
3) "bb"
4) "2"
5) "cc"
6) "3"

移除有序集合中的一个或多个元素
如果想要移除有序集合中的一个或多个元素,我们可以使用ZREM命令,格式如下:

ZREM key member1 [member2…]
key为要移除成员的集合的索引
member为要移除的成员变量,可以存在多个,但是中间要以空格分隔

127.0.0.1:6379[6]> zrem zs1 aa bb
(integer) 2
127.0.0.1:6379[6]>
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

友人苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值