大家好,我是飞鸟,上次学习Redis的总结没有写,今天补上,如果文章对你有帮助,点赞,关注支持一下小编🤞
推荐阅读:
Redis五大数据类型使用详解~
一、字符串(String)
字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。你可以用其存储用户的邮箱、JSON化的对象甚至是一张图片。
划重点:
一个字符串类型健可以存储的数据的最大容量是512MB.
字符串类型是其他4种数据类型的基础,其他数据类型和字符串类型的差别从某种角度来说只是组织字符串的形式不同。例如,列表类型是以列表的形式组织字符串,而集合类型是以集合的形式组织字符串。
SET和GET是Redis
中最简单的两个命令,它们实现的功能和编程语言中的读写变量相似,还有一点大小写都可以,一般习惯大写。
- 设置指定key的值
SET key value
- 获取指定key的值
GET key
例如我们设置索引为k2,值为v2的键值对数据
127.0.0.1:6379> SET K2 V2 OK 127.0.0.1:6379> GET K2 "V2"
当键不存在时会返回空结果。
127.0.0.1:6379> GET K3 (nil)
- 返回key中字符串值的子字符
- key为索引,start为截取的起始下标,end为截取的终止下标
GETRANGE key start end
例如创建索引“mykey”,值为“feiniao”的键值对。
127.0.0.1:6379> SET mykey feiniao OK 127.0.0.1:6379> GET mykey "feiniao" 127.0.0.1:6379> GETRANGE mykey 2 3 "in"
2是起始下标,从f为0下标开始数,截取2取i,终止3取n,这样是不是很好理解。
- 获取所有(一个或多个)给定key的值
MGET key1 [key2…]
创建两个键值对,索引分别是“mykey1”和“mykey2”,值为v1,v2,然后索引为mykey3的结果空的
127.0.0.1:6379> SET mykey1 v1 OK 127.0.0.1:6379> SET mykey2 v2 OK 127.0.0.1:6379> MGET mykey1 mykey2 mykey3 1) "v1" 2) "v2" 3) (nil)
这时你有没有发现一个一个创建会不会麻烦,对了,我们还能同时创建多个键值对。
- 同时设置多个键值对
MSET key1 value1 [key2 value2…]
同时创建两个键值对,索引为“mykey3”和“mykey4”,值为v3,v4
127.0.0.1:6379> MSET mykey3 v3 mykey4 v4 OK 127.0.0.1:6379> MGET mykey3 mykey4 1) "v3" 2) "v4"
- 返回key所存储的字符串值的长度
STRLEN key
索引为mykey5,值为feiniao,数一下正好7个字母。
127.0.0.1:6379> SET mykey5 feiniao OK 127.0.0.1:6379> STRLEN mykey5 (integer) 7
- 将key中存储的数字值增一
INCR key
127.0.0.1:6379> SET mykey6 7 OK 127.0.0.1:6379> INCR mykey6 (integer) 8
- 将key中的存储数字值减一
DECR key
127.0.0.1:6379> SET mykey7 6 OK 127.0.0.1:6379> DECR mykey7 (integer) 5
- 将key所存储的值加上给定的增量值
INCRBY key increment
值增加5,很简单的。
127.0.0.1:6379> SET mykey7 20 OK 127.0.0.1:6379> INCRBY mykey7 5 (integer) 25
- 如果key已经存在并且是一个字符串,APPEND命令将指定的value追加到该key原来值的末尾
APPEND key value
127.0.0.1:6379> SET mykey8 feiniao OK 127.0.0.1:6379> APPEND mykey8 YYDS (integer) 11 127.0.0.1:6379> GET mykey8 "feiniaoYYDS"
好了,字符串基本命令就到这,当然不止这些命令,只是指出常用的命令。
二、散列类型(Hash)
我们现在已经知道Redis是采用字典结构以键值对的形式存储数据的,而hash的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据类型,换句话说,散列类型不能嵌套其他的数据类型。
划重点:一个散列类型键可以包含至多2^32-1个字段
设置Hash数据所使用的命令不是SET,而是HMSET,你可以理解为H代表Hash的意思,M代表Map的意思,该命令的格式如下:
- 同时将多个field-value(域-值)对设置到哈希表key中
HMSET key field1 value1 [field2 value2…]
Redis Hmset 命令用于同时将多个 field-value (字段-值)对设置到哈希表中。此命令会覆盖哈希表中已存在的字段。如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。
字段field为f1,f2,值为v1,v2
127.0.0.1:6379> HMSET mykey9 f1 v1 f2 v2 OK 127.0.0.1:6379> HGET mykey9 f1 "v1" 127.0.0.1:6379> HGET mykey9 f2 "v2" 127.0.0.1:6379> HGET mykey9 f3 (nil) 127.0.0.1:6379>
- KEY为对应着这个Hash数据的索引
HGETALL key
当所有字段和字段值却不知道键中有哪些字段时,应该使用HGETALL命令查找所有数据
127.0.0.1:6379> HGETALL mykey9 1) "f1" 2) "v1" 3) "f2" 4) "v2"
- 获取存储在哈希表中指定字段的值
HGET key field
127.0.0.1:6379> HGET mykey9 f1 "v1"
- 删除一个或多个哈希表字段
HDEL key field1 [field2]
127.0.0.1:6379> HDEL mykey9 f1 (integer) 1 127.0.0.1:6379> HGETALL mykey9 1) "f2" 2) "v2"
- 获取所有哈希表中的字段数量
HLEN key
127.0.0.1:6379> HLEN mykey9 (integer) 1
- 获取所有哈希表中的字段,也就是获取field
HKEYS key
返回哈希表中所有域(field)列表。 当 key 不存在时,返回一个空列表。
127.0.0.1:6379> HKEYS mykey9 1) "f2"
- 有获取字段就有获取值,所有值
HVALS key
127.0.0.1:6379> HVALS mykey9 1) "v2"
三、list类型
列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端增加元素,或者获得列表的某一个片段,在Redis中可以指定是在列表的头部或者尾部插入。所以你也可以把它看作是一个LinkedList结构。
- 将一个或多个元素插入列表表头
LPUSH key value1 [value2]
127.0.0.1:6379> LPUSH mylist fn1 fn2 fn3 (integer) 3
- 将一个或多个元素插入列表尾部
RPUSH key value1 [value2…]
127.0.0.1:6379> LPUSH mylist fn1 fn2 fn3 (integer) 3 127.0.0.1:6379> RPUSH mylist fn4 fn5 fn6 (integer) 6
经过两轮插入,列表是这样的:[fn3,fn2,fn1,fn4,fn5,fn6]
- 获取列表长度,key为要查询长度的列表的索引
LLEN key
127.0.0.1:6379> LLEN mylist (integer) 6
- 通过索引获取列表中的元素
LINDEX key index
127.0.0.1:6379> LINDEX mylist 2 "fn1" 127.0.0.1:6379> LINDEX mylist 5 "fn6"
- 移除并获取列表第一个元素,key返回第一个元素的列表的索引
LPOP key
127.0.0.1:6379> LPOP mylist "fn3"
- 移除并获取列表最后一个元素,返回移除最后一个元素
RPOP key
127.0.0.1:6379> RPOP mylist "fn6"
四、set集合
集合的概念相信大家以前的数学课就了解过,在集合中的每个元素都是不同的,没有顺序。
划重点:一个集合类型set键可以存储至多2^32-1个字符串
集合类型和列表类型对比:
集合类型 | 列表类型 | |
存储内容 | 至多2^32-1个字符串 | 至多2^32-1个字符串 |
有序性 | 否 | 是 |
唯一性 | 是 | 否 |
- 向集合添加一个或多个成员,返回值是插入的成员的个数
SADD key member1 [member2…]
127.0.0.1:6379> SADD myset m1 m2 (integer) 2
- 获取集合中成员的个数,返回成员个数
SCARD key
127.0.0.1:6379> SCARD myset (integer) 2
- 返回第一个集合与其他集合之间的差异
SDIFF key1 [key2…]
myset1相对于myset2之间的差异,"m3"和“m4”
127.0.0.1:6379> SADD myset1 m3 m4 m5 (integer) 3 127.0.0.1:6379> SADD myset2 m5 feiniao feiniao1 (integer) 3 127.0.0.1:6379> SDIFF myset1 myset2 1) "m3" 2) "m4"
- 返回所给定所有集合的交集
SINTER key1 [key2…]
127.0.0.1:6379> SADD myset1 m3 m4 m5 (integer) 3 127.0.0.1:6379> SADD myset2 m5 feiniao feiniao1 (integer) 3 127.0.0.1:6379> SINTER myset1 myset2 1) "m5"
- 返回集合中的所有元素
SMEMBERS key
127.0.0.1:6379> SMEMBERS myset2 1) "m5" 2) "feiniao1" 3) "feiniao"
五、有序集合类型(Zset)
有序集合类型的特点从他的名字中就可以猜到,与集合类型的区别就是“有序”二字,有序集合中的每一个元素都会关联一个double类型的分数(也可以理解为权重),redis也正是通过分数来为集合中的成员进行从小到大排序的。所以有序集合的成员是虽然唯一的,但是分数(score)却是可以重复的。
- 向有序集合中添加一个或多个成员
ZADD key score1 member1 [score2 menber2]
127.0.0.1:6379> ZADD myzset 1 z1 2 z2 3 z3 (integer) 3
- 获取有序集合的成员数
ZCARD key
127.0.0.1:6379> ZCARD myzset (integer) 3
- 计算有序集合中指定区间分数的成员数
ZCOUNT key min max
127.0.0.1:6379> ZCOUNT myzset 1 3 (integer) 3
- 移除有序集合中的一个或多个元素
ZREM key member1 [member2…]
127.0.0.1:6379> ZREM myzset z1 (integer) 1
今天的学习暂时到这里。
赠人玫瑰,手有余香