Redis 字符串(String)

发布时间 2023-03-23 21:56:09作者: 红尘过客2022

Redis 字符串(String)

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

语法

> COMMAND KEY_NAME

实例

> set name asa
OK
> get name
asa

字符串命令

SET

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

语法

> SET KEY_NAME VALUE

返回值

SET 在设置操作成功完成时,才返回 OK 。

实例

> set name asa
OK
> get name
asa

Get

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

语法

> GET KEY_NAME

返回值

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

实例

> get task
null
> get name
asa

Getrange

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

语法

> GETRANGE KEY_NAME start end

返回值

截取得到的子字符串。

实例

> set line "this is a good day!"
OK
> getrange line 0 -1
this is a good day!
> getrange line 0 5
this i

Getset

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

语法

> GETSET KEY_NAME VALUE

返回值

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

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

实例

> getset name lili
asa
> getset job collect
null

Getbit

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

语法

> GETBIT KEY_NAME OFFSET

返回值

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

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

实例

> setbit bit 10 1
0
> getbit bit 10
1

Mget

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

语法

> MGET KEY1 KEY2 .. KEYN

返回值

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

实例

mget bit name
 
lili

Setbit

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

语法

> Setbit KEY_NAME OFFSET

返回值

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

实例

> SETBIT bit 10086 1
1
> GETBIT bit 10086
1
> GETBIT bit 100
0

Setex

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

语法

> SETEX KEY_NAME TIMEOUT VALUE

返回值

设置成功时返回 OK 。

实例

> setex test 10 tfs
OK
> get test
tfs
> ttl test
1

Setnx

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

语法

> SETNX KEY_NAME VALUE

返回值

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

实例

> setnx test lili
1
> setnx test lili
0

Setrange

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

语法

> SETRANGE KEY_NAME OFFSET VALUE

返回值

被修改后的字符串长度。

实例

> get line
this is a good day!
> setrange line 6 abc
19
> get line
this iabc good day!

Strlen

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

语法

> STRLEN KEY_NAME

返回值

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

实例

> strlen bit
1261
> strlen test
4

Mset

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

语法

> MSET key1 value1 key2 value2 .. keyN valueN 

返回值

总是返回 OK 。

实例

> mset name1 lili name2 tom
OK

Msetnx

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

语法

> MSETNX key1 value1 key2 value2 .. keyN valueN 

返回值

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

实例

> Msetnx name3 lili name4 tom
0
> get name4
null
> get name3
tom

Msetnx

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

语法

> MSETNX key1 value1 key2 value2 .. keyN valueN 

返回值

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

实例

> Msetnx name3 lili name4 tom
0
> get name4
null
> get name3
tom

Psetex

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

语法

> MSETNX key1 value1 key2 value2 .. keyN valueN 

返回值

设置成功时返回 OK 。

实例

> PSETEX mykey 1000 "Hello"
OK

Incr

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

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

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

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

语法

>INCR KEY_NAME 

返回值

执行 INCR 命令之后 key 的值。

实例

> incr user_count
1
> incr user_count
2
> incr user_count
3

Incrby

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

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

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

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

语法

> INCRBY KEY_NAME INCR_AMOUNT

返回值

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

实例

> incrby user_count 10
13

Incrbyfloat

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

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

语法

> INCRBYFLOAT KEY_NAME INCR_AMOUNT

返回值

执行命令之后 key 的值。

实例

> set stock_price 0.05
OK
> incrbyfloat stock_price 0.05
0.1

Decr

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

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

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

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

语法

> DECR KEY_NAME  

返回值

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

实例

> decr user_count
12

Decrby

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

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

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

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

语法

> DECRBY KEY_NAME DECREMENT_AMOUNT

返回值

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

实例

> decrby user_count 10
2
> decrby user_count 10
-8

Append

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

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

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

语法

> APPEND KEY_NAME NEW_VALUE

返回值

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

实例

> get name
lili
> append name _cat
8
> get name
lili_cat

思考

1、场景某网站统计用户登录次数

  • 网站有1亿个用户,有经常登录的,也有不经常登录的
  • 如何来记录用户的登录信息
  • 如何查询活跃用户:比如:一周内,登录3次的