Redis 学习笔记三 命令一

本文介绍了Redis的键操作,包括DEL、DUMP、EXISTS、Expire等命令,以及字符串操作,如SET、GET、Incrby等。通过实例展示了如何在本地和远程服务上执行Redis命令,帮助理解Redis中键管理和字符串操作的基本用法。
摘要由CSDN通过智能技术生成

Redis 命令

Redis 命令用于在 redis 服务上 执行操作。

要在 redis 服务上执行命令需要一个 redis 客户端。 Redis 客户端在我们之前下载的 redis 的安装包中。

本地服务行执行命令

语法

Redis 客户端的基本语法为:

$ redis-cli

实例

以下实例讲解了如何启动 redis 客户端:

启动 redis 客户端,打开终端并输入命令 redis-cli。该命令会连接本地的 redis 服务。

$redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING

PONG

在以上实例中我们连接到本地的 redis 服务并执行 PING 命令,该命令用于检测 redis 服务是否启动。

在远程服务上执行命令

如果需要在远程 redis 服务上执行 命令,同样我们使用的也是 redis-cli 命令。

语法

$ redis-cli -h host -p port -a password

实例

以下实例演示了如何连接到主机为 127.0.0.1,端口为6379,密码为 mypass 的redis 服务上。

$redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING

PONG

Redis 键(key)

Redis 键命令用于管理 redis 的键

语法

Redis 键命令的基本语法如下:

redis 127.0.0.1:6379> COMMAND KEY_NAME

实例

redis 127.0.0.1:6379> SET w3ckey redis
OK
redis 127.0.0.1:6379> DEL w3ckey
(integer) 1

在以上实例中 DEL 是一个命令,w3ckey 是一个键。如果键被删除成功,命令执行后输出**(integer)1**,否则输出**(integer)0**

Redis DEL 命令

Redis DEL 命令用于删除已存在的键。不存在的 key 会被忽略。

语法

redis DEL 命令基本语法如下:

redis 127.0.0.1:6379> DEL KEY_NAME

可用版本
>=1.0.0

返回值

被删除 key 的数量。

实例

首先,我们在 redis 中创建一个 key 并设置值。

redis 127.0.0.1:6379> SET w3ckey redis
OK

现在我们删除已创建的 key

redis 127.0.0.1:6379> DEL w3ckey
(integer) 1

Redis Dump 命令

Redis DUMP 命令用于序列化给定 key,并返回被序列化的值。

语法

redis DUMP 命令基本语法如下:

redis 127.0.0.1:6379> DUMP KEY_NAME

可用版本
>=2.6.0

返回值

如果 key 不存在,那么返回 nil。否则,返回序列化之后的值。

实例

首先,我们在 redis 中创建一个 key 并设置值。

redis> SET greeting "hello, dumping world!"
OK

现在使用 DUMP 序列化键值

redis> DUMP greeting
"\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde"

redis> DUMP not-exists-key
(nil)

Redis EXISTS 命令

Redis EXISTS 命令用于检查给定 key 是否存在。

语法

redis EXISTS 命令基本语法如下:

redis 127.0.0.1:6379> EXISTS KEY_NAME

可用版本
>=1.0.0

返回值

若 key 存在返回 1 ,否则返回 0。

实例

redis 127.0.0.1:6379> EXISTS w3cschoolcc-new-key
(integer) 0

现在我们创建一个名为 w3cschoolcc-new-key 的键并赋值,再使用 EXISTS 命令。

redis 127.0.0.1:6379> set w3cschoolcc-new-key newkey
OK
redis 127.0.0.1:6379> EXISTS w3cschoolcc-new-key
(integer) 1
redis 127.0.0.1:6379>

Redis Expire 命令

Redis Expire 命令用于设置 key 的过期时间。 key 过期后将不再可用。

语法

redis Expire 命令基本语法如下:

redis 127.0.0.1:6379> Expire KEY_NAME TIME_IN_SECONDS

可用版本
>=1.0.0

返回值

