我是靠谱客的博主 淡定芹菜,这篇文章主要介绍Redis详解(三)数据类型操作命令string、hash、list第三章 Redis数据类型操作命令,现在分享给大家,希望可以做个参考。

文章目录

  • 第三章 Redis数据类型操作命令
    • 1.字符串类型(string)
      • 1.1 基本命令(key 区分大小写)
        • (1)set
        • (2)get
        • (3)incr
        • (4)decr
        • (5)append
      • 1.2 常用命令
        • (1)strlen
        • (2)getrange
        • (3)setrange
        • (4)mset
        • (5)mget
    • 2.哈希类型 hash
      • 2.1 基本命令
        • (1)hset
        • (2)hget
        • (3)hmset
        • (4)hmget
        • (5)hgetall
        • (6)hdel
      • 2.2 常用命令
        • 1.hkeys
        • 2.hvals
        • 3.hexists
    • 3.列表 list
      • 3.1 基本命令
        • (1)lpush
        • (2)rpush
        • (3)lrang
        • (4)lindex
        • (5)llen
      • 3.2常用命令
        • (1)lrem
        • (2)lset
        • (3)linsert

字节跳动校招内推码: NH19EF9
投递链接: https://jobs.toutiao.com/s/L3bLQM3

第三章 Redis数据类型操作命令

1.字符串类型(string)

​ 字符串类型是redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据,序列化后的数据,json格式数据。

​ value值最多可以存512M。

1.1 基本命令(key 区分大小写)

(1)set

  • 作用:将字符串值value设置到key中。
  • 语法:set key value
复制代码
1
2
3
127.0.0.1:6379> set k3 "{'name':'lisi','age':'20'}" OK

(2)get

  • 作用:获取key中设置的字符串值
  • 语法:get key
复制代码
1
2
3
4
5
6
7
8
## 获取k3的值 127.0.0.1:6379> get k3 "{'name':'lisi','age':'20'}" ## k100不存在 127.0.0.1:6379> get k100 (nil) ## nil相当于null

(3)incr

  • 将key中存储的数字值加1,如果key不存在,则key的值先被初始化为0在执行incr操作(只能对数字类型的数据操作)
  • 语法:incr key
  • 用途:做计数器
复制代码
1
2
3
4
5
6
7
127.0.0.1:6379> set index 1 OK 127.0.0.1:6379> incr index (integer) 2 127.0.0.1:6379> incr index (integer) 3

如果是储存的不是数字

复制代码
1
2
3
127.0.0.1:6379> incr k1 (error) ERR value is not an integer or out of range

如果incr的值不存在

复制代码
1
2
3
4
5
6
7
8
9
10
11
127.0.0.1:6379> keys * 1) "world" 2) "home" 3) "k1" 4) "word" 5) "index" 6) "age" 7) "k3" 127.0.0.1:6379> incr k4 ## 没有k4 执行的操作是k4赋初值并且加1. (integer) 1

(4)decr

  • 用途:将key中存储的数字值减1。如果key不存在,那么key的值先被初始化为0再执行decr操作(只能对数字类型的数据操作)。
  • 语法:decr key
复制代码
1
2
3
4
5
6
7
8
## 不是整形的情况 127.0.0.1:6379> decr k1 (error) ERR value is not an integer or out of range 127.0.0.1:6379> decr k4 (integer) 0 127.0.0.1:6379> decr k4 (integer) -1

如果key不存在

复制代码
1
2
3
127.0.0.1:6379> decr k6 ## 赋值为0然后减1。 (integer) -1

(5)append

  • 语法:append key value
  • 说明:
    • 如果key存在,则将value追加到原来旧值的末尾
    • 如果key不存在,则将key创建。
复制代码
1
2
3
4
5
6
7
8
127.0.0.1:6379> append k1 linux (integer) 10 127.0.0.1:6379> get k1 "hellolinux" ## k7不存在,那么就等同于set 127.0.0.1:6379> append k7 springmvc (integer) 9

1.2 常用命令

(1)strlen

  • 语法: strlen key
  • 说明:返回key所存储的字符串值的长度
  • 返回值:
    • 如果key存在,返回字符串值的长度。
    • key不存在,返回0
复制代码
1
2
3
4
5
127.0.0.1:6379> strlen k7 (integer) 9 127.0.0.1:6379> strlen k100 (integer) 0

(2)getrange

  • 语法:getrange key start end
  • 作用:获取key中字符串从start开始到end结束的子字符串,包括start和end,负数表示从字符串的末尾开始,-1 表示最后一个字符。
    • h e l l o
    • 0 1 2 3 4
    • -5 -4 -3 -2 -1
  • 返回值:截取的子字符串。
复制代码
1
2
3
4
5
6
7
8
9
127.0.0.1:6379> set school bytedance OK 127.0.0.1:6379> getrange school 2 4 "ted" 127.0.0.1:6379> getrange school -5 -1 "dance" 127.0.0.1:6379> getrange school 0 -1 "bytedance"

