string

  1. string类型,也就是字符串类型,是Redis中最简单的存储类型。
  2. 其value是字符串,不过根据字符串的格式不同,又可以分为3类:
    • string:普通字符串。
    • int:整数类型,可以做自增,自减操作。
    • float:浮点类型,可以做自增.自减操作。
KEY Value
message hello world
number 18
score 87.6

APPEND

  1. 将字符串附加到key的值。如果key不存在,则创建该key。

  2. 语法:

APPEND key value
  1. 示例:
redis> EXISTS mykey
(integer) 0
redis> APPEND mykey "Hello"
(integer) 5
redis> APPEND mykey " World"
(integer) 11
redis> GET mykey
"Hello World"

DECR

  1. 将key的整数值减1。如果key不存在,则使用0作为初始值。

  2. 语法:

DECR key
  1. 示例:
redis> SET mykey "10"
"OK"
redis> DECR mykey
(integer) 9
redis> SET mykey "234293482390480948029348230948"
"OK"
redis> DECR mykey
(error) value is not an integer or out of range

DECRBY

  1. 从key的整数值中减去一个数字。如果key不存在,则使用0作为初始值。

  2. 语法:

DECRBY key decrement
  1. 示例:
redis> SET mykey "10"
"OK"
redis> DECRBY mykey 3
(integer) 7

GET

  1. 返回key的字符串值。

  2. 语法:

GET key
  1. 示例:
redis> GET nonexisting
(nil)
redis> SET mykey "Hello"
"OK"
redis> GET mykey
"Hello"
  1. Go代码:
 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
package example_commands_test

import (
"context"
"fmt"

"github.com/redis/go-redis/v9"
)

func ExampleClient_Set_and_get() {
ctx := context.Background()

rdb := redis.NewClient(&redis.Options{
    Addr:     "localhost:6379",
    Password: "", // no password docs
    DB:       0,  // use default DB
})



err := rdb.Set(ctx, "bike:1", "Process 134", 0).Err()
if err != nil {
    panic(err)
}

fmt.Println("OK")

value, err := rdb.Get(ctx, "bike:1").Result()
if err != nil {
    panic(err)
}
fmt.Printf("The name of the bike is %s", value)

}

GETDEL

  1. 在删除key后返回key的字符串值。

  2. 语法:

GETDEL key
  1. 示例:
redis> SET mykey "Hello"
"OK"
redis> GETDEL mykey
"Hello"
redis> GET mykey
(nil)

GETEX

  1. 在设置key的过期时间后返回key的字符串值。

  2. 语法:

GETEX key [EX seconds | PX milliseconds | EXAT unix-time-seconds |
    PXAT unix-time-milliseconds | PERSIST]
  • EX seconds – 设置指定的过期时间,以秒为单位。
  • PX milliseconds – 设置指定的过期时间,以毫秒为单位。
  • EXAT timestamp-seconds – 设置key到期的指定Unix时间,以秒为单位。
  • PXAT timestamp-milliseconds – 设置key到期的指定Unix时间,以毫秒为单位。
  • PERSIST – 删除与该key关联的生存时间。
  1. 示例:
redis> SET mykey "Hello"
"OK"
redis> GETEX mykey
"Hello"
redis> TTL mykey
(integer) -1
redis> GETEX mykey EX 60
"Hello"
redis> TTL mykey
(integer) 60

GETRANGE

  1. 返回存储在key中的字符串的子字符串。

  2. 语法:

GETRANGE key start end
  1. 示例:
redis> SET mykey "This is a string"
"OK"
redis> GETRANGE mykey 0 3
"This"
redis> GETRANGE mykey -3 -1
"ing"
redis> GETRANGE mykey 0 -1
"This is a string"
redis> GETRANGE mykey 10 100
"string"

GETSET

  1. 将key设置为新值后返回key的前一个字符串值。

  2. 语法:

GETSET key value
  1. 示例:
redis> INCR mycounter
(integer) 1
redis> GETSET mycounter "0"
"1"
redis> GET mycounter
"0"

INCR

  1. 将key的整数值加1。如果key不存在,则使用0作为初始值。

  2. 语法:

INCR key
  1. 示例:
redis> SET mykey "10"
"OK"
redis> INCR mykey
(integer) 11
redis> GET mykey
"11"

INCRBY

  1. 将key的整数值增加一个数字。如果key不存在,则使用0作为初始值。

  2. 语法:

INCRBY key increment
  1. 示例:
redis> SET mykey "10"
"OK"
redis> INCRBY mykey 5
(integer) 15

INCRBYFLOAT

  1. 将key的浮点值增加一个数字。如果key不存在,则使用0作为初始值。

  2. 语法:

INCRBYFLOAT key increment
  1. 示例:
redis> SET mykey 10.50
"OK"
redis> INCRBYFLOAT mykey 0.1
"10.6"
redis> INCRBYFLOAT mykey -5
"5.6"
redis> SET mykey 5.0e3
"OK"
redis> INCRBYFLOAT mykey 2.0e2
"5200"

LCS

  1. 查找最长的公共子字符串。

  2. 语法:

LCS key1 key2 [LEN] [IDX] [MINMATCHLEN min-match-len] [WITHMATCHLEN]
  1. 示例:
> MSET key1 ohmytext key2 mynewtext
OK
> LCS key1 key2
"mytext"
> LCS key1 key2 LEN
(integer) 6
> LCS key1 key2 IDX
1) "matches"
2) 1) 1) 1) (integer) 4
        1) (integer) 7
        1) 1) (integer) 5
        1) (integer) 8
    2) 1) 1) (integer) 2
        2) (integer) 3
        1) 1) (integer) 0
        1) (integer) 1
3) "len"
4) (integer) 6

MGET

  1. 自动返回一个或多个key的字符串值。

  2. 语法:

MGET key [key ...]
  1. 示例:
redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> MGET key1 key2 nonexisting
1) "Hello"
2) "World"
3) (nil)

MSET

  1. 自动创建或修改一个或多个key的字符串值。

  2. 语法:

MSET key value [key value ...]
  1. 示例:
redis> MSET key1 "Hello" key2 "World"
"OK"
redis> GET key1
"Hello"
redis> GET key2
"World"

MSETNX

  1. 仅在不存在所有key时才自动修改一个或多个key的字符串值。(仅当key不存在时才会设置value)

  2. 语法:

MSETNX key value [key value ...]
  1. 示例:
redis> MSETNX key1 "Hello" key2 "there"
(integer) 1
redis> MSETNX key2 "new" key3 "world"
(integer) 0
redis> MGET key1 key2 key3
1) "Hello"
2) "there"
3) (nil)

PSETEX

  1. 设置key的字符串值和过期时间(以毫秒为单位)。如果key不存在,则创建该key。

  2. 语法:

PSETEX key milliseconds value
  1. 示例:
redis> PSETEX mykey 1000 "Hello"
"OK"
redis> PTTL mykey
(integer) 998
redis> GET mykey
"Hello"

SET

  1. 设置key的字符串值,忽略其类型。如果key不存在,则创建该key。

  2. 语法:

SET key value [NX | XX] [GET] [EX seconds | PX milliseconds |
    EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL]
  • EX seconds – 设置指定的过期时间,单位为秒(正整数)。
  • PX milliseconds – 设置指定的过期时间,单位为毫秒(正整数)。
  • EXAT timestamp-seconds – 设置key到期的指定Unix时间,以秒为单位(一个正整数)。
  • PXAT timestamp-milliseconds – 设置key到期的指定Unix时间,以毫秒为单位(正整数)。
  • NX – 仅在key不存在时设置该key。
  • XX – 只有当key已经存在时才设置它。
  • KEEPTTL – 保留与该key关联的生存时间。
  • GET – 返回存储在key处的旧字符串,如果key不存在则返回nil。如果存储在key处的值不是字符串,则返回错误并终止’ SET ‘。
  1. 注意:由于SET命令选项可以取代SETNX, SETEX, PSETEX, GETSET,在Redis的未来版本中,这些命令可能会被弃用并最终被删除。

  2. 示例:

redis> SET mykey "Hello"
"OK"
redis> GET mykey
"Hello"
redis> SET anotherkey "will expire in a minute" EX 60
"OK"
  1. Go代码:
 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
package example_commands_test

import (
"context"
"fmt"

"github.com/redis/go-redis/v9"
)

func ExampleClient_Set_and_get() {
ctx := context.Background()

rdb := redis.NewClient(&redis.Options{
    Addr:     "localhost:6379",
    Password: "", // no password docs
    DB:       0,  // use default DB
})



err := rdb.Set(ctx, "bike:1", "Process 134", 0).Err()
if err != nil {
    panic(err)
}

fmt.Println("OK")

value, err := rdb.Get(ctx, "bike:1").Result()
if err != nil {
    panic(err)
}
fmt.Printf("The name of the bike is %s", value)

}

SETEX

  1. 设置key的字符串值和过期时间。如果key不存在,则创建该key。

  2. 语法:等价于SET key value EX seconds

SETEX key seconds value
  1. 示例:
redis> SETEX mykey 10 "Hello"
"OK"
redis> TTL mykey
(integer) 10
redis> GET mykey
"Hello"

SETNX

  1. 仅当key不存在时才设置该key的字符串值。

  2. 语法:

SETNX key value
  1. 示例:
redis> SETNX mykey "Hello"
(integer) 1
redis> SETNX mykey "World"
(integer) 0
redis> GET mykey
"Hello"

SETRANGE

  1. 将字符串值的一部分以偏移量覆盖另一部分。如果key不存在,则创建该key。

  2. 语法:

SETRANGE key offset value
  1. 示例:
redis> SET key1 "Hello World"
"OK"
redis> SETRANGE key1 6 "Redis"
(integer) 11
redis> GET key1
"Hello Redis"
redis> SETRANGE key2 6 "Redis"
(integer) 11
redis> GET key2
"Redis"

STRLEN

  1. 返回字符串值的长度。

  2. 语法:

STRLEN key
  1. 示例:
redis> SET mykey "Hello world"
"OK"
redis> STRLEN mykey
(integer) 11
redis> STRLEN nonexisting
(integer) 0

SUBSTR

  1. 从字符串值返回子字符串。

  2. 语法:

SUBSTR key start end
  1. 示例:
redis> SET mykey "This is a string"
"OK"
redis> GETRANGE mykey 0 3
"This"
redis> GETRANGE mykey -3 -1
"ing"
redis> GETRANGE mykey 0 -1
"This is a string"
redis> GETRANGE mykey 10 100
"string"