设置成功返回 1。当 key 不存在或者不能为 key 设置过期时间时((比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过期时间)返回 0。

实例

首先创建一个 key 并赋值:

redis 127.0.0.1:6379> SET w3ckey redis
OK

为 key 设置过期时间:

redis 127.0.0.1:6379> EXPIRE w3ckey 60
(integer) 1

以上实例中我们为键 w3ckey 设置了过期时间为 1 分钟,1分钟后该键会自动删除。

Redis Expireat 命令

Redis Expireat 命令用于 以 UNIX 时间戳(unix timestamp)格式设置 key 的过期时间。key 过期后将不再可用。

语法

redis Expireat 命令基本语法如下:

redis 127.0.0.1:6379> Expireat KEY_NAME TIME_IN_UNIX_TIMESTAMP

可用版本
>=1.0.0

返回值

设置成功返回1。当 key 不存在或者不能为 key 设置过期时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过期时间)返回 0 。

实例

首先创建一个 key 并赋值:

redis 127.0.0.1:6379> SET w3ckey redis
OK

为 key 设置过期时间:

redis 127.0.0.1:6379> EXPIREAT w3ckey 1293840000
(integer) 1
EXISTS w3ckey
(integer) 0

Redis PEXPIREAT 命令

Redis PEXPIREAT 命令用于设置 key 的过期时间,以毫秒计。key 过期后将不再可用。

语法

redis PEXPIREAT 命令基本语法如下:

redis 127.0.0.1:6379> PEXPIREAT KEY_NAME TIME_IN_MILLISECONDS_IN_UNIX_TIMESTAMP

可用版本
>=1.0.0

返回值

设置成功返回 1 。当 key 不存在或者不能为 key 设置过期时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过期时间)返回 0 。

实例

首先创建一个 key 并赋值:

redis 127.0.0.1:6379> SET w3ckey redis
OK

为 key 设置过期时间:

redis 127.0.0.1:6379> PEXPIREAT tutorialspoint 1555555555005
(integer) 1

Redis Keys 命令

Redis Keys 命令用于查找所有符合给定模式 pattern 的 key。。

语法

redis keys 命令基本语法如下:

redis 127.0.0.1:6379> KEYS PATTERN

可用版本
>=1.0.0

返回值

符合给定模式的 key 列表(Array)。

实例

首先创建一些 key ,并赋上对应值:

redis 127.0.0.1:6379> SET w3c1 redis
OK
redis 127.0.0.1:6379> SET w3c2 mysql
OK
redis 127.0.0.1:6379> SET w3c3 mongodb
OK

查找 以 w3c 为开头的 key:

redis 127.0.0.1:6379> KEYS w3c*
1) "w3c3"
2) "w3c1"
3) "w3c2"

获取 redis 中所有的key可用 *。

redis 127.0.0.1:6379> KEYS *
1) "w3c3"
2) "w3c1"
3) "w3c2"

Redis Move 命令

Redis MOVE 命令用于将当前数据库的 key 移动到给定的数据库 db 当中。

语法

redis Move 命令基本语法如下:

redis 127.0.0.1:6379> MOVE KEY_NAME DESTINATION_DATABASE

可用版本
>=1.0.0

返回值

移动成功返回 1,失败则返回 0。

实例

# key 存在于当前数据库

redis> SELECT 0                             # redis默认使用数据库 0,为了清晰起见,这里再显式指定一次。
OK

redis> SET song "secret base - Zone"
OK

redis> MOVE song 1                          # 将 song 移动到数据库 1
(integer) 1

redis> EXISTS song                          # song 已经被移走
(integer) 0

redis> SELECT 1                             # 使用数据库 1
OK

redis:1> EXISTS song                        # 证实 song 被移到了数据库 1 (注意命令提示符变成了"redis:1",表明正在使用数据库 1)
(integer) 1


# 当 key 不存在的时候

redis:1> EXISTS fake_key
(integer) 0

redis:1> MOVE fake_key 0                    # 试图从数据库 1 移动一个不存在的 key 到数据库 0,失败
(integer) 0

redis:1> select 0                           # 使用数据库0
OK

redis> EXISTS fake_key                      # 证实 fake_key 不存在
(integer) 0


# 当源数据库和目标数据库有相同的 key 时

redis> SELECT 0                             # 使用数据库0
OK
redis> SET favorite_fruit "banana"
OK

redis> SELECT 1                             # 使用数据库1
OK
redis:1> SET favorite_fruit "apple"
OK

redis:1> SELECT 0                           # 使用数据库0,并试图将 favorite_fruit 移动到数据库 1
OK