(3)setrange

  • 语法:setrange key offset value
  • 说明:用value覆盖(替换)key的存储的值从offset开始,不存在的key做空白字符串。
  • 返回值:修改后的字符串的长度。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
## 这里tomcat写错了 127.0.0.1:6379> set item java-tmocat OK ##从第5个字符开始修改 127.0.0.1:6379> setrange item 5 tom (integer) 11 ## 表示一共11个字符。 127.0.0.1:6379> get item "java-tomcat" 127.0.0.1:6379> setrange item 5 123456789 (integer) 14 127.0.0.1:6379> get item "java-123456789" ## key不存在的情况 127.0.0.1:6379> setrange item_null 5 isNull (integer) 11 127.0.0.1:6379> get item_null "x00x00x00x00x00isNull"

(4)mset

  • 语法:mset key value [key value…]

  • 说明:同时设置一个或多个key-value 键值对

  • 返回值:OK

复制代码
1
2
mset k1 v1 k2 v2 k3 v3

(5)mget

  • 语法:mget key[keys …]
  • 作用:获取所有(一个或多个)给定key的值。
  • 返回值:包含所有key的列表
复制代码
1
2
3
4
5
127.0.0.1:6379> mget k1 k111 k1 1) "v1" 2) (nil) 3) "v1"

2.哈希类型 hash

Redis hash 是一个string 类型的field和value的映射表,hash特别适合用于存储对象。

2.1 基本命令

(1)hset

  • 语法:hset hash表的key field value

  • 作用:将哈希表key中的域field的值设为value,如果key不存在,则新建hash表,执行赋值,如果有field,则覆盖值。

  • 返回值:

    • 如果field是hash表中新field,且设置值成功,返回1。

      复制代码
      1
      2
      3
      127.0.0.1:6379> hset website baidu www.baidu.com (integer) 1
    • 如果field已经存在,旧值覆盖新值,返回0。

(2)hget

复制代码
1
2
3
4
5
127.0.0.1:6379> hget website baidu "www.baidu,com" 127.0.0.1:6379> hget website csdn "www.csdn,com"

(3)hmset

  • 语法:hmset key field value [field value…]
  • 说明:
    • 同时将多个 field-value(域-值)设置到哈希表key中。
    • 此命令会覆盖已经存在的field,hash表key不存在,创建空的hash表,执行hmset。
  • 返回值:设置成功返回ok,如果失败返回一个错误。
复制代码
1
2
3
4
5
127.0.0.1:6379> hmset website baidu www.baidu,com google www.google.com csdn www.csdn,com OK 127.0.0.1:6379> hget website csdn "www.csdn,com"

(4)hmget

  • 语法:hmget key
  • 作用:获取哈希表key中一个或多个给定域的值
  • 返回值:返回和field顺序对应的值,如果field不存在,返回nil
复制代码
1
2
3
4
127.0.0.1:6379> hmget website csdn baidu 1) "www.csdn,com" 2) "www.baidu,com"

(5)hgetall

  • 语法:hgetall key
  • 作用:获取哈希表key中所有的域和值。
  • 返回值:以列表形式返回hash中域和域的值,key不存在,返回空hash
复制代码
1
2
3
4
5
6
7
8
127.0.0.1:6379> hgetall website 1) "baidu" 2) "www.baidu,com" 3) "google" 4) "www.google.com" 5) "csdn" 6) "www.csdn,com"

(6)hdel

  • 语法:hdel key field [field…]
  • 作用:删除哈希表key中的一个或多个指定域field,不存在field直接忽略
  • 返回值:成功删除的field的数量。
复制代码
1
2
3
4
5
6
7
127.0.0.1:6379> hdel website baidu f1 csdn f2 (integer) 2 ## 成功删除了两个 127.0.0.1:6379> hgetall website 1) "google" 2) "www.google.com"

2.2 常用命令

1.hkeys

  • 语法:hkeys key
  • 作用:查看哈希表key中的所有field域
  • 返回值:包含所有field的列表,key不存在返回空列表
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
127.0.0.1:6379> hgetall myuser 1) "name" 2) "zhangsan" 3) "age" 4) "20" 5) "sex" 6) "man" 127.0.0.1:6379> hkeys myuser 1) "name" 2) "age" 3) "sex"

2.hvals

  • 语法:hvals key
  • 作用:返回哈希表中所有域的值
  • 返回值:包含哈希表所有域值的列表,key不存在返回空列表
复制代码
1
2
3
4
5
127.0.0.1:6379> hvals myuser 1) "zhangsan" 2) "20" 3) "man"

3.hexists

  • 作用判断域下的key是否存在。
  • 返回值:有返回1,没有返回0。
复制代码
1
2
3
4
5
6
127.0.0.1:6379> hexists myuser name (integer) 1 127.0.0.1:6379> hexists myuser birth (integer) 0

hash表中没有任何数据的时候,key值会被自动删掉。

3.列表 list

​ redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

3.1 基本命令