redis> MOVE favorite_fruit 1                # 因为两个数据库有相同的 key,MOVE 失败
(integer) 0

redis> GET favorite_fruit                   # 数据库 0 的 favorite_fruit 没变
"banana"

redis> SELECT 1
OK

redis:1> GET favorite_fruit                 # 数据库 1 的 favorite_fruit 也是
"apple"

Redis PERSIST 命令

Redis PERSIST 命令用于移除给定 key 的过期时间,使得 key 永不过期。

语法

redis PERSIST 命令基本语法如下:

redis 127.0.0.1:6379> PERSIST KEY_NAME

可用版本
>= 2.2.0

返回值

当过期时间移除成功时,返回 1 。如果 key 不存在 或 key 没有设置过期时间,返回 0 。

实例

redis> SET mykey "Hello"
OK

redis> EXPIRE mykey 10  # 为 key 设置生存时间
(integer) 1

redis> TTL mykey
(integer) 10

redis> PERSIST mykey    # 移除 key 的生存时间
(integer) 1

redis> TTL mykey
(integer) -1

Redis Pttl 命令

Redis Pttl 命令以毫秒为单位返回 key 的剩余过期时间。

语法

redis Pttl 命令基本语法如下:

redis 127.0.0.1:6379> PTTL KEY_NAME

可用版本
>= 2.6.0

返回值

当 key 不存在,返回 -2 。当 key 存在但没有设置剩余生存时间时,返回 -1 。否则,以毫秒为单位,返回 key 的剩余生存时间。

注意:在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。

实例

# 不存在的 key

redis> FLUSHDB
OK

redis> PTTL key
(integer) -2


# key 存在,但没有设置剩余生存时间

redis> SET key value
OK

redis> PTTL key
(integer) -1


# 有剩余生存时间的 key

redis> PEXPIRE key 10086
(integer) 1

redis> PTTL key
(integer) 6179

Redis TTL 命令

Redis TTL 命令以秒为单位返回 key 剩余过期时间。

语法

redis TTL 命令基本语法如下:

redis 127.0.0.1:6379> TTL KEY_NAME

可用版本
>= 1.0.0

返回值

当 key 不存在时,返回-2 。 当 key 存在但是没有设置剩余时间时,返回 -1 。否则,以秒为单位,返回 key 的剩余生存时间。

注意:在Redis 2.8 以前,当key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。

实例

# 不存在的 key

redis> FLUSHDB
OK

redis> TTL key
(integer) -2


# key 存在,但没有设置剩余生存时间

redis> SET key value
OK

redis> TTL key
(integer) -1


# 有剩余生存时间的 key

redis> EXPIRE key 10086
(integer) 1

redis> TTL key
(integer) 10084

Redis RANDOMKEY 命令

Redis RANDOMKEY 命令从当前数据库中随机返回一个 key

语法

redis RANDOMKEY 命令基本语法如下:

redis 127.0.0.1:6379> RANDOMKEY 

可用版本
>= 1.0.0

返回值

当数据库不为空时,返回一个 key。但数据库为空时,返回 nil 。

实例

# 数据库不为空

redis> MSET fruit "apple" drink "beer" food "cookies"   # 设置多个 key
OK

redis> RANDOMKEY
"fruit"

redis> RANDOMKEY
"food"

redis> KEYS *    # 查看数据库内所有key,证明 RANDOMKEY 并不删除 key
1) "food"
2) "drink"
3) "fruit"


# 数据库为空

redis> FLUSHDB  # 删除当前数据库所有 key
OK

redis> RANDOMKEY
(nil)

Redis Rename 命令

Redis Rename 命令用于修改 key 的名称。

语法

redis Rename 命令基本语法如下:

redis 127.0.0.1:6379> RENAME OLD_KEY_NAME NEW_KEY_NAME

可用版本
>= 1.0.0

返回值

改名成功是提示 ok,失败时候返回一个错误。

当 OLD_KEY_NAME 和 NEW_KEY_NAME 相同,或者 OLD_KEY_NAME 不存在时,返回一个错误。 当 NEW_KEY_NAME 已经存在时, RENAME 命令将覆盖旧值。

实例

# key 存在且 newkey 不存在

redis> SET message "hello world"
OK

redis> RENAME message greeting
OK

redis> EXISTS message               # message 不复存在
(integer) 0

redis> EXISTS greeting              # greeting 取而代之
(integer) 1


# 当 key 不存在时,返回错误

redis> RENAME fake_key never_exists
(error) ERR no such key


# newkey 已存在时, RENAME 会覆盖旧 newkey

redis> SET pc "lenovo"
OK

redis> SET personal_computer "dell"
OK

redis> RENAME pc personal_computer
OK

redis> GET pc
(nil)

redis:1> GET personal_computer      # 原来的值 dell 被覆盖了
"lenovo"

Redis Renamenx 命令

Reids Renamenx 命令用于在新的key 不存在时修改 key 的名称。

语法

redis Renamenx 命令基本语法如下:

redis 127.0.0.1:6379> RENAMENX OLD_KEY_NAME NEW_KEY_NAME

可用版本
>=1.0.0

返回值

修改成功是,返回 1 。 如果 NEW_KEY_NAME 已经存在,返回 0 。

实例

# newkey 不存在,改名成功

redis> SET player "MPlyaer"
OK

redis> EXISTS best_player
(integer) 0

redis> RENAMENX player best_player
(integer) 1


# newkey存在时,失败

redis> SET animal "bear"
OK

redis> SET favorite_animal "butterfly"
OK

redis> RENAMENX animal favorite_animal
(integer) 0

redis> get animal
"bear"

redis> get favorite_animal
"butterfly"

Redis Type 命令

Redis Type 命令同于返回 key 所存储的是的类型。

语法

Redis Type命令基本语法如下:

redis 127.0.0.1:6379> TYPE KEY_NAME 

可用版本
>=1.0.0

返回值

返回 key 的数据类型,数据类型有:

  • none (key不存在)
  • string(字符串)
  • list(列表)
  • set(集合)
  • zset(有序集合)
  • hash(哈希表)

实例

# 字符串

redis> SET weather "sunny"
OK

redis> TYPE weather
string


# 列表

redis> LPUSH book_list "programming in scala"
(integer) 1

redis> TYPE book_list
list


# 集合

redis> SADD pat "dog"
(integer) 1

redis> TYPE pat
set

Redis 字符串(String)

Redis 字符串数据类型 的相关命令用于管理 redis 字符串值,基本语法如下:

语法

redis 127.0.0.1:6379> COMMAND KEY_NAME

实例

redis 127.0.0.1:6379> SET w3ckey redis 
OK 
redis 127.0.0.1:6379> GET w3ckey 
"redis"

在以上实例汇总我们使用了 set 和 set 命令,键为 w3ckey 。

Redis SET 命令

Redis SET 命令用于管理设置给定的 key 的值。 如果 key 已经存储其他值,SET 就覆写 旧值,且无视类型。

语法

redis SET 命令基本语法如下:

redis 127.0.0.1:6379> SET KEY_NAME VALUE

可用版本
>= 1.0.0

返回值

在 Redis 2.6.12 以前版本,SET命令总是返回 OK

在 Redis 2.6.12 版本开始,SET在设置操作成功完成时,才返回 OK。

实例

首先,我们在 redis 中创建一个 keyu 并设置值。

# 对不存在的键进行设置

redis 127.0.0.1:6379> SET key "value"
OK

redis 127.0.0.1:6379> GET key
"value"


# 对已存在的键进行设置

redis 127.0.0.1:6379> SET key "new-value"
OK

redis 127.0.0.1:6379> GET key
"new-value"

Redis GET 命令

redis GET 命令用于获取指定 key 的值。如果 key 不存在,返回 nil。如果 key 存储的值不是字符串类型,返回一个错误。

语法

redis GET 命令基本语法如下:

redis 127.0.0.1:6379> GET KEY_NAME

可用版本
>= 1.0.0

返回值

返回 key 的值,如果 key 不存在时,返回 nil。如果 key 不是字符串类型,那么返回一个错误。

实例

# 对不存在的 key 或字符串类型 key 进行 GET

redis> GET db
(nil)

redis> SET db redis
OK

redis> GET db
"redis"


# 对不是字符串类型的 key 进行 GET

redis> DEL db
(integer) 1

redis> LPUSH db redis mongodb mysql
(integer) 3

redis> GET db
(error) ERR Operation against a key holding the wrong kind of value

Redis Getrange 命令

Redis Getrange 命令用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定 (包括 start 和 end 在内)。

语法