(1)lpush

  • 语法:lpush key value [value…]
  • 作用:将一个或多个值value插入到列表key的表头(最左边),从左边开始加入值,从左到右的顺序依次插入到表头。
  • 返回值:数字,新列表的长度。
复制代码
1
2
3
4
5
6
7
127.0.0.1:6379> lpush mylist a b c (integer) 3 127.0.0.1:6379> lpush mylist d e (integer) 5 127.0.0.1:6379> lpush mylist2 a b c (integer) 3

(2)rpush

  • 语法:rpush key value [value…]
  • 作用:将一个或多个值value插入到列表key的表尾(最右边),从左到右的顺序依次插入到表尾。
  • 返回值:数字,新列表的长度。
复制代码
1
2
3
127.0.0.1:6379> rpush mylist 1 2 3 (integer) 8

(3)lrang

  • 语法:lrange key start stop
  • 作用:获取key中指定区间内的元素,0表示列表的第一个元素,以1表示列表的第二个元素;start,stop是列表的下表值,也可以负数下表,-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。
  • 返回值:指定区间的列表。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
127.0.0.1:6379> rpush lang c php java rust python c# c++ dart js (integer) 9 127.0.0.1:6379> lrange lang 1 3 1) "php" 2) "java" 3) "rust" 127.0.0.1:6379> lrange lang -5 -3 1) "python" 2) "c#" 3) "c++" 127.0.0.1:6379> lrange lang 0 100 1) "c" 2) "php" 3) "java" 4) "rust" 5) "python" 6) "c#" 7) "c++" 8) "dart" 9) "js"

(4)lindex

  • 语法:lindex key index
  • 作用:获取列表key中下标为指定index的元素,列表元素不删除,只是查询。
    • 0表示列表的第一个元素,以1表示列表的第二个元素
    • start,stop是列表的下标值,也可以负数的下标。
    • -1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。
  • 返回值:指定下标的元素,index不在列表范围,返回nil
复制代码
1
2
3
4
5
6
7
127.0.0.1:6379> lindex lang 2 "java" 127.0.0.1:6379> lindex lang -2 "dart" 127.0.0.1:6379> lindex lang 100 (nil)

(5)llen

  • 语法:lien key
  • 作用:获取列表key的长度
  • 返回值:数值,列表的长度;key不存在返回0
复制代码
1
2
3
127.0.0.1:6379> llen lang (integer) 9

3.2常用命令

(1)lrem

  • 语法:lrem key count value
  • 作用:根据参数cout的值,移除列表中与参数value相等的元素,count>0,从列表的左侧向右开始移除;count<0从列表的尾部开始移;count=0移除表中所有与value相等的值。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
127.0.0.1:6379> lrange course 0 -1 1) "html" 2) "js" 3) "mysql" 4) "js" 5) "java" 6) "html" 7) "spring" 8) "mysql" 9) "springmvc" 10) "java" 11) "mysql" 12) "html" 13) "js" ## 从头部删除两个js 127.0.0.1:6379> lrem course 2 js ## 删除两个js (integer) 2 127.0.0.1:6379> lrange course 0 -1 1) "html" 2) "mysql" 3) "java" 4) "html" 5) "spring" 6) "mysql" 7) "springmvc" 8) "java" 9) "mysql" 10) "html" 11) "js" ## 从尾部删除两个mysql 127.0.0.1:6379> lrem course -2 mysql (integer) 2 127.0.0.1:6379> lrange course 0 -1 1) "html" 2) "mysql" 3) "java" 4) "html" 5) "spring" 6) "springmvc" 7) "java" 8) "html" 9) "js" ## 全部删除html lrem course 0 html

(2)lset

  • 语法:lset key index value
  • 作用:将列表key下标为index的元素的值设置为value。
  • 返回值:设置成功返回ok;key不存在或者index超出范围返回错误信息。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
127.0.0.1:6379> lrange course 0 -1 1) "mysql" 2) "java" 3) "spring" 4) "springmvc" 5) "java" 6) "js" ## 将spring替换为SSM 127.0.0.1:6379> lset course 2 SSM OK 127.0.0.1:6379> lrange course 0 -1 1) "mysql" 2) "java" 3) "SSM" 4) "springmvc" 5) "java" 6) "js"

(3)linsert

  • 语法:linsert key BEFORE AFTER pivot value
  • 作用:将值value插入到列表key当中位于值pivot之前或之后的位置。key不存在,pivot不在列表中,不执行任何操作。
  • 返回值:命令执行成功,返回新列表长度。没有找到pivot返回-1,key不存在返回0。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
##在ssm之前加入linux 127.0.0.1:6379> linsert course before SSM linux (integer) 7 127.0.0.1:6379> lrange course 0 -1 1) "mysql" 2) "java" 3) "linux" 4) "SSM" 5) "springmvc" 6) "java" 7) "js"

最后

以上就是淡定芹菜最近收集整理的关于Redis详解(三)数据类型操作命令string、hash、list第三章 Redis数据类型操作命令的全部内容,更多相关Redis详解(三)数据类型操作命令string、hash、list第三章内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部