redis Getrange 命令基本语法如下:

redis 127.0.0.1:6379> GETRANGE KEY_NAME start end

可用版本
>= 2.4.0

返回值

截取得到的子字符串。

实例

首先,设置 mykey 的值并截取字符串。

实例

redis 127.0.0.1:6379> SET mykey "This is my test key"
OK
redis 127.0.0.1:6379> GETRANGE mykey 0 3
"This"
redis 127.0.0.1:6379> GETRANGE mykey 0 -1
"This is my test key"

Rerdis Getset 命令

Redis Getset 命令用于设置指定的 key 的值,并返回key 旧的值

语法

redis Getset 命令基本语法如下:

redis 127.0.0.1:6379> GETSET KEY_NAME VALUE

可用版本
>= 1.0.0

返回值

返回给定 key 旧值。当 eky 没有旧值时,即 key 不存在时,返回 nil。

当key 存在但不是字符串类型时,返回一个错误。

实例

首先,设置 mykey 的值并截取字符串。

redis 127.0.0.1:6379> GETSET mynewkey "This is my test key"
(nil)
redis 127.0.0.1:6379> GETSET mynewkey "This is my new value to test getset"
"This is my test key"

Redis Getbit 命令

Redis Getbit 命令用于对 key 所存储的字符串值,获取指定偏移量上的位(bit)。

语法

redis Getbit 命令基本语法如下:

redis 127.0.0.1:6379> GETBIT KEY_NAME OFFSET

可用版本
>= 2.2.0

返回值

字符串值指定偏移量上的位(bit)

当偏移量 OFFSET 比字符串值的长度大,或者 key 不存在时,返回 0 。

实例

redis> EXISTS bit
(integer) 0

redis> GETBIT bit 10086
(integer) 0


# 对已存在的 offset 进行 GETBIT

redis> SETBIT bit 10086 1
(integer) 0

redis> GETBIT bit 10086
(integer) 1

Redis Mget 命令

Redis Mget 命令返回所有(一个或多个)给定 key 的值。如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。

语法

redis Mget 命令基本语法如下:

redis 127.0.0.1:6379> MGET KEY1 KEY2 .. KEYN

可用版本
>=1.0.0

返回值

一个包含所有给定 key 的值的列表

实例

redis 127.0.0.1:6379> SET key1 "hello"
OK
redis 127.0.0.1:6379> SET key2 "world"
OK
redis 127.0.0.1:6379> MGET key1 key2 someOtherKey
1) "Hello"
2) "World"
3) (nil)

Redis Setbit 命令

Redis Setbit 命令用于对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。

语法

redis Setbit 命令基本语法如下:

redis 127.0.0.1:6379> Setbit KEY_NAME OFFSET

可用版本
>= 2.2.0

返回值

指定偏移量原来存储的位。

实例

redis> SETBIT bit 10086 1
(integer) 0

redis> GETBIT bit 10086
(integer) 1

redis> GETBIT bit 100   # bit 默认被初始化为 0
(integer) 0

Redis Setex 命令

Redis Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。

语法

redis Setex 命令基本语法如下:

redis 127.0.0.1:6379> SETEX KEY_NAME TIMEOUT VALUE

可用版本
>= 2.0.0

返回值

设置成功时返回 OK。

实例

redis 127.0.0.1:6379> SETEX mykey 60 redis
OK
redis 127.0.0.1:6379> TTL mykey
60
redis 127.0.0.1:6379> GET mykey
"redis

Reids Setnx 命令

Redis Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值

语法

redis Setnx 命令个基本语法如下:

redis 127.0.0.1:6379> SETNX KEY_NAME VALUE

可用版本
>= 1.0.0

返回值

设置成功,返回 1 。设置失败, 返回 0 。

实例

redis> EXISTS job                # job 不存在
(integer) 0

redis> SETNX job "programmer"    # job 设置成功
(integer) 1

redis> SETNX job "code-farmer"   # 尝试覆盖 job ,失败
(integer) 0

redis> GET job                   # 没有被覆盖
"programmer"

Redis Setrange 命令

Redis Setrange 命令用指定的字符串覆盖给定 key 多储存字符串值,覆盖的位置从偏移量 offset 开始。

语法

redis Setrange 命令基本语法如下:

redis 127.0.0.1:6379> SETRANGE KEY_NAME OFFSET VALUE

可用版本
>=2.2.0

返回值

被修改后的字符串长度。

实例

redis 127.0.0.1:6379> SET key1 "Hello World"
OK
redis 127.0.0.1:6379> SETRANGE key1 6 "Redis"
(integer) 11
redis 127.0.0.1:6379> GET key1
"Hello Redis"

Redis Strlen 命令

Redis Strlen 命令用于获取用于指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。

语法

redis Strlen 命令基本语法如下:

redis 127.0.0.1:6379> STRLEN KEY_NAME

可用版本
>=2.2.0

返回值 字符串值的长度,当 key 不存在时,返回 0 。

实例

# 获取字符串的长度

redis> SET mykey "Hello world"
OK

redis> STRLEN mykey
(integer) 11


# 不存在的 key 长度为 0

redis> STRLEN nonexisting
(integer) 0

Redis Mset 命令

Redis Mset 命令用于同时设置一个或多个 key -value 对。

语法

redis Mset 命令基本语法如下:

redis 127.0.0.1:6379> MSET key1 value1 key2 value2 .. keyN valueN 

可用版本
>=1.0.1

返回值

总是返回 OK。

实例

redis 127.0.0.1:6379> MSET key1 "Hello" key2 "World"
OK
redis 127.0.0.1:6379> GET key1
"Hello"
redis 127.0.0.1:6379> GET key2
1) "World"

Redis Msetnx 命令

Redis Msetnx命令用于所有给定 key 都不存在时,同时设置一个或多个 key-value 对

语法

redis Msetnx 命令基本语法如下:

redis 127.0.0.1:6379> MSETNX key1 value1 key2 value2 .. keyN valueN 

可用版本
>=1.0.1

返回值

当所有 key 都成功设置,返回 1 。如果所有给定 key 都设置失败(至少有一个key 已经存在),那么返回 0 。

实例

# 对不存在的 key 进行 MSETNX

redis> MSETNX rmdbs "MySQL" nosql "MongoDB" key-value-store "redis"
(integer) 1

redis> MGET rmdbs nosql key-value-store
1) "MySQL"
2) "MongoDB"
3) "redis"


# MSET 的给定 key 当中有已存在的 key

redis> MSETNX rmdbs "Sqlite" language "python"  # rmdbs 键已经存在,操作失败
(integer) 0

redis> EXISTS language                          # 因为 MSET 是原子性操作,language 没有被设置
(integer) 0

redis> GET rmdbs                                # rmdbs 也没有被修改
"MySQL"

Redis Psetex 命令

Redis Psetex 命令以毫秒为单位设置 key 的生存时间。

Redis Psetex 命令基本语法如下:

redis 127.0.0.1:6379> PSETEX key1 EXPIRY_IN_MILLISECONDS value1 

可用版本
>=2.6.0

返回值

设置成功时 返回 OK。

实例

redis 127.0.0.1:6379> PSETEX mykey 1000 "Hello"
OK
redis 127.0.0.1:6379> PTTL mykey
999
redis 127.0.0.1:6379> GET mykey
1) "Hello"

Redis Incr 命令

Redis Incr 命令将 key 中储存的数字值增一。

如果 key 不存在,那么 key 的值会先被初始化为 0,然后再执行 INCR 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,么返回一个错误。

本操作的值限制在 64 为(bit)有符号数字表示之内

语法

redis Incr 命令基本语法如下:

redis 127.0.0.1:6379> INCR KEY_NAME 

可用版本
>=1.0.0

返回值

执行 INCR 命令之后 key 的值

实例

redis> SET page_view 20
OK

redis> INCR page_view
(integer) 21

redis> GET page_view    # 数字值在 Redis 中以字符串的形式保存
"21"

Redis Incrby 命令

Redis Incrby 命令将 key 中储存的数字加上指定的增量值。

如果 key 不存在,那么 key 的值会先被初始化为 0 然后再执行 INCRBY 命令。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位(bit )有符号数据表示之内。

语法

redis Incrby 命令基本语法如下:

redis 127.0.0.1:6379> INCRBY KEY_NAME INCR_AMOUNT

可用版本
>=1.0.0

返回值

加上指定的增量值之后,key 的值

实例

# key 存在且是数字值

redis> SET rank 50
OK

redis> INCRBY rank 20
(integer) 70

redis> GET rank
"70"


# key 不存在时

redis> EXISTS counter
(integer) 0

redis> INCRBY counter 30
(integer) 30

redis> GET counter
"30"


# key 不是数字值时

redis> SET book "long long ago..."
OK

redis> INCRBY book 200
(error) ERR value is not an integer or out of range

Redis Incrbyfloat 命令

Redis Incrbyfloat 命令为key中所储存的值加上指定的浮点数增量值。

如果 key 不存在,那么 INCRBYFLOAT 会先将 key 的值设为 0 ,在执行加法操作。

语法

redis Incrbyfloat 命令基本语法如下:

redis 127.0.0.1:6379> INCRBYFLOAT KEY_NAME INCR_AMOUNT

可用版本
>=2.6.0

返回值

执行命令之后 key 的值

实例

# 值和增量都不是指数符号

redis> SET mykey 10.50
OK

redis> INCRBYFLOAT mykey 0.1
"10.6"


# 值和增量都是指数符号

redis> SET mykey 314e-2
OK

redis> GET mykey                # 用 SET 设置的值可以是指数符号
"314e-2"

redis> INCRBYFLOAT mykey 0      # 但执行 INCRBYFLOAT 之后格式会被改成非指数符号
"3.14"


# 可以对整数类型执行

redis> SET mykey 3
OK

redis> INCRBYFLOAT mykey 1.1
"4.1"


# 后跟的 0 会被移除

redis> SET mykey 3.0
OK

redis> GET mykey                                    # SET 设置的值小数部分可以是 0
"3.0"

redis> INCRBYFLOAT mykey 1.000000000000000000000    # 但 INCRBYFLOAT 会将无用的 0 忽略掉,有需要的话,将浮点变为整数
"4"

redis> GET mykey
"4"

Redis Decr 命令

Redis Decr 命令将 key 中 储存的数字值减一。

如果 key 不存在,那么 key 的值会先被初始化为0 ,然后在执行 DECR 操作

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64位(bit)有符号数字表示之内。

语法

redis Decr 命令基本语法如下:

redis 127.0.0.1:6379> DECR KEY_NAME 

可用版本
>= 1.0.0

返回值

执行命令之后 key 的值

实例

# 对存在的数字值 key 进行 DECR

redis> SET failure_times 10
OK

redis> DECR failure_times
(integer) 9


# 对不存在的 key 值进行 DECR

redis> EXISTS count
(integer) 0

redis> DECR count
(integer) -1


# 对存在但不是数值的 key 进行 DECR

redis> SET company YOUR_CODE_SUCKS.LLC
OK

redis> DECR company
(error) ERR value is not an integer or out of range

Redis Decrby 命令

Redis Decrby 命令将 key 所储存的值减去指定的减量值

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本次操作的值限制在 64 为(bit)有符号数字表示之内。

语法

redis Decrby 命令基本语法如下:

redis 127.0.0.1:6379> DECRBY KEY_NAME DECREMENT_AMOUNT

可用版本
>= 1.0.0

返回值

减去指定减量值之后,key 的值

实例

# 对已存在的 key 进行 DECRBY

redis> SET count 100
OK

redis> DECRBY count 20
(integer) 80


# 对不存在的 key 进行DECRBY

redis> EXISTS pages
(integer) 0

redis> DECRBY pages 10
(integer) -10

Redis Append 命令

Redis Append 命令用于为指定的 key 追加值。

如果key 已经存在并且是一个字符串, Append 命令将 value 追加到 key 原来的值的末尾。

如果 key 不存在,Append 就简单地将给定 key 设为 value,就像执行 set key value 一样。

语法

redis append 命令基本语法如下:

redis 127.0.0.1:6379> APPEND KEY_NAME NEW_VALUE

可用版本
>= 2.0.0

返回值

追加指定值之后,key 中字符串的长度。

实例

# 对不存在的 key 执行 APPEND

redis> EXISTS myphone               # 确保 myphone 不存在
(integer) 0

redis> APPEND myphone "nokia"       # 对不存在的 key 进行 APPEND ,等同于 SET myphone "nokia"
(integer) 5                         # 字符长度


# 对已存在的字符串进行 APPEND

redis> APPEND myphone " - 1110"     # 长度从 5 个字符增加到 12 个字符
(integer) 12

redis> GET myphone
"nokia - 1110"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值